|
@ -3,22 +3,23 @@ import os |
|
|
|
|
|
|
|
|
import magic |
|
|
import magic |
|
|
from PIL import Image |
|
|
from PIL import Image |
|
|
from exif import Image as ExifImage |
|
|
|
|
|
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, SUB_TYPES |
|
|
from distribusi.mappings import CODE_TYPES, FILE_TYPES, SUB_TYPES |
|
|
|
|
|
|
|
|
MIME_TYPE = magic.Magic(mime=True) |
|
|
MIME_TYPE = magic.Magic(mime=True) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def caption(image): |
|
|
def add_alttext(full_path_image): |
|
|
try: |
|
|
try: |
|
|
with open(image, "rb") as image_file: |
|
|
image_filename_no_ext = os.path.splitext(full_path_image)[0] |
|
|
exif_image = ExifImage(image_file) |
|
|
alttext_filename = f'{image_filename_no_ext}_alttext.txt' |
|
|
caption = exif_image.communication |
|
|
if os.path.isfile(alttext_filename): |
|
|
|
|
|
print(f"{image_filename_no_ext} has {alttext_filename}") |
|
|
|
|
|
with open(alttext_filename, 'r') as alttext_file: |
|
|
|
|
|
return alttext_file.read() |
|
|
except Exception as e: |
|
|
except Exception as e: |
|
|
print(e) |
|
|
print(f"exception {e} raised while making alttext") |
|
|
caption = "" |
|
|
return |
|
|
return caption |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def thumbnail(full_path_image, name, args): |
|
|
def thumbnail(full_path_image, name, args): |
|
@ -63,7 +64,6 @@ def check_distribusi_index(args, index): |
|
|
""" |
|
|
""" |
|
|
check whether a index.html file is generated by distribusi |
|
|
check whether a index.html file is generated by distribusi |
|
|
""" |
|
|
""" |
|
|
|
|
|
|
|
|
if not args.force: |
|
|
if not args.force: |
|
|
with open(index, "r") as f: |
|
|
with open(index, "r") as f: |
|
|
if '<meta name="generator" content="distribusi" />' in f.read(): |
|
|
if '<meta name="generator" content="distribusi" />' in f.read(): |
|
@ -114,15 +114,15 @@ def handle_text_files(name, full_path): |
|
|
|
|
|
|
|
|
def handle_image_files(name, full_path, args): |
|
|
def handle_image_files(name, full_path, args): |
|
|
if args.thumbnail: |
|
|
if args.thumbnail: |
|
|
caption = "" |
|
|
|
|
|
thumbnail_filename = thumbnail(full_path, name, args) |
|
|
thumbnail_filename = thumbnail(full_path, name, args) |
|
|
if thumbnail_filename is None: |
|
|
if thumbnail_filename is None: |
|
|
return |
|
|
return |
|
|
if args.captions: |
|
|
if args.alttexts: |
|
|
caption = caption(full_path) |
|
|
image_alttext = add_alttext(full_path) |
|
|
return f"<figure><a href='{name}'><img class='thumbnail' src='{thumbnail_filename}'></a><figcaption>{caption}</figcaption></figure>" |
|
|
if image_alttext is None: |
|
|
|
|
|
return f'<a href="{name}"><img class="thumbnail" src="{thumbnail_filename}" alt="{name}"></a>' |
|
|
return FILE_TYPES[type_].format(name, caption) |
|
|
return f'<a href="{name}"><img class="thumbnail" src="{thumbnail_filename}" alt="{image_alttext}"></a>' |
|
|
|
|
|
return FILE_TYPES[type_].format(name, image_alttext) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def remove_index_html(root, files): |
|
|
def remove_index_html(root, files): |
|
@ -169,10 +169,13 @@ def distribusify(args, directory): # noqa |
|
|
if name.endswith("_thumbnail.jpg"): |
|
|
if name.endswith("_thumbnail.jpg"): |
|
|
continue |
|
|
continue |
|
|
|
|
|
|
|
|
|
|
|
if name.endswith("_alttext.txt"): |
|
|
|
|
|
continue |
|
|
|
|
|
|
|
|
full_path = os.path.join(root, name) |
|
|
full_path = os.path.join(root, name) |
|
|
mime = MIME_TYPE.from_file(full_path) |
|
|
mime = MIME_TYPE.from_file(full_path) |
|
|
type_, subtype = mime.split("/") |
|
|
type_, subtype = mime.split("/") |
|
|
caption = name |
|
|
alttext = name |
|
|
|
|
|
|
|
|
if args.verbose: |
|
|
if args.verbose: |
|
|
print("Found", name, "as", mime) |
|
|
print("Found", name, "as", mime) |
|
@ -185,7 +188,7 @@ def distribusify(args, directory): # noqa |
|
|
if tag is None: |
|
|
if tag is None: |
|
|
continue |
|
|
continue |
|
|
case _: |
|
|
case _: |
|
|
tag = FILE_TYPES[type_].format(name, caption) |
|
|
tag = FILE_TYPES[type_].format(name, alttext) |
|
|
|
|
|
|
|
|
if subtype in SUB_TYPES: |
|
|
if subtype in SUB_TYPES: |
|
|
tag = SUB_TYPES[subtype] |
|
|
tag = SUB_TYPES[subtype] |
|
|