Add submission URLs and fave toggling functions

This commit is contained in:
Thomas Wade 2020-04-21 04:56:15 +09:30
parent 253c3d6110
commit 96702a3511

View File

@ -27,6 +27,10 @@ class Submission:
self._faves: int = None self._faves: int = None
self._comments: List[Comment.Comment] = None self._comments: List[Comment.Comment] = None
self._views: int = 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 @property
def url(self): def url(self):
@ -119,6 +123,35 @@ class Submission:
return self._views 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): def _get_submission(self):
soup = self._api.get_soup('{}/view/{}'.format(FAAPI.FA_BASE_URL, self.id)) 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._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._faves = int(soup.select('.favorites .font-large')[0].text.strip())
self._views = int(soup.select('.views .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 # Parse comments
self._comments = [] self._comments = []
@ -168,5 +205,11 @@ class Submission:
self._comments.append(comment) 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): def __str__(self):
return '{} - {} ({}/view/{})'.format(self.author, self.title, self.url) return '{} - {} ({}/view/{})'.format(self.author, self.title, self.url)