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.
|
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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user