From 96702a3511818a21fe47fd6f590622c06c4b8c2c Mon Sep 17 00:00:00 2001 From: Thomas Wade Date: Tue, 21 Apr 2020 04:56:15 +0930 Subject: [PATCH] Add submission URLs and fave toggling functions --- Submission.py | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/Submission.py b/Submission.py index ddcbefa..331e0fd 100644 --- a/Submission.py +++ b/Submission.py @@ -27,6 +27,10 @@ class Submission: self._faves: int = None self._comments: List[Comment.Comment] = None self._views: int = None + self._preview_url: str = None + self._download_url: str = None + self._faved: bool = None + self._fave_url: str = None @property def url(self): @@ -119,6 +123,35 @@ class Submission: return self._views + @property + def preview_url(self): + if not self._preview_url: + self._get_submission() + + return self._preview_url + + @property + def download_url(self): + if not self._download_url: + self._get_submission() + + return self._download_url + + @property + def faved(self): + if self._faved is None: + self._get_submission() + + return self._faved + + def fave(self): + if self.faved is False: # Usage of the faved property is deliberate to ensure _get_submission() has run + self._toggle_fave() + + def unfave(self): + if self.faved is True: # Usage of the faved property is deliberate to ensure _get_submission() has run + self._toggle_fave() + def _get_submission(self): soup = self._api.get_soup('{}/view/{}'.format(FAAPI.FA_BASE_URL, self.id)) @@ -134,6 +167,10 @@ class Submission: self._gender = soup.select('.info div:nth-of-type(3) span')[0].text.strip() self._faves = int(soup.select('.favorites .font-large')[0].text.strip()) self._views = int(soup.select('.views .font-large')[0].text.strip()) + self._preview_url = 'https:' + soup.select('#submissionImg')[0].get('data-preview-src') + self._download_url = 'https:' + soup.select('#submissionImg')[0].get('data-fullview-src') + self._faved = '-' in soup.select('.fav')[0].text + self._fave_url = FAAPI.FA_BASE_URL + soup.select('.fav a')[0].get('href') # Parse comments self._comments = [] @@ -168,5 +205,11 @@ class Submission: self._comments.append(comment) + def _toggle_fave(self): + soup = self._api.get_soup(self._fave_url) + + self._faved = '-' in soup.select('.fav')[0].text + self._fave_url = FAAPI.FA_BASE_URL + soup.select('.fav a')[0].get('href') + def __str__(self): return '{} - {} ({}/view/{})'.format(self.author, self.title, self.url)