mirror of https://gitlab.com/bashrc2/epicyon
Remove rejected posts from recent posts cache
parent
e1de415809
commit
151fa8cab6
6
inbox.py
6
inbox.py
|
@ -1372,7 +1372,8 @@ def _receiveAnnounce(recentPostsCache: {},
|
||||||
messageJson,
|
messageJson,
|
||||||
__version__, translate,
|
__version__, translate,
|
||||||
YTReplacementDomain,
|
YTReplacementDomain,
|
||||||
allowLocalNetworkAccess)
|
allowLocalNetworkAccess,
|
||||||
|
recentPostsCache)
|
||||||
if not postJsonObject:
|
if not postJsonObject:
|
||||||
notInOnion = True
|
notInOnion = True
|
||||||
if onionDomain:
|
if onionDomain:
|
||||||
|
@ -2450,7 +2451,8 @@ def _inboxAfterInitial(recentPostsCache: {}, maxRecentPosts: int,
|
||||||
if isImageMedia(session, baseDir, httpPrefix,
|
if isImageMedia(session, baseDir, httpPrefix,
|
||||||
nickname, domain, postJsonObject,
|
nickname, domain, postJsonObject,
|
||||||
translate, YTReplacementDomain,
|
translate, YTReplacementDomain,
|
||||||
allowLocalNetworkAccess):
|
allowLocalNetworkAccess,
|
||||||
|
recentPostsCache):
|
||||||
# media index will be updated
|
# media index will be updated
|
||||||
updateIndexList.append('tlmedia')
|
updateIndexList.append('tlmedia')
|
||||||
if isBlogPost(postJsonObject):
|
if isBlogPost(postJsonObject):
|
||||||
|
|
49
posts.py
49
posts.py
|
@ -2953,7 +2953,8 @@ def isImageMedia(session, baseDir: str, httpPrefix: str,
|
||||||
nickname: str, domain: str,
|
nickname: str, domain: str,
|
||||||
postJsonObject: {}, translate: {},
|
postJsonObject: {}, translate: {},
|
||||||
YTReplacementDomain: str,
|
YTReplacementDomain: str,
|
||||||
allowLocalNetworkAccess: bool) -> bool:
|
allowLocalNetworkAccess: bool,
|
||||||
|
recentPostsCache: {}) -> bool:
|
||||||
"""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':
|
||||||
|
@ -2962,7 +2963,8 @@ def isImageMedia(session, baseDir: str, httpPrefix: str,
|
||||||
nickname, domain, postJsonObject,
|
nickname, domain, postJsonObject,
|
||||||
__version__, translate,
|
__version__, translate,
|
||||||
YTReplacementDomain,
|
YTReplacementDomain,
|
||||||
allowLocalNetworkAccess)
|
allowLocalNetworkAccess,
|
||||||
|
recentPostsCache)
|
||||||
if postJsonAnnounce:
|
if postJsonAnnounce:
|
||||||
postJsonObject = postJsonAnnounce
|
postJsonObject = postJsonAnnounce
|
||||||
if postJsonObject['type'] != 'Create':
|
if postJsonObject['type'] != 'Create':
|
||||||
|
@ -3882,10 +3884,10 @@ def populateRepliesJson(baseDir: str, nickname: str, domain: str,
|
||||||
|
|
||||||
def _rejectAnnounce(announceFilename: str,
|
def _rejectAnnounce(announceFilename: str,
|
||||||
baseDir: str, nickname: str, domain: str,
|
baseDir: str, nickname: str, domain: str,
|
||||||
announcePostId: str):
|
announcePostId: str, recentPostsCache: {}):
|
||||||
"""Marks an announce as rejected
|
"""Marks an announce as rejected
|
||||||
"""
|
"""
|
||||||
rejectPostId(baseDir, nickname, domain, announcePostId)
|
rejectPostId(baseDir, nickname, domain, announcePostId, recentPostsCache)
|
||||||
|
|
||||||
# reject the post referenced by the announce activity object
|
# reject the post referenced by the announce activity object
|
||||||
if not os.path.isfile(announceFilename + '.reject'):
|
if not os.path.isfile(announceFilename + '.reject'):
|
||||||
|
@ -3899,7 +3901,8 @@ 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,
|
||||||
|
recentPostsCache: {}) -> {}:
|
||||||
"""Download the post referenced by an announce
|
"""Download the post referenced by an announce
|
||||||
"""
|
"""
|
||||||
if not postJsonObject.get('object'):
|
if not postJsonObject.get('object'):
|
||||||
|
@ -3976,11 +3979,13 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
|
||||||
print('WARN: announce json is not a dict - ' +
|
print('WARN: announce json is not a dict - ' +
|
||||||
postJsonObject['object'])
|
postJsonObject['object'])
|
||||||
_rejectAnnounce(announceFilename,
|
_rejectAnnounce(announceFilename,
|
||||||
baseDir, nickname, domain, postId)
|
baseDir, nickname, domain, postId,
|
||||||
|
recentPostsCache)
|
||||||
return None
|
return None
|
||||||
if not announcedJson.get('id'):
|
if not announcedJson.get('id'):
|
||||||
_rejectAnnounce(announceFilename,
|
_rejectAnnounce(announceFilename,
|
||||||
baseDir, nickname, domain, postId)
|
baseDir, nickname, domain, postId,
|
||||||
|
recentPostsCache)
|
||||||
return None
|
return None
|
||||||
if '/statuses/' not in announcedJson['id']:
|
if '/statuses/' not in announcedJson['id']:
|
||||||
_rejectAnnounce(announceFilename,
|
_rejectAnnounce(announceFilename,
|
||||||
|
@ -3988,41 +3993,49 @@ def downloadAnnounce(session, baseDir: str, httpPrefix: str,
|
||||||
return None
|
return None
|
||||||
if not hasUsersPath(announcedJson['id']):
|
if not hasUsersPath(announcedJson['id']):
|
||||||
_rejectAnnounce(announceFilename,
|
_rejectAnnounce(announceFilename,
|
||||||
baseDir, nickname, domain, postId)
|
baseDir, nickname, domain, postId,
|
||||||
|
recentPostsCache)
|
||||||
return None
|
return None
|
||||||
if not announcedJson.get('type'):
|
if not announcedJson.get('type'):
|
||||||
_rejectAnnounce(announceFilename,
|
_rejectAnnounce(announceFilename,
|
||||||
baseDir, nickname, domain, postId)
|
baseDir, nickname, domain, postId,
|
||||||
|
recentPostsCache)
|
||||||
return None
|
return None
|
||||||
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,
|
||||||
baseDir, nickname, domain, postId)
|
baseDir, nickname, domain, postId,
|
||||||
|
recentPostsCache)
|
||||||
return None
|
return None
|
||||||
if not announcedJson.get('content'):
|
if not announcedJson.get('content'):
|
||||||
_rejectAnnounce(announceFilename,
|
_rejectAnnounce(announceFilename,
|
||||||
baseDir, nickname, domain, postId)
|
baseDir, nickname, domain, postId,
|
||||||
|
recentPostsCache)
|
||||||
return None
|
return None
|
||||||
if not announcedJson.get('published'):
|
if not announcedJson.get('published'):
|
||||||
_rejectAnnounce(announceFilename,
|
_rejectAnnounce(announceFilename,
|
||||||
baseDir, nickname, domain, postId)
|
baseDir, nickname, domain, postId,
|
||||||
|
recentPostsCache)
|
||||||
return None
|
return None
|
||||||
if not validPostDate(announcedJson['published']):
|
if not validPostDate(announcedJson['published']):
|
||||||
_rejectAnnounce(announceFilename,
|
_rejectAnnounce(announceFilename,
|
||||||
baseDir, nickname, domain, postId)
|
baseDir, nickname, domain, postId,
|
||||||
|
recentPostsCache)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# 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,
|
||||||
baseDir, nickname, domain, postId)
|
baseDir, nickname, domain, postId,
|
||||||
|
recentPostsCache)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if isFiltered(baseDir, nickname, domain, contentStr):
|
if isFiltered(baseDir, nickname, domain, contentStr):
|
||||||
_rejectAnnounce(announceFilename,
|
_rejectAnnounce(announceFilename,
|
||||||
baseDir, nickname, domain, postId)
|
baseDir, nickname, domain, postId,
|
||||||
|
recentPostsCache)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# remove any long words
|
# remove any long words
|
||||||
|
@ -4042,7 +4055,8 @@ 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,
|
||||||
baseDir, nickname, domain, postId)
|
baseDir, nickname, domain, postId,
|
||||||
|
recentPostsCache)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
# labelAccusatoryPost(postJsonObject, translate)
|
# labelAccusatoryPost(postJsonObject, translate)
|
||||||
|
@ -4059,7 +4073,8 @@ 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,
|
||||||
baseDir, nickname, domain, postId)
|
baseDir, nickname, domain, postId,
|
||||||
|
recentPostsCache)
|
||||||
return None
|
return None
|
||||||
postJsonObject = announcedJson
|
postJsonObject = announcedJson
|
||||||
replaceYouTube(postJsonObject, YTReplacementDomain)
|
replaceYouTube(postJsonObject, YTReplacementDomain)
|
||||||
|
|
25
utils.py
25
utils.py
|
@ -2037,12 +2037,33 @@ def camelCaseSplit(text: str) -> str:
|
||||||
|
|
||||||
|
|
||||||
def rejectPostId(baseDir: str, nickname: str, domain: str,
|
def rejectPostId(baseDir: str, nickname: str, domain: str,
|
||||||
postId: str) -> None:
|
postId: str, recentPostsCache: {}) -> None:
|
||||||
""" Marks the given post as rejected
|
""" Marks the given post as rejected,
|
||||||
|
for example an announce which is too old
|
||||||
"""
|
"""
|
||||||
postFilename = locatePost(baseDir, nickname, domain, postId)
|
postFilename = locatePost(baseDir, nickname, domain, postId)
|
||||||
if not postFilename:
|
if not postFilename:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if recentPostsCache.get('index'):
|
||||||
|
# if this is a full path then remove the directories
|
||||||
|
indexFilename = postFilename
|
||||||
|
if '/' in postFilename:
|
||||||
|
indexFilename = postFilename.split('/')[-1]
|
||||||
|
|
||||||
|
# filename of the post without any extension or path
|
||||||
|
# This should also correspond to any index entry in
|
||||||
|
# the posts cache
|
||||||
|
postUrl = \
|
||||||
|
indexFilename.replace('\n', '').replace('\r', '')
|
||||||
|
postUrl = postUrl.replace('.json', '').strip()
|
||||||
|
|
||||||
|
if postUrl in recentPostsCache['index']:
|
||||||
|
if recentPostsCache['json'].get(postUrl):
|
||||||
|
del recentPostsCache['json'][postUrl]
|
||||||
|
if recentPostsCache['html'].get(postUrl):
|
||||||
|
del recentPostsCache['html'][postUrl]
|
||||||
|
|
||||||
rejectFile = open(postFilename + '.reject', "w+")
|
rejectFile = open(postFilename + '.reject', "w+")
|
||||||
if rejectFile:
|
if rejectFile:
|
||||||
rejectFile.write('\n')
|
rejectFile.write('\n')
|
||||||
|
|
|
@ -1289,10 +1289,12 @@ def individualPostAsHtml(allowDownloads: bool,
|
||||||
nickname, domain, postJsonObject,
|
nickname, domain, postJsonObject,
|
||||||
projectVersion, translate,
|
projectVersion, translate,
|
||||||
YTReplacementDomain,
|
YTReplacementDomain,
|
||||||
allowLocalNetworkAccess)
|
allowLocalNetworkAccess,
|
||||||
|
recentPostsCache)
|
||||||
if not postJsonAnnounce:
|
if not postJsonAnnounce:
|
||||||
# if the announce could not be downloaded then mark it as rejected
|
# if the announce could not be downloaded then mark it as rejected
|
||||||
rejectPostId(baseDir, nickname, domain, postJsonObject['id'])
|
rejectPostId(baseDir, nickname, domain, postJsonObject['id'],
|
||||||
|
recentPostsCache)
|
||||||
return ''
|
return ''
|
||||||
postJsonObject = postJsonAnnounce
|
postJsonObject = postJsonAnnounce
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue