diff --git a/poetry.lock b/poetry.lock index 772bd34..1168c9d 100644 --- a/poetry.lock +++ b/poetry.lock @@ -602,22 +602,6 @@ files = [ {file = "html_void_elements-0.1.0-py3-none-any.whl", hash = "sha256:784cf39db03cdeb017320d9301009f8f3480f9d7b254d0974272e80e0cb5e0d2"}, ] -[[package]] -name = "humanfriendly" -version = "10.0" -description = "Human friendly output for text interfaces using Python" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" -files = [ - {file = "humanfriendly-10.0-py2.py3-none-any.whl", hash = "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477"}, - {file = "humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc"}, -] - -[package.dependencies] -pyreadline = {version = "*", markers = "sys_platform == \"win32\" and python_version < \"3.8\""} -pyreadline3 = {version = "*", markers = "sys_platform == \"win32\" and python_version >= \"3.8\""} - [[package]] name = "idna" version = "3.4" @@ -1023,29 +1007,6 @@ files = [ ed25519 = ["PyNaCl (>=1.4.0)"] rsa = ["cryptography"] -[[package]] -name = "pyreadline" -version = "2.1" -description = "A python implmementation of GNU readline." -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "pyreadline-2.1.zip", hash = "sha256:4530592fc2e85b25b1a9f79664433da09237c1a270e4d78ea5aa3a2c7229e2d1"}, -] - -[[package]] -name = "pyreadline3" -version = "3.4.1" -description = "A python implementation of GNU readline." -category = "main" -optional = false -python-versions = "*" -files = [ - {file = "pyreadline3-3.4.1-py3-none-any.whl", hash = "sha256:b0efb6516fd4fb07b45949053826a62fa4cb353db5be2bbb4a7aa1fdd1e345fb"}, - {file = "pyreadline3-3.4.1.tar.gz", hash = "sha256:6f3d1f7b8a31ba32b73917cefc1f28cc660562f39aea8646d30bd6eff21f7bae"}, -] - [[package]] name = "pytest" version = "7.2.0" @@ -1809,4 +1770,4 @@ testing = ["flake8 (<5)", "func-timeout", "jaraco.functools", "jaraco.itertools" [metadata] lock-version = "2.0" python-versions = "^3.7" -content-hash = "a151e081694d505f2ff9e037e1b45e52ab63b1b824baf8e2253bd059c43bb739" +content-hash = "55c532d6efbba349d32200a9c181141efd8242f0f9a20223cac14f433e4d059e" diff --git a/pynyaata/bridge/nyaa.py b/pynyaata/bridge/nyaa.py index 99b55af..055dc3e 100644 --- a/pynyaata/bridge/nyaa.py +++ b/pynyaata/bridge/nyaa.py @@ -58,6 +58,11 @@ class Nyaa(Bridge): urls = tds[1].find_all("a") links = tds[2].find_all("a") + nb_pages = html.select("ul.pagination li")[-2] + current = nb_pages.select_one("span") + if current: + current.decompose() + torrents.append( RemoteFile( bridge=self.__class__.__name__, @@ -75,7 +80,7 @@ class Nyaa(Bridge): seeds=tds[5].get_text(), leechs=tds[6].get_text(), downloads=tds[7].get_text(), - nb_pages=html.select("ul.pagination li")[-2].get_text(), + nb_pages=nb_pages.get_text(), ) ) diff --git a/pynyaata/bridge/yggtorrent.py b/pynyaata/bridge/yggtorrent.py index bf5eefd..ba1643a 100644 --- a/pynyaata/bridge/yggtorrent.py +++ b/pynyaata/bridge/yggtorrent.py @@ -3,7 +3,6 @@ from typing import List from urllib import parse from bs4 import BeautifulSoup -from humanfriendly import parse_size from pydantic import HttpUrl, parse_obj_as from pynyaata.cache import cache_data @@ -73,7 +72,7 @@ class YggTorrent(Bridge): comment=tds[3].get_text(), comment_url=f"{tds[1].a['href']}#comm", torrent=f"{self.base_url}/engine/download_torrent?id={tds[0].div.get_text()}", - size=parse_size(tds[5].get_text()), + size=tds[5].get_text(), date=tds[4].div.get_text(), seeds=tds[7].get_text(), leechs=tds[8].get_text(), diff --git a/pynyaata/filters.py b/pynyaata/filters.py index 74c61d8..70142df 100644 --- a/pynyaata/filters.py +++ b/pynyaata/filters.py @@ -28,16 +28,19 @@ def inactive(remotes: List[RemoteFile]) -> List[RemoteFile]: def blacklist(remotes: List[RemoteFile]) -> List[RemoteFile]: - BLACKLIST_WORDS = getenv("BLACKLIST_WORDS", "").split(",") + BLACKLIST_WORDS = getenv("BLACKLIST_WORDS", "") - return list( - filter( - lambda remote: not any( - word in remote.name.lower() for word in BLACKLIST_WORDS - ), - remotes, + if not BLACKLIST_WORDS: + return remotes + else: + return list( + filter( + lambda remote: not any( + word in remote.name.lower() for word in BLACKLIST_WORDS.split(",") + ), + remotes, + ) ) - ) def danger(remotes: List[RemoteFile]) -> List[RemoteFile]: diff --git a/pyproject.toml b/pyproject.toml index d82c903..e1e8a59 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,7 +21,6 @@ flask = "2.2.2" flask-httpauth = "4.7.0" flask-sqlalchemy = "3.0.2" flask-wtf = "1.0.1" -humanfriendly = "10.0" pg8000 = "1.29.4" pydantic = "1.10.4" pymysql = "1.0.2" diff --git a/tests/bridge/test_nyaa.py b/tests/bridge/test_nyaa.py index d447a04..102d277 100644 --- a/tests/bridge/test_nyaa.py +++ b/tests/bridge/test_nyaa.py @@ -1,13 +1,23 @@ +# flake8: noqa: E501 from typing import List from pynyaata.bridge.nyaa import Nyaa -from pynyaata.types import RemoteFile +from pynyaata.types import Color, RemoteFile from pytest import mark import requests from requests_mock import Mocker +def normalize(remotes: List[RemoteFile]): + for i in range(len(remotes)): + remotes[i].seeds = 1 + remotes[i].leechs = 10 + remotes[i].downloads = 100 + + return remotes + + def test_search_url(): assert ( Nyaa().search_url() @@ -37,6 +47,43 @@ async def test_search(requests_mock: Mocker): Nyaa().search_url(), text=requests.get("https://nyaa.si/user/Chaussette33").text ) - remotes: List[RemoteFile] = [] + remotes: List[RemoteFile] = [ + RemoteFile( + bridge="Nyaa", + id=1080919, + category="Anime - Non-English-translated", + color=Color.DEFAULT, + name="Heroic Age intégrale VOSTFR", + link="https://nyaa.si/view/1080919", + comment=4, + comment_url="https://nyaa.si/view/1080919#comments", + magnet="magnet:?xt=urn:btih:f610a3cd6360a36c789d1166e5efc12e3a3bb3ca&dn=Heroic%20Age%20int%C3%A9grale%20VOSTFR&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce", + torrent="https://nyaa.si/download/1080919.torrent", + size=4509715660, + date="2018-10-04 16:26:30", + seeds=1, + leechs=10, + downloads=100, + nb_pages=1, + ), + RemoteFile( + bridge="Nyaa", + id=1080916, + category="Anime - Non-English-translated", + color=Color.DEFAULT, + name="Nisekoi VOSTFR S1 + S2 1080p", + link="https://nyaa.si/view/1080916", + comment=3, + comment_url="https://nyaa.si/view/1080916#comments", + magnet="magnet:?xt=urn:btih:11c4b4d513260bf293975f1d24d8752ac5073fb1&dn=Nisekoi%20VOSTFR%20S1%20%2B%20S2%201080p&tr=http%3A%2F%2Fnyaa.tracker.wf%3A7777%2Fannounce&tr=udp%3A%2F%2Fopen.stealth.si%3A80%2Fannounce&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexodus.desync.com%3A6969%2Fannounce&tr=udp%3A%2F%2Ftracker.torrent.eu.org%3A451%2Fannounce", + torrent="https://nyaa.si/download/1080916.torrent", + size=9878424780, + date="2018-10-04 16:17:56", + seeds=1, + leechs=10, + downloads=100, + nb_pages=1, + ), + ] - assert await Nyaa().search() == remotes + assert normalize(await Nyaa().search()) == remotes