add type checking, rework to use nyaapy api wrapper

This commit is contained in:
2025-05-06 20:50:43 +02:00
parent 0eb4256111
commit a3a96b054e

View File

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