add type checking, rework to use nyaapy api wrapper
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
# Nyaa.si will be parsed using feedparser, as they provide a RSS feed.
|
||||
from komsuite_nyaapy import Nyaa
|
||||
import time
|
||||
from komsuite_nyaapy import Nyaa, Torrent
|
||||
from natsort import natsorted
|
||||
import re
|
||||
from komconfig import KomConfig
|
||||
@@ -10,25 +10,34 @@ log.add("logs/nyaasi.log", rotation="1 week")
|
||||
config = KomConfig()
|
||||
|
||||
|
||||
class NyaaFeed(Nyaa):
|
||||
class NyaaFeed:
|
||||
def __init__(self) -> None:
|
||||
super().__init__()
|
||||
pass
|
||||
|
||||
def list_volumes(self, inpt) -> list[int]:
|
||||
volumes = []
|
||||
inpt = inpt[0].replace("v", "")
|
||||
def list_volumes(self, input: str) -> list[int]:
|
||||
volumes: list[int] = []
|
||||
input = input[0].replace("v", "")
|
||||
|
||||
if "-" in inpt:
|
||||
start, end = inpt.split("-")
|
||||
if "-" in input:
|
||||
start, end = input.split("-")
|
||||
for i in range(int(start), int(end) + 1):
|
||||
volumes.append(i)
|
||||
else:
|
||||
volumes.append(int(inpt))
|
||||
volumes.append(int(input))
|
||||
return natsorted(volumes)
|
||||
|
||||
def search(self, title: str):
|
||||
def search(self, title: str) -> list[Torrent]:
|
||||
def __search(title: str):
|
||||
return Nyaa().search(title, 3, 1)
|
||||
|
||||
regex = r"\b(v\d{2,3}-\d{2,3}|v\d{2,3}-v\d{2,3}|\d{2}|\d{2}-\d{2}|v\d{2,3})\b"
|
||||
dataset = super().search(title, 3, 1)
|
||||
dataset = None
|
||||
while dataset is None:
|
||||
try:
|
||||
dataset = __search(title)
|
||||
except:
|
||||
time.sleep(5)
|
||||
|
||||
datalist = []
|
||||
if dataset is None:
|
||||
return datalist
|
||||
@@ -39,37 +48,42 @@ class NyaaFeed(Nyaa):
|
||||
"Skipping {}, Reason: Chapters disabled".format(entry.name)
|
||||
)
|
||||
continue
|
||||
data = {}
|
||||
data["title"] = entry.name
|
||||
if any(
|
||||
x in data["title"].lower() for x in config.komgrabber.skip_parameters
|
||||
):
|
||||
log.info("Skipping {}".format(data["title"]))
|
||||
name = entry.name
|
||||
skip_parameters = config.komgrabber.skip_parameters
|
||||
skip_parameters.extend(config.komgrabber.manga.skip_parameters)
|
||||
if any(x in name.lower() for x in skip_parameters):
|
||||
log.info("Skipping {}".format(name))
|
||||
continue
|
||||
data["volumes"] = re.findall(regex, data["title"])
|
||||
volumes = re.findall(regex, name)
|
||||
try:
|
||||
match = re.match(
|
||||
r"^(.*?)\s(vol\.\s\d{2})|(v\d{2,3})", data["title"].lower()
|
||||
)
|
||||
match = re.match(r"^(.*?)\s(vol\.\s\d{2})|(v\d{2,3})", name.lower())
|
||||
if match:
|
||||
data["title"] = match.group(1)
|
||||
name = match.group(1)
|
||||
except AttributeError:
|
||||
# chapter check
|
||||
try:
|
||||
match = re.findall(r"(?<!\d)\d{2,3}(?!\d)", data["title"])
|
||||
match = re.findall(r"(?<!\d)\d{2,3}(?!\d)", name)
|
||||
print("Matched chapter: {}".format(match))
|
||||
print("Found Chapters only, skipping")
|
||||
continue
|
||||
except AttributeError:
|
||||
pass
|
||||
data["volumes"] = (
|
||||
self.list_volumes(data["volumes"]) if data["volumes"] else [0]
|
||||
volumes = self.list_volumes(volumes) if volumes else [0]
|
||||
download_url = entry.download_url
|
||||
seeders = entry.seeders
|
||||
size = entry.size
|
||||
data = Torrent(
|
||||
name=name,
|
||||
download_url=download_url,
|
||||
seeders=seeders,
|
||||
size=size,
|
||||
volumes=volumes,
|
||||
)
|
||||
data["link"] = entry.download_url
|
||||
data["seeders"] = entry.seeders
|
||||
data["filesize"] = entry.size
|
||||
|
||||
# print(data)
|
||||
datalist.append(data)
|
||||
log.debug("Found: {}, volumes: {}".format(data.name, data.volumes))
|
||||
log.success("Found {} entries".format(len(datalist)))
|
||||
|
||||
return datalist
|
||||
|
||||
|
||||
Reference in New Issue
Block a user