diff options
Diffstat (limited to 'src/portal/py')
| -rw-r--r-- | src/portal/py/modules/patreon.py | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/portal/py/modules/patreon.py b/src/portal/py/modules/patreon.py index 8ef9ad1..9f672c1 100644 --- a/src/portal/py/modules/patreon.py +++ b/src/portal/py/modules/patreon.py @@ -75,7 +75,6 @@ class PatreonUser(PatreonBase): # image_file: https://www.patreon.com/posts/emma-again-29391136 # text_only: https://www.patreon.com/posts/hello-update-29391184 # tags - # Query doesn't complete. def create_post(self, data: ParsedJson, hash: str) -> Optional[Post]: #if 'access_rules' in data['relationships']: @@ -99,7 +98,8 @@ class PatreonUser(PatreonBase): kwargs['author'] = self.user kwargs['title'] = data['attributes']['title'] kwargs['likes'] = data['attributes']['like_count'] - kwargs['comments'] = data['attributes']['comment_count'] + if 'comment_count' in data['attributes']: + kwargs['comments'] = data['attributes']['comment_count'] kwargs['text'] = '' if 'content' in data['attributes']: kwargs['text'] = data['attributes']['content'] @@ -107,10 +107,12 @@ class PatreonUser(PatreonBase): media = {} if data['relationships']['media']['data']: for m in data['relationships']['media']['data']: - media[m['id']] = self.attachments[m['id']] + if m['id'] in self.attachments: + media[m['id']] = self.attachments[m['id']] if 'attachments' in data['relationships'] and data['relationships']['attachments']['data']: for a in data['relationships']['attachments']['data']: - media[a['id']] = self.attachments[a['id']] + if a['id'] in self.attachments: + media[a['id']] = self.attachments[a['id']] kwargs['media'] = media post = Post(**kwargs) self.module.add_to_map(unique_id, post) @@ -160,6 +162,7 @@ class PatreonUser(PatreonBase): hash = self.module.add_raw_response(obj) try: + # Cursor should be 'null' at the end of pagination. self.cursor = obj['meta']['pagination']['cursors']['next'] except KeyError: self.cursor = None @@ -170,7 +173,7 @@ class PatreonUser(PatreonBase): elif inc['type'] == 'media': if 'download_url' in inc['attributes']: media_url = inc['attributes']['download_url'] - elif inc['attributes']['image_urls']: + elif inc['attributes'].get('image_urls', None): media_url = inc['attributes']['image_urls']['original'] elif 'default_thumbnail' in inc['attributes']['display']: media_url = inc['attributes']['display']['default_thumbnail']['url'] @@ -201,6 +204,10 @@ class PatreonUser(PatreonBase): if index == num: request_satisfied = True + if not self.cursor: + self.completed = True + break + return request_satisfied class PatreonModule(Module): |