mirror of https://gitlab.com/bashrc2/epicyon
Speaking announces
parent
dd3d4d27fc
commit
0b3897b174
20
inbox.py
20
inbox.py
|
@ -1373,13 +1373,13 @@ def _receiveAnnounce(recentPostsCache: {},
|
|||
if debug:
|
||||
print('DEBUG: Downloading announce post ' + messageJson['actor'] +
|
||||
' -> ' + messageJson['object'])
|
||||
postJsonObject, alreadyExists = downloadAnnounce(session, baseDir,
|
||||
httpPrefix,
|
||||
nickname, domain,
|
||||
messageJson,
|
||||
__version__, translate,
|
||||
YTReplacementDomain,
|
||||
allowLocalNetworkAccess)
|
||||
postJsonObject = downloadAnnounce(session, baseDir,
|
||||
httpPrefix,
|
||||
nickname, domain,
|
||||
messageJson,
|
||||
__version__, translate,
|
||||
YTReplacementDomain,
|
||||
allowLocalNetworkAccess)
|
||||
if not postJsonObject:
|
||||
notInOnion = True
|
||||
if onionDomain:
|
||||
|
@ -1412,10 +1412,14 @@ def _receiveAnnounce(recentPostsCache: {},
|
|||
if '/statuses/' in lookupActor:
|
||||
lookupActor = lookupActor.split('/statuses/')[0]
|
||||
|
||||
if not alreadyExists:
|
||||
if not os.path.isfile(postFilename + '.tts'):
|
||||
_updateSpeaker(baseDir, nickname, domain,
|
||||
postJsonObject, personCache,
|
||||
translate, lookupActor)
|
||||
ttsFile = open(postFilename + '.tts', "w+")
|
||||
if ttsFile:
|
||||
ttsFile.write('\n')
|
||||
ttsFile.close()
|
||||
|
||||
if debug:
|
||||
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
|
||||
"""
|
||||
if postJsonObject['type'] == 'Announce':
|
||||
postJsonAnnounce, alreadyExists = \
|
||||
postJsonAnnounce = \
|
||||
downloadAnnounce(session, baseDir, httpPrefix,
|
||||
nickname, domain, postJsonObject,
|
||||
__version__, translate,
|
||||
|
@ -3879,13 +3879,13 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
|
|||
nickname: str, domain: str,
|
||||
postJsonObject: {}, projectVersion: str,
|
||||
translate: {}, YTReplacementDomain: str,
|
||||
allowLocalNetworkAccess: bool) -> ({}, bool):
|
||||
allowLocalNetworkAccess: bool) -> {}:
|
||||
"""Download the post referenced by an announce
|
||||
"""
|
||||
if not postJsonObject.get('object'):
|
||||
return None, False
|
||||
return None
|
||||
if not isinstance(postJsonObject['object'], str):
|
||||
return None, False
|
||||
return None
|
||||
|
||||
# get the announced post
|
||||
announceCacheDir = baseDir + '/cache/announce/' + nickname
|
||||
|
@ -3896,14 +3896,14 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
|
|||
postJsonObject['object'].replace('/', '#') + '.json'
|
||||
|
||||
if os.path.isfile(announceFilename + '.reject'):
|
||||
return None, False
|
||||
return None
|
||||
|
||||
if os.path.isfile(announceFilename):
|
||||
print('Reading cached Announce content for ' +
|
||||
postJsonObject['object'])
|
||||
postJsonObject = loadJson(announceFilename)
|
||||
if postJsonObject:
|
||||
return postJsonObject, True
|
||||
return postJsonObject
|
||||
else:
|
||||
profileStr = 'https://www.w3.org/ns/activitystreams'
|
||||
asHeader = {
|
||||
|
@ -3920,18 +3920,18 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
|
|||
print('Announce actor does not contain a ' +
|
||||
'valid domain or port number: ' +
|
||||
str(postJsonObject['actor']))
|
||||
return None, False
|
||||
return None
|
||||
if isBlocked(baseDir, nickname, domain, actorNickname, actorDomain):
|
||||
print('Announce download blocked actor: ' +
|
||||
actorNickname + '@' + actorDomain)
|
||||
return None, False
|
||||
return None
|
||||
objectNickname = getNicknameFromActor(postJsonObject['object'])
|
||||
objectDomain, objectPort = getDomainFromActor(postJsonObject['object'])
|
||||
if not objectDomain:
|
||||
print('Announce object does not contain a ' +
|
||||
'valid domain or port number: ' +
|
||||
str(postJsonObject['object']))
|
||||
return None, False
|
||||
return None
|
||||
if isBlocked(baseDir, nickname, domain, objectNickname, objectDomain):
|
||||
if objectNickname and objectDomain:
|
||||
print('Announce download blocked object: ' +
|
||||
|
@ -3939,56 +3939,56 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
|
|||
else:
|
||||
print('Announce download blocked object: ' +
|
||||
str(postJsonObject['object']))
|
||||
return None, False
|
||||
return None
|
||||
print('Downloading Announce content for ' + postJsonObject['object'])
|
||||
announcedJson = \
|
||||
getJson(session, postJsonObject['object'], asHeader,
|
||||
None, projectVersion, httpPrefix, domain)
|
||||
|
||||
if not announcedJson:
|
||||
return None, False
|
||||
return None
|
||||
|
||||
if not isinstance(announcedJson, dict):
|
||||
print('WARN: announce json is not a dict - ' +
|
||||
postJsonObject['object'])
|
||||
_rejectAnnounce(announceFilename)
|
||||
return None, False
|
||||
return None
|
||||
if not announcedJson.get('id'):
|
||||
_rejectAnnounce(announceFilename)
|
||||
return None, False
|
||||
return None
|
||||
if '/statuses/' not in announcedJson['id']:
|
||||
_rejectAnnounce(announceFilename)
|
||||
return None, False
|
||||
return None
|
||||
if not hasUsersPath(announcedJson['id']):
|
||||
_rejectAnnounce(announceFilename)
|
||||
return None, False
|
||||
return None
|
||||
if not announcedJson.get('type'):
|
||||
_rejectAnnounce(announceFilename)
|
||||
return None, False
|
||||
return None
|
||||
if announcedJson['type'] != 'Note' and \
|
||||
announcedJson['type'] != 'Article':
|
||||
# You can only announce Note or Article types
|
||||
_rejectAnnounce(announceFilename)
|
||||
return None, False
|
||||
return None
|
||||
if not announcedJson.get('content'):
|
||||
_rejectAnnounce(announceFilename)
|
||||
return None, False
|
||||
return None
|
||||
if not announcedJson.get('published'):
|
||||
_rejectAnnounce(announceFilename)
|
||||
return None, False
|
||||
return None
|
||||
if not validPostDate(announcedJson['published']):
|
||||
_rejectAnnounce(announceFilename)
|
||||
return None, False
|
||||
return None
|
||||
|
||||
# Check the content of the announce
|
||||
contentStr = announcedJson['content']
|
||||
if dangerousMarkup(contentStr, allowLocalNetworkAccess):
|
||||
_rejectAnnounce(announceFilename)
|
||||
return None, False
|
||||
return None
|
||||
|
||||
if isFiltered(baseDir, nickname, domain, contentStr):
|
||||
_rejectAnnounce(announceFilename)
|
||||
return None, False
|
||||
return None
|
||||
|
||||
# remove any long words
|
||||
contentStr = removeLongWords(contentStr, 40, [])
|
||||
|
@ -4007,7 +4007,7 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
|
|||
if announcedJson['type'] != 'Create':
|
||||
# Create wrap failed
|
||||
_rejectAnnounce(announceFilename)
|
||||
return None, False
|
||||
return None
|
||||
|
||||
# labelAccusatoryPost(postJsonObject, translate)
|
||||
# set the id to the original status
|
||||
|
@ -4023,12 +4023,12 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
|
|||
if isBlocked(baseDir, nickname, domain,
|
||||
attributedNickname, attributedDomain):
|
||||
_rejectAnnounce(announceFilename)
|
||||
return None, False
|
||||
return None
|
||||
postJsonObject = announcedJson
|
||||
replaceYouTube(postJsonObject, YTReplacementDomain)
|
||||
if saveJson(postJsonObject, announceFilename):
|
||||
return postJsonObject, False
|
||||
return None, False
|
||||
return postJsonObject
|
||||
return None
|
||||
|
||||
|
||||
def isMuted(baseDir: str, nickname: str, domain: str, postId: str) -> bool:
|
||||
|
|
2
utils.py
2
utils.py
|
@ -1202,7 +1202,7 @@ def deletePost(baseDir: str, httpPrefix: str,
|
|||
# remove any attachment
|
||||
_removeAttachment(baseDir, httpPrefix, domain, postJsonObject)
|
||||
|
||||
extensions = ('votes', 'arrived', 'muted')
|
||||
extensions = ('votes', 'arrived', 'muted', '.tts')
|
||||
for ext in extensions:
|
||||
extFilename = postFilename + '.' + ext
|
||||
if os.path.isfile(extFilename):
|
||||
|
|
|
@ -1281,7 +1281,7 @@ def individualPostAsHtml(allowDownloads: bool,
|
|||
galleryStr = ''
|
||||
isAnnounced = False
|
||||
if postJsonObject['type'] == 'Announce':
|
||||
postJsonAnnounce, alreadyExists = \
|
||||
postJsonAnnounce = \
|
||||
downloadAnnounce(session, baseDir, httpPrefix,
|
||||
nickname, domain, postJsonObject,
|
||||
projectVersion, translate,
|
||||
|
|
Loading…
Reference in New Issue