forked from indymedia/epicyon
Move creation of attachments to its own function
parent
70277ab4d9
commit
87954ec16f
351
webinterface.py
351
webinterface.py
|
@ -2565,6 +2565,187 @@ def postIsMuted(baseDir: str,nickname: str,domain: str, \
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def getPostAttachmentsAsHtml(postJsonObject: {},boxName: str,translate: {}, \
|
||||||
|
isMuted: bool, \
|
||||||
|
replyStr: str,announceStr: str,likeStr: str, \
|
||||||
|
bookmarkStr: str,deleteStr: str,muteStr: str) -> (str,str):
|
||||||
|
"""Returns a string representing any attachments
|
||||||
|
"""
|
||||||
|
attachmentStr=''
|
||||||
|
galleryStr=''
|
||||||
|
if not postJsonObject['object'].get('attachment'):
|
||||||
|
return attachmentStr,galleryStr
|
||||||
|
|
||||||
|
if not isinstance(postJsonObject['object']['attachment'], list):
|
||||||
|
return attachmentStr,galleryStr
|
||||||
|
|
||||||
|
attachmentCtr=0
|
||||||
|
attachmentStr+='<div class="media">'
|
||||||
|
for attach in postJsonObject['object']['attachment']:
|
||||||
|
if not (attach.get('mediaType') and attach.get('url')):
|
||||||
|
continue
|
||||||
|
|
||||||
|
mediaType=attach['mediaType']
|
||||||
|
imageDescription=''
|
||||||
|
if attach.get('name'):
|
||||||
|
imageDescription=attach['name'].replace('"',"'")
|
||||||
|
if mediaType=='image/png' or \
|
||||||
|
mediaType=='image/jpeg' or \
|
||||||
|
mediaType=='image/webp' or \
|
||||||
|
mediaType=='image/gif':
|
||||||
|
if attach['url'].endswith('.png') or \
|
||||||
|
attach['url'].endswith('.jpg') or \
|
||||||
|
attach['url'].endswith('.jpeg') or \
|
||||||
|
attach['url'].endswith('.webp') or \
|
||||||
|
attach['url'].endswith('.gif'):
|
||||||
|
if attachmentCtr>0:
|
||||||
|
attachmentStr+='<br>'
|
||||||
|
if boxName=='tlmedia':
|
||||||
|
galleryStr+='<div class="gallery">\n'
|
||||||
|
if not isMuted:
|
||||||
|
galleryStr+=' <a href="'+attach['url']+'">\n'
|
||||||
|
galleryStr+= \
|
||||||
|
' <img loading="lazy" src="'+ \
|
||||||
|
attach['url']+'" alt="" title="">\n'
|
||||||
|
galleryStr+=' </a>\n'
|
||||||
|
if postJsonObject['object'].get('url'):
|
||||||
|
imagePostUrl=postJsonObject['object']['url']
|
||||||
|
else:
|
||||||
|
imagePostUrl=postJsonObject['object']['id']
|
||||||
|
if imageDescription and not isMuted:
|
||||||
|
galleryStr+= \
|
||||||
|
' <a href="'+imagePostUrl+ \
|
||||||
|
'" class="gallerytext"><div class="gallerytext">'+ \
|
||||||
|
imageDescription+'</div></a>\n'
|
||||||
|
else:
|
||||||
|
galleryStr+='<label class="transparent">---</label><br>'
|
||||||
|
galleryStr+=' <div class="mediaicons">\n'
|
||||||
|
galleryStr+= \
|
||||||
|
' '+replyStr+announceStr+likeStr+ \
|
||||||
|
bookmarkStr+deleteStr+muteStr+'\n'
|
||||||
|
galleryStr+=' </div>\n'
|
||||||
|
galleryStr+=' <div class="mediaavatar">\n'
|
||||||
|
galleryStr+=' '+avatarLink+'\n'
|
||||||
|
galleryStr+=' </div>\n'
|
||||||
|
galleryStr+='</div>\n'
|
||||||
|
|
||||||
|
attachmentStr+='<a href="'+attach['url']+'">'
|
||||||
|
attachmentStr+= \
|
||||||
|
'<img loading="lazy" src="'+attach['url']+ \
|
||||||
|
'" alt="'+imageDescription+'" title="'+ \
|
||||||
|
imageDescription+'" class="attachment"></a>\n'
|
||||||
|
attachmentCtr+=1
|
||||||
|
elif mediaType=='video/mp4' or \
|
||||||
|
mediaType=='video/webm' or \
|
||||||
|
mediaType=='video/ogv':
|
||||||
|
extension='.mp4'
|
||||||
|
if attach['url'].endswith('.webm'):
|
||||||
|
extension='.webm'
|
||||||
|
elif attach['url'].endswith('.ogv'):
|
||||||
|
extension='.ogv'
|
||||||
|
if attach['url'].endswith(extension):
|
||||||
|
if attachmentCtr>0:
|
||||||
|
attachmentStr+='<br>'
|
||||||
|
if boxName=='tlmedia':
|
||||||
|
galleryStr+='<div class="gallery">\n'
|
||||||
|
if not isMuted:
|
||||||
|
galleryStr+=' <a href="'+attach['url']+'">\n'
|
||||||
|
galleryStr+=' <video width="600" height="400" controls>\n'
|
||||||
|
galleryStr+= \
|
||||||
|
' <source src="'+attach['url']+ \
|
||||||
|
'" alt="'+imageDescription+ \
|
||||||
|
'" title="'+imageDescription+ \
|
||||||
|
'" class="attachment" type="video/'+ \
|
||||||
|
extension.replace('.','')+'">'
|
||||||
|
galleryStr+= \
|
||||||
|
translate['Your browser does not support the video tag.']
|
||||||
|
galleryStr+=' </video>\n'
|
||||||
|
galleryStr+=' </a>\n'
|
||||||
|
if postJsonObject['object'].get('url'):
|
||||||
|
videoPostUrl=postJsonObject['object']['url']
|
||||||
|
else:
|
||||||
|
videoPostUrl=postJsonObject['object']['id']
|
||||||
|
if imageDescription and not isMuted:
|
||||||
|
galleryStr+= \
|
||||||
|
' <a href="'+videoPostUrl+ \
|
||||||
|
'" class="gallerytext"><div class="gallerytext">'+ \
|
||||||
|
imageDescription+'</div></a>\n'
|
||||||
|
else:
|
||||||
|
galleryStr+='<label class="transparent">---</label><br>'
|
||||||
|
galleryStr+=' <div class="mediaicons">\n'
|
||||||
|
galleryStr+= \
|
||||||
|
' '+replyStr+announceStr+likeStr+ \
|
||||||
|
bookmarkStr+deleteStr+muteStr+'\n'
|
||||||
|
galleryStr+=' </div>\n'
|
||||||
|
galleryStr+=' <div class="mediaavatar">\n'
|
||||||
|
galleryStr+=' '+avatarLink+'\n'
|
||||||
|
galleryStr+=' </div>\n'
|
||||||
|
galleryStr+='</div>\n'
|
||||||
|
|
||||||
|
attachmentStr+='<center><video width="400" height="300" controls>'
|
||||||
|
attachmentStr+= \
|
||||||
|
'<source src="'+attach['url']+'" alt="'+ \
|
||||||
|
imageDescription+'" title="'+imageDescription+ \
|
||||||
|
'" class="attachment" type="video/'+ \
|
||||||
|
extension.replace('.','')+'">'
|
||||||
|
attachmentStr+=translate['Your browser does not support the video tag.']
|
||||||
|
attachmentStr+='</video></center>'
|
||||||
|
attachmentCtr+=1
|
||||||
|
elif mediaType=='audio/mpeg' or \
|
||||||
|
mediaType=='audio/ogg':
|
||||||
|
extension='.mp3'
|
||||||
|
if attach['url'].endswith('.ogg'):
|
||||||
|
extension='.ogg'
|
||||||
|
if attach['url'].endswith(extension):
|
||||||
|
if attachmentCtr>0:
|
||||||
|
attachmentStr+='<br>'
|
||||||
|
if boxName=='tlmedia':
|
||||||
|
galleryStr+='<div class="gallery">\n'
|
||||||
|
if not isMuted:
|
||||||
|
galleryStr+=' <a href="'+attach['url']+'">\n'
|
||||||
|
galleryStr+=' <audio controls>\n'
|
||||||
|
galleryStr+= \
|
||||||
|
' <source src="'+attach['url']+ \
|
||||||
|
'" alt="'+imageDescription+ \
|
||||||
|
'" title="'+imageDescription+ \
|
||||||
|
'" class="attachment" type="audio/'+ \
|
||||||
|
extension.replace('.','')+'">'
|
||||||
|
galleryStr+= \
|
||||||
|
translate['Your browser does not support the audio tag.']
|
||||||
|
galleryStr+=' </audio>\n'
|
||||||
|
galleryStr+=' </a>\n'
|
||||||
|
if postJsonObject['object'].get('url'):
|
||||||
|
audioPostUrl=postJsonObject['object']['url']
|
||||||
|
else:
|
||||||
|
audioPostUrl=postJsonObject['object']['id']
|
||||||
|
if imageDescription and not isMuted:
|
||||||
|
galleryStr+= \
|
||||||
|
' <a href="'+audioPostUrl+ \
|
||||||
|
'" class="gallerytext"><div class="gallerytext">'+ \
|
||||||
|
imageDescription+'</div></a>\n'
|
||||||
|
else:
|
||||||
|
galleryStr+='<label class="transparent">---</label><br>'
|
||||||
|
galleryStr+=' <div class="mediaicons">\n'
|
||||||
|
galleryStr+= \
|
||||||
|
' '+replyStr+announceStr+likeStr+bookmarkStr+ \
|
||||||
|
deleteStr+muteStr+'\n'
|
||||||
|
galleryStr+=' </div>\n'
|
||||||
|
galleryStr+=' <div class="mediaavatar">\n'
|
||||||
|
galleryStr+=' '+avatarLink+'\n'
|
||||||
|
galleryStr+=' </div>\n'
|
||||||
|
galleryStr+='</div>\n'
|
||||||
|
|
||||||
|
attachmentStr+='<center><audio controls>'
|
||||||
|
attachmentStr+= \
|
||||||
|
'<source src="'+attach['url']+'" alt="'+ \
|
||||||
|
imageDescription+'" title="'+imageDescription+ \
|
||||||
|
'" class="attachment" type="audio/'+ \
|
||||||
|
extension.replace('.','')+'">'
|
||||||
|
attachmentStr+=translate['Your browser does not support the audio tag.']
|
||||||
|
attachmentStr+='</audio></center>'
|
||||||
|
attachmentCtr+=1
|
||||||
|
attachmentStr+='</div>'
|
||||||
|
return attachmentStr,galleryStr
|
||||||
|
|
||||||
def individualPostAsHtml(recentPostsCache: {},maxRecentPosts: int, \
|
def individualPostAsHtml(recentPostsCache: {},maxRecentPosts: int, \
|
||||||
iconsDir: str,translate: {}, \
|
iconsDir: str,translate: {}, \
|
||||||
|
@ -3032,172 +3213,12 @@ def individualPostAsHtml(recentPostsCache: {},maxRecentPosts: int, \
|
||||||
'" alt="'+translate['replying to']+'" src="/'+ \
|
'" alt="'+translate['replying to']+'" src="/'+ \
|
||||||
iconsDir+'/reply.png" class="announceOrReply"/> <a href="'+ \
|
iconsDir+'/reply.png" class="announceOrReply"/> <a href="'+ \
|
||||||
postJsonObject['object']['inReplyTo']+'">'+postDomain+'</a>'
|
postJsonObject['object']['inReplyTo']+'">'+postDomain+'</a>'
|
||||||
attachmentStr=''
|
|
||||||
if postJsonObject['object'].get('attachment'):
|
|
||||||
if isinstance(postJsonObject['object']['attachment'], list):
|
|
||||||
attachmentCtr=0
|
|
||||||
attachmentStr+='<div class="media">'
|
|
||||||
for attach in postJsonObject['object']['attachment']:
|
|
||||||
if attach.get('mediaType') and attach.get('url'):
|
|
||||||
mediaType=attach['mediaType']
|
|
||||||
imageDescription=''
|
|
||||||
if attach.get('name'):
|
|
||||||
imageDescription=attach['name'].replace('"',"'")
|
|
||||||
if mediaType=='image/png' or \
|
|
||||||
mediaType=='image/jpeg' or \
|
|
||||||
mediaType=='image/gif':
|
|
||||||
if attach['url'].endswith('.png') or \
|
|
||||||
attach['url'].endswith('.jpg') or \
|
|
||||||
attach['url'].endswith('.jpeg') or \
|
|
||||||
attach['url'].endswith('.webp') or \
|
|
||||||
attach['url'].endswith('.gif'):
|
|
||||||
if attachmentCtr>0:
|
|
||||||
attachmentStr+='<br>'
|
|
||||||
if boxName=='tlmedia':
|
|
||||||
galleryStr+='<div class="gallery">\n'
|
|
||||||
if not isMuted:
|
|
||||||
galleryStr+=' <a href="'+attach['url']+'">\n'
|
|
||||||
galleryStr+= \
|
|
||||||
' <img loading="lazy" src="'+ \
|
|
||||||
attach['url']+'" alt="" title="">\n'
|
|
||||||
galleryStr+=' </a>\n'
|
|
||||||
if postJsonObject['object'].get('url'):
|
|
||||||
imagePostUrl=postJsonObject['object']['url']
|
|
||||||
else:
|
|
||||||
imagePostUrl=postJsonObject['object']['id']
|
|
||||||
if imageDescription and not isMuted:
|
|
||||||
galleryStr+= \
|
|
||||||
' <a href="'+imagePostUrl+ \
|
|
||||||
'" class="gallerytext"><div class="gallerytext">'+ \
|
|
||||||
imageDescription+'</div></a>\n'
|
|
||||||
else:
|
|
||||||
galleryStr+='<label class="transparent">---</label><br>'
|
|
||||||
galleryStr+=' <div class="mediaicons">\n'
|
|
||||||
galleryStr+= \
|
|
||||||
' '+replyStr+announceStr+likeStr+ \
|
|
||||||
bookmarkStr+deleteStr+muteStr+'\n'
|
|
||||||
galleryStr+=' </div>\n'
|
|
||||||
galleryStr+=' <div class="mediaavatar">\n'
|
|
||||||
galleryStr+=' '+avatarLink+'\n'
|
|
||||||
galleryStr+=' </div>\n'
|
|
||||||
galleryStr+='</div>\n'
|
|
||||||
|
|
||||||
attachmentStr+='<a href="'+attach['url']+'">'
|
attachmentStr,galleryStr= \
|
||||||
attachmentStr+= \
|
getPostAttachmentsAsHtml(postJsonObject,boxName,translate, \
|
||||||
'<img loading="lazy" src="'+attach['url']+ \
|
isMuted, \
|
||||||
'" alt="'+imageDescription+'" title="'+ \
|
replyStr,announceStr,likeStr, \
|
||||||
imageDescription+'" class="attachment"></a>\n'
|
bookmarkStr,deleteStr,muteStr)
|
||||||
attachmentCtr+=1
|
|
||||||
elif mediaType=='video/mp4' or \
|
|
||||||
mediaType=='video/webm' or \
|
|
||||||
mediaType=='video/ogv':
|
|
||||||
extension='.mp4'
|
|
||||||
if attach['url'].endswith('.webm'):
|
|
||||||
extension='.webm'
|
|
||||||
elif attach['url'].endswith('.ogv'):
|
|
||||||
extension='.ogv'
|
|
||||||
if attach['url'].endswith(extension):
|
|
||||||
if attachmentCtr>0:
|
|
||||||
attachmentStr+='<br>'
|
|
||||||
if boxName=='tlmedia':
|
|
||||||
galleryStr+='<div class="gallery">\n'
|
|
||||||
if not isMuted:
|
|
||||||
galleryStr+=' <a href="'+attach['url']+'">\n'
|
|
||||||
galleryStr+=' <video width="600" height="400" controls>\n'
|
|
||||||
galleryStr+= \
|
|
||||||
' <source src="'+attach['url']+ \
|
|
||||||
'" alt="'+imageDescription+ \
|
|
||||||
'" title="'+imageDescription+ \
|
|
||||||
'" class="attachment" type="video/'+ \
|
|
||||||
extension.replace('.','')+'">'
|
|
||||||
galleryStr+= \
|
|
||||||
translate['Your browser does not support the video tag.']
|
|
||||||
galleryStr+=' </video>\n'
|
|
||||||
galleryStr+=' </a>\n'
|
|
||||||
if postJsonObject['object'].get('url'):
|
|
||||||
videoPostUrl=postJsonObject['object']['url']
|
|
||||||
else:
|
|
||||||
videoPostUrl=postJsonObject['object']['id']
|
|
||||||
if imageDescription and not isMuted:
|
|
||||||
galleryStr+= \
|
|
||||||
' <a href="'+videoPostUrl+ \
|
|
||||||
'" class="gallerytext"><div class="gallerytext">'+ \
|
|
||||||
imageDescription+'</div></a>\n'
|
|
||||||
else:
|
|
||||||
galleryStr+='<label class="transparent">---</label><br>'
|
|
||||||
galleryStr+=' <div class="mediaicons">\n'
|
|
||||||
galleryStr+= \
|
|
||||||
' '+replyStr+announceStr+likeStr+ \
|
|
||||||
bookmarkStr+deleteStr+muteStr+'\n'
|
|
||||||
galleryStr+=' </div>\n'
|
|
||||||
galleryStr+=' <div class="mediaavatar">\n'
|
|
||||||
galleryStr+=' '+avatarLink+'\n'
|
|
||||||
galleryStr+=' </div>\n'
|
|
||||||
galleryStr+='</div>\n'
|
|
||||||
|
|
||||||
attachmentStr+='<center><video width="400" height="300" controls>'
|
|
||||||
attachmentStr+= \
|
|
||||||
'<source src="'+attach['url']+'" alt="'+ \
|
|
||||||
imageDescription+'" title="'+imageDescription+ \
|
|
||||||
'" class="attachment" type="video/'+ \
|
|
||||||
extension.replace('.','')+'">'
|
|
||||||
attachmentStr+=translate['Your browser does not support the video tag.']
|
|
||||||
attachmentStr+='</video></center>'
|
|
||||||
attachmentCtr+=1
|
|
||||||
elif mediaType=='audio/mpeg' or \
|
|
||||||
mediaType=='audio/ogg':
|
|
||||||
extension='.mp3'
|
|
||||||
if attach['url'].endswith('.ogg'):
|
|
||||||
extension='.ogg'
|
|
||||||
if attach['url'].endswith(extension):
|
|
||||||
if attachmentCtr>0:
|
|
||||||
attachmentStr+='<br>'
|
|
||||||
if boxName=='tlmedia':
|
|
||||||
galleryStr+='<div class="gallery">\n'
|
|
||||||
if not isMuted:
|
|
||||||
galleryStr+=' <a href="'+attach['url']+'">\n'
|
|
||||||
galleryStr+=' <audio controls>\n'
|
|
||||||
galleryStr+= \
|
|
||||||
' <source src="'+attach['url']+ \
|
|
||||||
'" alt="'+imageDescription+ \
|
|
||||||
'" title="'+imageDescription+ \
|
|
||||||
'" class="attachment" type="audio/'+ \
|
|
||||||
extension.replace('.','')+'">'
|
|
||||||
galleryStr+= \
|
|
||||||
translate['Your browser does not support the audio tag.']
|
|
||||||
galleryStr+=' </audio>\n'
|
|
||||||
galleryStr+=' </a>\n'
|
|
||||||
if postJsonObject['object'].get('url'):
|
|
||||||
audioPostUrl=postJsonObject['object']['url']
|
|
||||||
else:
|
|
||||||
audioPostUrl=postJsonObject['object']['id']
|
|
||||||
if imageDescription and not isMuted:
|
|
||||||
galleryStr+= \
|
|
||||||
' <a href="'+audioPostUrl+ \
|
|
||||||
'" class="gallerytext"><div class="gallerytext">'+ \
|
|
||||||
imageDescription+'</div></a>\n'
|
|
||||||
else:
|
|
||||||
galleryStr+='<label class="transparent">---</label><br>'
|
|
||||||
galleryStr+=' <div class="mediaicons">\n'
|
|
||||||
galleryStr+= \
|
|
||||||
' '+replyStr+announceStr+likeStr+bookmarkStr+ \
|
|
||||||
deleteStr+muteStr+'\n'
|
|
||||||
galleryStr+=' </div>\n'
|
|
||||||
galleryStr+=' <div class="mediaavatar">\n'
|
|
||||||
galleryStr+=' '+avatarLink+'\n'
|
|
||||||
galleryStr+=' </div>\n'
|
|
||||||
galleryStr+='</div>\n'
|
|
||||||
|
|
||||||
attachmentStr+='<center><audio controls>'
|
|
||||||
attachmentStr+= \
|
|
||||||
'<source src="'+attach['url']+'" alt="'+ \
|
|
||||||
imageDescription+'" title="'+imageDescription+ \
|
|
||||||
'" class="attachment" type="audio/'+ \
|
|
||||||
extension.replace('.','')+'">'
|
|
||||||
attachmentStr+=translate['Your browser does not support the audio tag.']
|
|
||||||
attachmentStr+='</audio></center>'
|
|
||||||
attachmentCtr+=1
|
|
||||||
attachmentStr+='</div>'
|
|
||||||
|
|
||||||
publishedStr=''
|
publishedStr=''
|
||||||
if postJsonObject['object'].get('published'):
|
if postJsonObject['object'].get('published'):
|
||||||
|
|
Loading…
Reference in New Issue