mirror of https://gitlab.com/bashrc2/epicyon
Tidying of public feed processing
parent
021b7a8494
commit
cd0224e788
113
posts.py
113
posts.py
|
@ -412,6 +412,65 @@ def getPersonBox(signingPrivateKeyPem: str,
|
||||||
avatarUrl, displayName
|
avatarUrl, displayName
|
||||||
|
|
||||||
|
|
||||||
|
def _isPublicFeedPost(item: {}, personPosts: {}, debug: bool) -> bool:
|
||||||
|
"""Is the given post a public feed post?
|
||||||
|
"""
|
||||||
|
if not item.get('id'):
|
||||||
|
if debug:
|
||||||
|
print('No id')
|
||||||
|
return False
|
||||||
|
if not item.get('type'):
|
||||||
|
if debug:
|
||||||
|
print('No type')
|
||||||
|
return False
|
||||||
|
if item['type'] != 'Create' and item['type'] != 'Announce':
|
||||||
|
if debug:
|
||||||
|
print('Not Create type')
|
||||||
|
return False
|
||||||
|
if not isinstance(item, dict):
|
||||||
|
if debug:
|
||||||
|
print('item object is not a dict')
|
||||||
|
pprint(item)
|
||||||
|
return False
|
||||||
|
if item.get('object'):
|
||||||
|
if isinstance(item['object'], dict):
|
||||||
|
if not item['object'].get('published'):
|
||||||
|
if debug:
|
||||||
|
print('No published attribute')
|
||||||
|
return False
|
||||||
|
elif isinstance(item['object'], str):
|
||||||
|
if not item.get('published'):
|
||||||
|
if debug:
|
||||||
|
print('No published attribute')
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
if debug:
|
||||||
|
print('object is not a dict or string')
|
||||||
|
return False
|
||||||
|
if not personPosts.get(item['id']):
|
||||||
|
# check that this is a public post
|
||||||
|
# #Public should appear in the "to" list
|
||||||
|
if isinstance(item['object'], dict):
|
||||||
|
if item['object'].get('to'):
|
||||||
|
isPublic = False
|
||||||
|
for recipient in item['object']['to']:
|
||||||
|
if recipient.endswith('#Public'):
|
||||||
|
isPublic = True
|
||||||
|
break
|
||||||
|
if not isPublic:
|
||||||
|
return False
|
||||||
|
elif isinstance(item['object'], str):
|
||||||
|
if item.get('to'):
|
||||||
|
isPublic = False
|
||||||
|
for recipient in item['to']:
|
||||||
|
if recipient.endswith('#Public'):
|
||||||
|
isPublic = True
|
||||||
|
break
|
||||||
|
if not isPublic:
|
||||||
|
return False
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
def _getPosts(session, outboxUrl: str, maxPosts: int,
|
def _getPosts(session, outboxUrl: str, maxPosts: int,
|
||||||
maxMentions: int,
|
maxMentions: int,
|
||||||
maxEmoji: int, maxAttachments: int,
|
maxEmoji: int, maxAttachments: int,
|
||||||
|
@ -468,58 +527,7 @@ def _getPosts(session, outboxUrl: str, maxPosts: int,
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
for item in userFeed:
|
for item in userFeed:
|
||||||
if not item.get('id'):
|
if not _isPublicFeedPost(item, personPosts, debug):
|
||||||
if debug:
|
|
||||||
print('No id')
|
|
||||||
continue
|
|
||||||
if not item.get('type'):
|
|
||||||
if debug:
|
|
||||||
print('No type')
|
|
||||||
continue
|
|
||||||
if item['type'] != 'Create' and item['type'] != 'Announce':
|
|
||||||
if debug:
|
|
||||||
print('Not Create type')
|
|
||||||
continue
|
|
||||||
if not isinstance(item, dict):
|
|
||||||
if debug:
|
|
||||||
print('item object is not a dict')
|
|
||||||
pprint(item)
|
|
||||||
continue
|
|
||||||
if item.get('object'):
|
|
||||||
if isinstance(item['object'], dict):
|
|
||||||
if not item['object'].get('published'):
|
|
||||||
if debug:
|
|
||||||
print('No published attribute')
|
|
||||||
continue
|
|
||||||
elif isinstance(item['object'], str):
|
|
||||||
if not item.get('published'):
|
|
||||||
if debug:
|
|
||||||
print('No published attribute')
|
|
||||||
continue
|
|
||||||
else:
|
|
||||||
if debug:
|
|
||||||
print('object is not a dict or string')
|
|
||||||
continue
|
|
||||||
if not personPosts.get(item['id']):
|
|
||||||
# check that this is a public post
|
|
||||||
# #Public should appear in the "to" list
|
|
||||||
if isinstance(item['object'], dict):
|
|
||||||
if item['object'].get('to'):
|
|
||||||
isPublic = False
|
|
||||||
for recipient in item['object']['to']:
|
|
||||||
if recipient.endswith('#Public'):
|
|
||||||
isPublic = True
|
|
||||||
break
|
|
||||||
if not isPublic:
|
|
||||||
continue
|
|
||||||
elif isinstance(item['object'], str):
|
|
||||||
if item.get('to'):
|
|
||||||
isPublic = False
|
|
||||||
for recipient in item['to']:
|
|
||||||
if recipient.endswith('#Public'):
|
|
||||||
isPublic = True
|
|
||||||
break
|
|
||||||
if not isPublic:
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
content = getBaseContentFromPost(item, systemLanguage)
|
content = getBaseContentFromPost(item, systemLanguage)
|
||||||
|
@ -595,6 +603,7 @@ def _getPosts(session, outboxUrl: str, maxPosts: int,
|
||||||
if item['object'].get('sensitive'):
|
if item['object'].get('sensitive'):
|
||||||
sensitive = item['object']['sensitive']
|
sensitive = item['object']['sensitive']
|
||||||
|
|
||||||
|
if content:
|
||||||
if simple:
|
if simple:
|
||||||
print(_cleanHtml(content) + '\n')
|
print(_cleanHtml(content) + '\n')
|
||||||
else:
|
else:
|
||||||
|
|
Loading…
Reference in New Issue