diff --git a/Submission.py b/Submission.py index 331e0fd..46b1a76 100644 --- a/Submission.py +++ b/Submission.py @@ -11,6 +11,8 @@ class Submission: A FurAffinity submission. """ + _submissioncache = {} + def __init__(self, api, id: int): self._api = api self.id: int = id @@ -144,6 +146,14 @@ class Submission: return self._faved + @staticmethod + def new_or_cached(api, id: int): + if id not in Submission._submissioncache: + Submission._submissioncache[id] = Submission(api, id) + + return Submission._submissioncache[id] + + def fave(self): if self.faved is False: # Usage of the faved property is deliberate to ensure _get_submission() has run self._toggle_fave() diff --git a/User.py b/User.py index 5f0fc23..2dadf4a 100644 --- a/User.py +++ b/User.py @@ -78,7 +78,7 @@ class User: # Get all the submissions on this page for item in soup.select('.gallery figure'): - sub = Submission.Submission(self._api, int(item.get('id')[4:])) # IDs look like 'sid-35908275', so we just skip the 'sid-' + sub = Submission.Submission.new_or_cached(self._api, int(item.get('id')[4:])) # IDs look like 'sid-35908275', so we just skip the 'sid-' submissions.append(sub) return submissions @@ -99,7 +99,7 @@ class User: # Get all the submissions on this page for item in soup.select('.gallery figure'): - sub = Submission.Submission(self._api, int(item.get('id')[4:])) # IDs look like 'sid-35908275', so we just skip the 'sid-' + sub = Submission.Submission.new_or_cached(self._api, int(item.get('id')[4:])) # IDs look like 'sid-35908275', so we just skip the 'sid-' submissions.append(sub) return submissions