speed up by not calling exiftools always, images now always have figcaptions, catch errors properly
This commit is contained in:
parent
dbe0e59b90
commit
b613eef36c
@ -7,27 +7,18 @@ import magic
|
|||||||
from PIL import Image
|
from PIL import Image
|
||||||
|
|
||||||
from distribusi.page_template import html_footer, html_head
|
from distribusi.page_template import html_footer, html_head
|
||||||
|
from distribusi.mappings import CODE_TYPES, FILE_TYPES
|
||||||
CODE_TYPES = ['x-c', 'html']
|
|
||||||
|
|
||||||
FILE_TYPES = {
|
|
||||||
'image': '<figure><img class="image" src="{}">{}</figure>',
|
|
||||||
'pdf': (
|
|
||||||
'<object data="{}" class="pdf" type="application/pdf">'
|
|
||||||
'<embed src="{}" type="application/pdf" /></object>'
|
|
||||||
),
|
|
||||||
'text': '<a href="{}" class="text">{}</a>',
|
|
||||||
'video': ('<video class="video" controls>' '<source src="{}"></source></video>'),
|
|
||||||
'audio': ('<audio controls class="audio">' '<source src="{}"></source></audio>'),
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
MIME_TYPE = magic.Magic(mime=True)
|
MIME_TYPE = magic.Magic(mime=True)
|
||||||
|
|
||||||
|
|
||||||
def caption(image):
|
def caption(image):
|
||||||
process = subprocess.Popen(['exiftool', '-Comment', image], stdout=subprocess.PIPE)
|
try:
|
||||||
out, err = process.communicate()
|
process = subprocess.Popen(['exiftool', '-Comment', image], stdout=subprocess.PIPE)
|
||||||
|
out, err = process.communicate()
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
print('Do you have exiftool installed?')
|
||||||
try:
|
try:
|
||||||
caption = out.decode("utf-8").split(": ", 1)[1]
|
caption = out.decode("utf-8").split(": ", 1)[1]
|
||||||
except:
|
except:
|
||||||
@ -36,21 +27,25 @@ def caption(image):
|
|||||||
|
|
||||||
|
|
||||||
def thumbnail(image, name, args):
|
def thumbnail(image, name, args):
|
||||||
size = (450, 450)
|
try:
|
||||||
im = Image.open(image)
|
size = (450, 450)
|
||||||
im.thumbnail(size)
|
im = Image.open(image)
|
||||||
output = BytesIO()
|
im.thumbnail(size)
|
||||||
im.save(output, format='JPEG')
|
output = BytesIO()
|
||||||
im_data = output.getvalue()
|
im.save(output, format='JPEG')
|
||||||
data_url = base64.b64encode(im_data).decode()
|
im_data = output.getvalue()
|
||||||
cap = caption(image)
|
data_url = base64.b64encode(im_data).decode()
|
||||||
if cap and args.captions:
|
if args.captions:
|
||||||
cap = "<figcaption>{}</figcaption>".format(cap)
|
cap = caption(image)
|
||||||
else:
|
else:
|
||||||
cap = ''
|
cap = name
|
||||||
return (
|
return (
|
||||||
"<figure><a href='{}'><img class='thumbnail' src='data:image/jpg;base64,{}'></a>{}</figure>"
|
"<figure><a href='{}'><img class='thumbnail' src='data:image/jpg;base64,{}'></a><figcaption>{}</figcaption></figure>"
|
||||||
).format(name, data_url, cap)
|
).format(name, data_url, cap)
|
||||||
|
except Exception as e:
|
||||||
|
print(e)
|
||||||
|
return "<figure><a href='{}'><img class='thumbnail' src='{}'></a><figcaption>{}</figcaption></figure>".format(name, name,name)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def div(args, mime, tag, *values):
|
def div(args, mime, tag, *values):
|
||||||
@ -60,7 +55,7 @@ def div(args, mime, tag, *values):
|
|||||||
else:
|
else:
|
||||||
filename = ''
|
filename = ''
|
||||||
if 'image' in mime:
|
if 'image' in mime:
|
||||||
html = '<div id="{}">{}' + filename + '</div>'
|
html = '<div id="{}">{}</div>'
|
||||||
elif 'pdf' in mime:
|
elif 'pdf' in mime:
|
||||||
html = '<div id="{}">{}' + filename + '</div>'
|
html = '<div id="{}">{}' + filename + '</div>'
|
||||||
else:
|
else:
|
||||||
@ -103,11 +98,10 @@ def distribusify(args, directory): # noqa
|
|||||||
if mime == 'image' and args.thumbnail:
|
if mime == 'image' and args.thumbnail:
|
||||||
a = thumbnail(full_path, name, args)
|
a = thumbnail(full_path, name, args)
|
||||||
else:
|
else:
|
||||||
cap = caption(full_path)
|
if args.captions:
|
||||||
if cap and args.captions:
|
cap = caption(full_path)
|
||||||
cap = "<figcaption>{}</figcaption>".format(cap)
|
|
||||||
else:
|
else:
|
||||||
cap = ''
|
cap = name
|
||||||
a = FILE_TYPES[mime].format(full_path, cap)
|
a = FILE_TYPES[mime].format(full_path, cap)
|
||||||
|
|
||||||
if format in FILE_TYPES:
|
if format in FILE_TYPES:
|
||||||
|
Loading…
Reference in New Issue
Block a user