diff options
author | Matt <32886639+mattlyon93@users.noreply.github.com> | 2020-08-29 22:00:56 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-29 22:00:56 +1000 |
commit | 85f34f8a5b15bfbe6510358d76b903baa33f4fc2 (patch) | |
tree | 6dc3e4ad3bd76f3678a5d6b3bedb48e9ae215aab | |
parent | cab856e292d96f8ae3686b0d25a778d1682691ae (diff) | |
parent | 47bcaca5004b08667368cd3d9d4e01f1ef998343 (diff) | |
download | tpb-lite-85f34f8a5b15bfbe6510358d76b903baa33f4fc2.tar.gz tpb-lite-85f34f8a5b15bfbe6510358d76b903baa33f4fc2.tar.bz2 tpb-lite-85f34f8a5b15bfbe6510358d76b903baa33f4fc2.zip |
Merge pull request #4 from loiccoyle/url
Adds a url attribute to the Torrent class
-rw-r--r-- | README.md | 1 | ||||
-rw-r--r-- | tpblite/__init__.py | 2 | ||||
-rw-r--r-- | tpblite/models/constants.py | 23 | ||||
-rw-r--r-- | tpblite/models/torrents.py | 16 | ||||
-rw-r--r-- | tpblite/tpblite.py | 5 |
5 files changed, 31 insertions, 16 deletions
@@ -98,6 +98,7 @@ You can see how many `Torrent` objects your query has returned, by using the `le - `Torrent.filesize` - The filesize in *iB format, eg. 5 GiB (str) - `Torrent.byte_size` - The filesize in bytes of the torrent (int) - `Torrent.magnetlink` - magnetlink of the torrent (str) +- `Torrent.url` - url of the torrent page (str) Example Workflow ========== diff --git a/tpblite/__init__.py b/tpblite/__init__.py index 6a397d1..47116c6 100644 --- a/tpblite/__init__.py +++ b/tpblite/__init__.py @@ -1,2 +1,2 @@ from tpblite.tpblite import TPB -from tpblite.models.constants import ORDERS, CATEGORIES
\ No newline at end of file +from tpblite.models.constants import ORDERS, CATEGORIES diff --git a/tpblite/models/constants.py b/tpblite/models/constants.py index 214b379..be65286 100644 --- a/tpblite/models/constants.py +++ b/tpblite/models/constants.py @@ -1,16 +1,23 @@ - class OPTION: @classmethod def printOptions(cls): - for opt in [x for x in cls.__dict__.keys() if not (x.startswith('__') or x.startswith('printOptions'))]: - if hasattr(getattr(cls,opt),'__dict__'): - for sub_opt in [y for y in getattr(cls,opt).__dict__.keys() if not (y.startswith('__') or y.startswith('printOptions'))]: - print('{}.{}'.format(opt,sub_opt)) + for opt in [ + x + for x in cls.__dict__.keys() + if not (x.startswith("__") or x.startswith("printOptions")) + ]: + if hasattr(getattr(cls, opt), "__dict__"): + for sub_opt in [ + y + for y in getattr(cls, opt).__dict__.keys() + if not (y.startswith("__") or y.startswith("printOptions")) + ]: + print("{}.{}".format(opt, sub_opt)) else: print(opt) -class ORDERS(OPTION): +class ORDERS(OPTION): class NAME(OPTION): DES = 1 ASC = 2 @@ -42,7 +49,7 @@ class ORDERS(OPTION): class CATEGORIES(OPTION): ALL = 0 - + class AUDIO(OPTION): ALL = 100 MUSIC = 101 @@ -102,4 +109,4 @@ class CATEGORIES(OPTION): PICTURES = 603 COVERS = 604 PHYSIBLES = 605 - OTHER = 699
\ No newline at end of file + OTHER = 699 diff --git a/tpblite/models/torrents.py b/tpblite/models/torrents.py index ada282f..2a9bffb 100644 --- a/tpblite/models/torrents.py +++ b/tpblite/models/torrents.py @@ -29,10 +29,14 @@ class Torrent: self.html_row = html_row self.title = self._getTitle() self.seeds, self.leeches = self._getPeers() - self.upload_date, self.filesize, self.byte_size, self.uploader = ( - self._getFileInfo() - ) + ( + self.upload_date, + self.filesize, + self.byte_size, + self.uploader, + ) = self._getFileInfo() self.magnetlink = self._getMagnetLink() + self.url = self._getUrl() def __str__(self): return "{0}, S: {1}, L: {2}, {3}".format( @@ -63,10 +67,14 @@ class Torrent: uploader = unicodedata.normalize("NFKD", t[2].replace("ULed by ", "").strip()) return uptime, size, byte_size, uploader + def _getUrl(self): + tag = self.html_row.find("a", class_="detLink") + return tag.get("href") + class Torrents: """ - Torrent object, takes query response and parses into + Torrent object, takes query response and parses into torrent list or dict. Has methods to select items from torrent list. """ diff --git a/tpblite/tpblite.py b/tpblite/tpblite.py index b4028b6..00c3849 100644 --- a/tpblite/tpblite.py +++ b/tpblite/tpblite.py @@ -61,7 +61,7 @@ class TPB: self._search_url = q.url return Torrents(q.html_source) - def top(self, category: int = 0, last_48: bool = False): + def top(self, category: int = 0, last_48: bool = False) -> Torrents: """Get the top torrents of a category and return a list of Torrents Args: @@ -70,9 +70,8 @@ class TPB: last_48: wether to fetch the top torrent in the last 48 hours or the overall top Return: - Torrent object + Torrents object """ q = QueryParser.top(self.base_url, category, last_48) self._search_url = q.url return Torrents(q.html_source) - |