diff options
-rw-r--r-- | tpblite/models/utils.py | 10 | ||||
-rw-r--r-- | tpblite/tpblite.py | 19 |
2 files changed, 27 insertions, 2 deletions
diff --git a/tpblite/models/utils.py b/tpblite/models/utils.py index 6c479d4..b9126e9 100644 --- a/tpblite/models/utils.py +++ b/tpblite/models/utils.py @@ -42,6 +42,16 @@ class QueryParser: segments = ("browse", str(category), str(page), str(order), "0") return cls(base_url, segments) + @classmethod + def top(cls: Type[T], base_url: str, category: int, last_48: bool) -> T: + if category == 0: + category = "all" + if last_48: + segments = ("top", "48h" + str(category)) + else: + segments = ("top", str(category)) + return cls(base_url, segments) + def _sendRequest(self): req = Request(self.url, headers=headers()) return urlopen(req).read() diff --git a/tpblite/tpblite.py b/tpblite/tpblite.py index 1ec3991..b4028b6 100644 --- a/tpblite/tpblite.py +++ b/tpblite/tpblite.py @@ -1,11 +1,10 @@ from typing import Optional -from .models.torrents import Torrents, Torrent +from .models.torrents import Torrents from .models.utils import QueryParser class TPB: - def __init__(self, base_url: str = "https://tpb.party"): """ThePirateBay Object @@ -61,3 +60,19 @@ class TPB: q = QueryParser.browse(self.base_url, category, page, order) self._search_url = q.url return Torrents(q.html_source) + + def top(self, category: int = 0, last_48: bool = False): + """Get the top torrents of a category and return a list of Torrents + + Args: + category: Restrict search to specific category, for list of categories see + tpblite.models.constants.CATEGORIES + last_48: wether to fetch the top torrent in the last 48 hours or the overall top + + Return: + Torrent object + """ + q = QueryParser.top(self.base_url, category, last_48) + self._search_url = q.url + return Torrents(q.html_source) + |