From 6b9069a35f5820450824366456ab55e2fb190cf6 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Sat, 19 Oct 2019 10:13:08 +0100 Subject: [PATCH] Create posts cache --- webinterface.py | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/webinterface.py b/webinterface.py index e8598cb4b..cc417e20a 100644 --- a/webinterface.py +++ b/webinterface.py @@ -1728,6 +1728,24 @@ def individualPostAsHtml(iconsDir: str,translate: {}, \ showPublicOnly=False) -> str: """ Shows a single post as html """ + # if a cached version of the post already exists then fetch it + htmlPostCacheDir=baseDir+'/accounts/'+nickname+'@'+domain+'/postcache' + cachedPostFilename=htmlPostCacheDir+'/'+postJsonObject['id'].replace('/','#')+'.html' + if os.path.isfile(cachedPostFilename): + postStr='' + tries=0 + while tries<3: + try: + with open(cachedPostFilename, 'r') as file: + postStr = file.read() + break + except Exception as e: + print(e) + # no sleep + tries+=1 + if postStr: + return postStr + # If this is the inbox timeline then don't show the repeat icon on any DMs showRepeatIcon=showRepeats showDMicon=False @@ -2085,15 +2103,27 @@ def individualPostAsHtml(iconsDir: str,translate: {}, \ contentStr='
'+contentStr+'
' + postStr='' if boxName!='tlmedia': - return \ + postStr= \ '
\n'+ \ avatarImageInPost+ \ '

'+titleStr+replyAvatarImageInPost+'

'+ \ contentStr+footerStr+ \ '
\n' else: - return galleryStr + postStr=galleryStr + + # save to posts cache on file + if not os.path.isdir(htmlPostCacheDir): + os.mkdir(htmlPostCacheDir) + try: + with open(cachedPostFilename, 'w') as fp: + fp.write(postStr) + except Exception as e: + print('ERROR: saving post to cache '+str(e)) + + return postStr def isQuestion(postObjectJson: {}) -> bool: """ is the given post a question?