From a3a96b054ea17ad11e8ea3005f8b8f60371db2c0 Mon Sep 17 00:00:00 2001 From: WorldTeacher Date: Tue, 6 May 2025 20:50:43 +0200 Subject: [PATCH] add type checking, rework to use nyaapy api wrapper --- src/data/Feeds/nyaasi.py | 72 ++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 29 deletions(-) diff --git a/src/data/Feeds/nyaasi.py b/src/data/Feeds/nyaasi.py index b075c44..649be2b 100644 --- a/src/data/Feeds/nyaasi.py +++ b/src/data/Feeds/nyaasi.py @@ -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"(?