mirror of https://gitlab.com/bashrc2/epicyon
Only speak announces once
parent
a4f2bfdc06
commit
2787ceb724
19
inbox.py
19
inbox.py
|
@ -1370,11 +1370,13 @@ def _receiveAnnounce(recentPostsCache: {},
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: Downloading announce post ' + messageJson['actor'] +
|
print('DEBUG: Downloading announce post ' + messageJson['actor'] +
|
||||||
' -> ' + messageJson['object'])
|
' -> ' + messageJson['object'])
|
||||||
postJsonObject = downloadAnnounce(session, baseDir, httpPrefix,
|
postJsonObject, alreadyExists = downloadAnnounce(session, baseDir,
|
||||||
nickname, domain, messageJson,
|
httpPrefix,
|
||||||
__version__, translate,
|
nickname, domain,
|
||||||
YTReplacementDomain,
|
messageJson,
|
||||||
allowLocalNetworkAccess)
|
__version__, translate,
|
||||||
|
YTReplacementDomain,
|
||||||
|
allowLocalNetworkAccess)
|
||||||
if not postJsonObject:
|
if not postJsonObject:
|
||||||
notInOnion = True
|
notInOnion = True
|
||||||
if onionDomain:
|
if onionDomain:
|
||||||
|
@ -1407,9 +1409,10 @@ def _receiveAnnounce(recentPostsCache: {},
|
||||||
if '/statuses/' in lookupActor:
|
if '/statuses/' in lookupActor:
|
||||||
lookupActor = lookupActor.split('/statuses/')[0]
|
lookupActor = lookupActor.split('/statuses/')[0]
|
||||||
|
|
||||||
_updateSpeaker(baseDir, nickname, domain,
|
if not alreadyExists:
|
||||||
postJsonObject, personCache,
|
_updateSpeaker(baseDir, nickname, domain,
|
||||||
translate)
|
postJsonObject, personCache,
|
||||||
|
translate)
|
||||||
|
|
||||||
if debug:
|
if debug:
|
||||||
print('DEBUG: Obtaining actor for announce post ' +
|
print('DEBUG: Obtaining actor for announce post ' +
|
||||||
|
|
52
posts.py
52
posts.py
|
@ -2956,7 +2956,7 @@ def isImageMedia(session, baseDir: str, httpPrefix: str,
|
||||||
"""Returns true if the given post has attached image media
|
"""Returns true if the given post has attached image media
|
||||||
"""
|
"""
|
||||||
if postJsonObject['type'] == 'Announce':
|
if postJsonObject['type'] == 'Announce':
|
||||||
postJsonAnnounce = \
|
postJsonAnnounce, alreadyExists = \
|
||||||
downloadAnnounce(session, baseDir, httpPrefix,
|
downloadAnnounce(session, baseDir, httpPrefix,
|
||||||
nickname, domain, postJsonObject,
|
nickname, domain, postJsonObject,
|
||||||
__version__, translate,
|
__version__, translate,
|
||||||
|
@ -3879,13 +3879,13 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
|
||||||
nickname: str, domain: str,
|
nickname: str, domain: str,
|
||||||
postJsonObject: {}, projectVersion: str,
|
postJsonObject: {}, projectVersion: str,
|
||||||
translate: {}, YTReplacementDomain: str,
|
translate: {}, YTReplacementDomain: str,
|
||||||
allowLocalNetworkAccess: bool) -> {}:
|
allowLocalNetworkAccess: bool) -> ({}, bool):
|
||||||
"""Download the post referenced by an announce
|
"""Download the post referenced by an announce
|
||||||
"""
|
"""
|
||||||
if not postJsonObject.get('object'):
|
if not postJsonObject.get('object'):
|
||||||
return None
|
return None, False
|
||||||
if not isinstance(postJsonObject['object'], str):
|
if not isinstance(postJsonObject['object'], str):
|
||||||
return None
|
return None, False
|
||||||
|
|
||||||
# get the announced post
|
# get the announced post
|
||||||
announceCacheDir = baseDir + '/cache/announce/' + nickname
|
announceCacheDir = baseDir + '/cache/announce/' + nickname
|
||||||
|
@ -3896,14 +3896,14 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
|
||||||
postJsonObject['object'].replace('/', '#') + '.json'
|
postJsonObject['object'].replace('/', '#') + '.json'
|
||||||
|
|
||||||
if os.path.isfile(announceFilename + '.reject'):
|
if os.path.isfile(announceFilename + '.reject'):
|
||||||
return None
|
return None, False
|
||||||
|
|
||||||
if os.path.isfile(announceFilename):
|
if os.path.isfile(announceFilename):
|
||||||
print('Reading cached Announce content for ' +
|
print('Reading cached Announce content for ' +
|
||||||
postJsonObject['object'])
|
postJsonObject['object'])
|
||||||
postJsonObject = loadJson(announceFilename)
|
postJsonObject = loadJson(announceFilename)
|
||||||
if postJsonObject:
|
if postJsonObject:
|
||||||
return postJsonObject
|
return postJsonObject, True
|
||||||
else:
|
else:
|
||||||
profileStr = 'https://www.w3.org/ns/activitystreams'
|
profileStr = 'https://www.w3.org/ns/activitystreams'
|
||||||
asHeader = {
|
asHeader = {
|
||||||
|
@ -3920,18 +3920,18 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
|
||||||
print('Announce actor does not contain a ' +
|
print('Announce actor does not contain a ' +
|
||||||
'valid domain or port number: ' +
|
'valid domain or port number: ' +
|
||||||
str(postJsonObject['actor']))
|
str(postJsonObject['actor']))
|
||||||
return None
|
return None, False
|
||||||
if isBlocked(baseDir, nickname, domain, actorNickname, actorDomain):
|
if isBlocked(baseDir, nickname, domain, actorNickname, actorDomain):
|
||||||
print('Announce download blocked actor: ' +
|
print('Announce download blocked actor: ' +
|
||||||
actorNickname + '@' + actorDomain)
|
actorNickname + '@' + actorDomain)
|
||||||
return None
|
return None, False
|
||||||
objectNickname = getNicknameFromActor(postJsonObject['object'])
|
objectNickname = getNicknameFromActor(postJsonObject['object'])
|
||||||
objectDomain, objectPort = getDomainFromActor(postJsonObject['object'])
|
objectDomain, objectPort = getDomainFromActor(postJsonObject['object'])
|
||||||
if not objectDomain:
|
if not objectDomain:
|
||||||
print('Announce object does not contain a ' +
|
print('Announce object does not contain a ' +
|
||||||
'valid domain or port number: ' +
|
'valid domain or port number: ' +
|
||||||
str(postJsonObject['object']))
|
str(postJsonObject['object']))
|
||||||
return None
|
return None, False
|
||||||
if isBlocked(baseDir, nickname, domain, objectNickname, objectDomain):
|
if isBlocked(baseDir, nickname, domain, objectNickname, objectDomain):
|
||||||
if objectNickname and objectDomain:
|
if objectNickname and objectDomain:
|
||||||
print('Announce download blocked object: ' +
|
print('Announce download blocked object: ' +
|
||||||
|
@ -3939,56 +3939,56 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
|
||||||
else:
|
else:
|
||||||
print('Announce download blocked object: ' +
|
print('Announce download blocked object: ' +
|
||||||
str(postJsonObject['object']))
|
str(postJsonObject['object']))
|
||||||
return None
|
return None, False
|
||||||
print('Downloading Announce content for ' + postJsonObject['object'])
|
print('Downloading Announce content for ' + postJsonObject['object'])
|
||||||
announcedJson = \
|
announcedJson = \
|
||||||
getJson(session, postJsonObject['object'], asHeader,
|
getJson(session, postJsonObject['object'], asHeader,
|
||||||
None, projectVersion, httpPrefix, domain)
|
None, projectVersion, httpPrefix, domain)
|
||||||
|
|
||||||
if not announcedJson:
|
if not announcedJson:
|
||||||
return None
|
return None, False
|
||||||
|
|
||||||
if not isinstance(announcedJson, dict):
|
if not isinstance(announcedJson, dict):
|
||||||
print('WARN: announce json is not a dict - ' +
|
print('WARN: announce json is not a dict - ' +
|
||||||
postJsonObject['object'])
|
postJsonObject['object'])
|
||||||
_rejectAnnounce(announceFilename)
|
_rejectAnnounce(announceFilename)
|
||||||
return None
|
return None, False
|
||||||
if not announcedJson.get('id'):
|
if not announcedJson.get('id'):
|
||||||
_rejectAnnounce(announceFilename)
|
_rejectAnnounce(announceFilename)
|
||||||
return None
|
return None, False
|
||||||
if '/statuses/' not in announcedJson['id']:
|
if '/statuses/' not in announcedJson['id']:
|
||||||
_rejectAnnounce(announceFilename)
|
_rejectAnnounce(announceFilename)
|
||||||
return None
|
return None, False
|
||||||
if not hasUsersPath(announcedJson['id']):
|
if not hasUsersPath(announcedJson['id']):
|
||||||
_rejectAnnounce(announceFilename)
|
_rejectAnnounce(announceFilename)
|
||||||
return None
|
return None, False
|
||||||
if not announcedJson.get('type'):
|
if not announcedJson.get('type'):
|
||||||
_rejectAnnounce(announceFilename)
|
_rejectAnnounce(announceFilename)
|
||||||
return None
|
return None, False
|
||||||
if announcedJson['type'] != 'Note' and \
|
if announcedJson['type'] != 'Note' and \
|
||||||
announcedJson['type'] != 'Article':
|
announcedJson['type'] != 'Article':
|
||||||
# You can only announce Note or Article types
|
# You can only announce Note or Article types
|
||||||
_rejectAnnounce(announceFilename)
|
_rejectAnnounce(announceFilename)
|
||||||
return None
|
return None, False
|
||||||
if not announcedJson.get('content'):
|
if not announcedJson.get('content'):
|
||||||
_rejectAnnounce(announceFilename)
|
_rejectAnnounce(announceFilename)
|
||||||
return None
|
return None, False
|
||||||
if not announcedJson.get('published'):
|
if not announcedJson.get('published'):
|
||||||
_rejectAnnounce(announceFilename)
|
_rejectAnnounce(announceFilename)
|
||||||
return None
|
return None, False
|
||||||
if not validPostDate(announcedJson['published']):
|
if not validPostDate(announcedJson['published']):
|
||||||
_rejectAnnounce(announceFilename)
|
_rejectAnnounce(announceFilename)
|
||||||
return None
|
return None, False
|
||||||
|
|
||||||
# Check the content of the announce
|
# Check the content of the announce
|
||||||
contentStr = announcedJson['content']
|
contentStr = announcedJson['content']
|
||||||
if dangerousMarkup(contentStr, allowLocalNetworkAccess):
|
if dangerousMarkup(contentStr, allowLocalNetworkAccess):
|
||||||
_rejectAnnounce(announceFilename)
|
_rejectAnnounce(announceFilename)
|
||||||
return None
|
return None, False
|
||||||
|
|
||||||
if isFiltered(baseDir, nickname, domain, contentStr):
|
if isFiltered(baseDir, nickname, domain, contentStr):
|
||||||
_rejectAnnounce(announceFilename)
|
_rejectAnnounce(announceFilename)
|
||||||
return None
|
return None, False
|
||||||
|
|
||||||
# remove any long words
|
# remove any long words
|
||||||
contentStr = removeLongWords(contentStr, 40, [])
|
contentStr = removeLongWords(contentStr, 40, [])
|
||||||
|
@ -4007,7 +4007,7 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
|
||||||
if announcedJson['type'] != 'Create':
|
if announcedJson['type'] != 'Create':
|
||||||
# Create wrap failed
|
# Create wrap failed
|
||||||
_rejectAnnounce(announceFilename)
|
_rejectAnnounce(announceFilename)
|
||||||
return None
|
return None, False
|
||||||
|
|
||||||
# labelAccusatoryPost(postJsonObject, translate)
|
# labelAccusatoryPost(postJsonObject, translate)
|
||||||
# set the id to the original status
|
# set the id to the original status
|
||||||
|
@ -4023,12 +4023,12 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
|
||||||
if isBlocked(baseDir, nickname, domain,
|
if isBlocked(baseDir, nickname, domain,
|
||||||
attributedNickname, attributedDomain):
|
attributedNickname, attributedDomain):
|
||||||
_rejectAnnounce(announceFilename)
|
_rejectAnnounce(announceFilename)
|
||||||
return None
|
return None, False
|
||||||
postJsonObject = announcedJson
|
postJsonObject = announcedJson
|
||||||
replaceYouTube(postJsonObject, YTReplacementDomain)
|
replaceYouTube(postJsonObject, YTReplacementDomain)
|
||||||
if saveJson(postJsonObject, announceFilename):
|
if saveJson(postJsonObject, announceFilename):
|
||||||
return postJsonObject
|
return postJsonObject, False
|
||||||
return None
|
return None, False
|
||||||
|
|
||||||
|
|
||||||
def isMuted(baseDir: str, nickname: str, domain: str, postId: str) -> bool:
|
def isMuted(baseDir: str, nickname: str, domain: str, postId: str) -> bool:
|
||||||
|
|
|
@ -1281,7 +1281,7 @@ def individualPostAsHtml(allowDownloads: bool,
|
||||||
galleryStr = ''
|
galleryStr = ''
|
||||||
isAnnounced = False
|
isAnnounced = False
|
||||||
if postJsonObject['type'] == 'Announce':
|
if postJsonObject['type'] == 'Announce':
|
||||||
postJsonAnnounce = \
|
postJsonAnnounce, alreadyExists = \
|
||||||
downloadAnnounce(session, baseDir, httpPrefix,
|
downloadAnnounce(session, baseDir, httpPrefix,
|
||||||
nickname, domain, postJsonObject,
|
nickname, domain, postJsonObject,
|
||||||
projectVersion, translate,
|
projectVersion, translate,
|
||||||
|
|
Loading…
Reference in New Issue