|
@ -1,16 +1,14 @@ |
|
|
import base64 |
|
|
import base64 |
|
|
import os |
|
|
import os |
|
|
|
|
|
import subprocess |
|
|
from io import BytesIO |
|
|
from io import BytesIO |
|
|
|
|
|
|
|
|
import magic |
|
|
import magic |
|
|
from distribusi.page_template import html_footer, html_head |
|
|
|
|
|
from PIL import Image |
|
|
from PIL import Image |
|
|
import subprocess |
|
|
|
|
|
|
|
|
|
|
|
CODE_TYPES = [ |
|
|
from distribusi.page_template import html_footer, html_head |
|
|
'x-c', |
|
|
|
|
|
'html' |
|
|
CODE_TYPES = ['x-c', 'html'] |
|
|
] |
|
|
|
|
|
|
|
|
|
|
|
FILE_TYPES = { |
|
|
FILE_TYPES = { |
|
|
'image': '<figure><img class="image" src="{}">{}</figure>', |
|
|
'image': '<figure><img class="image" src="{}">{}</figure>', |
|
@ -19,19 +17,14 @@ FILE_TYPES = { |
|
|
'<embed src="{}" type="application/pdf" /></object>' |
|
|
'<embed src="{}" type="application/pdf" /></object>' |
|
|
), |
|
|
), |
|
|
'text': '<a href="{}" class="text">{}</a>', |
|
|
'text': '<a href="{}" class="text">{}</a>', |
|
|
'video': ( |
|
|
'video': ('<video class="video" controls>' '<source src="{}"></source></video>'), |
|
|
'<video class="video" controls>' |
|
|
'audio': ('<audio controls class="audio">' '<source src="{}"></source></audio>'), |
|
|
'<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) |
|
|
process = subprocess.Popen(['exiftool', '-Comment', image], stdout=subprocess.PIPE) |
|
|
out, err = process.communicate() |
|
|
out, err = process.communicate() |
|
@ -41,6 +34,7 @@ def caption(image): |
|
|
caption = '' |
|
|
caption = '' |
|
|
return caption |
|
|
return caption |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def thumbnail(image, name, args): |
|
|
def thumbnail(image, name, args): |
|
|
size = (450, 450) |
|
|
size = (450, 450) |
|
|
im = Image.open(image) |
|
|
im = Image.open(image) |
|
@ -58,6 +52,7 @@ def thumbnail(image, name, args): |
|
|
"<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>{}</figure>" |
|
|
).format(name, data_url, cap) |
|
|
).format(name, data_url, cap) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def div(args, mime, tag, *values): |
|
|
def div(args, mime, tag, *values): |
|
|
id_name = values[0].split('.')[0].replace(' ', '_') |
|
|
id_name = values[0].split('.')[0].replace(' ', '_') |
|
|
if not args.no_filenames: |
|
|
if not args.no_filenames: |
|
@ -101,7 +96,7 @@ def distribusify(args, directory): # noqa |
|
|
elif format in CODE_TYPES: |
|
|
elif format in CODE_TYPES: |
|
|
# if the plain text is code, |
|
|
# if the plain text is code, |
|
|
# which types do we wrap in pre-tags? |
|
|
# which types do we wrap in pre-tags? |
|
|
a = "<pre>"+open(full_path).read()+"</pre>" |
|
|
a = "<pre>" + open(full_path).read() + "</pre>" |
|
|
else: |
|
|
else: |
|
|
a = FILE_TYPES[mime] |
|
|
a = FILE_TYPES[mime] |
|
|
|
|
|
|
|
@ -146,7 +141,7 @@ def distribusify(args, directory): # noqa |
|
|
f.write(styled_html_head) |
|
|
f.write(styled_html_head) |
|
|
|
|
|
|
|
|
for line in html: |
|
|
for line in html: |
|
|
f.write(line+'\n') |
|
|
f.write(line + '\n') |
|
|
|
|
|
|
|
|
if not args.no_template: |
|
|
if not args.no_template: |
|
|
f.write(html_footer) |
|
|
f.write(html_footer) |
|
|