|
@ -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: |
|
|