diff --git a/generate-html.py b/generate-html.py
index 33a63c0..2861ae9 100644
--- a/generate-html.py
+++ b/generate-html.py
@@ -1,78 +1,192 @@
#!/usr/bin/env python3
import sys
import os
+import urllib.parse
+from multiprocessing import Pool
+import numpy as np
"""
root and webroot must point to the same folder, one on filesystem and one on the webserver. Use absolut paths, e.g. /data/pictures/ and https://pictures.example.com/
"""
-root = "/mnt/small-data/nfs/pictures/"
-webroot = "https://pictures.sorogon.eu/"
+ROOT = "/mnt/nfs/pictures/"
+WEBROOT = "https://pictures.sorogon.eu/"
imgext = [".jpg", ".jpeg", ".JPG", ".JPEG"]
rawext = [".ARW", ".tif", ".tiff", ".TIF", ".TIFF"]
-htmlheader = """
+thumbnails: list[tuple[str, str]] = []
+
+HTMLHEADER = """
-
-
-
-Pictures
-
-
-
+
+
+
+ Pictures
+
+
+
"""
+def thumbnail_convert(arguments: tuple[str, str]):
+ folder, item = arguments
+ os.system(f'magick "{os.path.join(folder, item)}" -quality 75% -define jpeg:size=1024x1024 -define jpeg:extent=100kb -thumbnail 512x512 -auto-orient "{os.path.join(ROOT, ".previews", folder.removeprefix(ROOT), item)}"')
+
+
def listfolder(folder: str):
items: list[str] = os.listdir(folder)
items.sort()
images: list[str] = []
subfolders: list[str] = []
- if not os.path.exists(os.path.join(root, ".previews", folder.removeprefix(root))):
- os.mkdir(os.path.join(root, ".previews", folder.removeprefix(root)))
+ if not os.path.exists(os.path.join(ROOT, ".previews", folder.removeprefix(ROOT))):
+ os.mkdir(os.path.join(ROOT, ".previews", folder.removeprefix(ROOT)))
- with open(os.path.join(folder, "list.txt"), "w", encoding="utf-8") as f:
- f.write(htmlheader)
+ with open(os.path.join(folder, "index.html"), "w", encoding="utf-8") as f:
+ f.write(HTMLHEADER)
for item in items:
if item != "Galleries" and item != ".previews":
if os.path.isdir(os.path.join(folder, item)):
- subfolders.extend([f'{item} '])
+ subfolders.extend([f'{item}'])
listfolder(os.path.join(folder, item))
else:
if os.path.splitext(item)[1] in imgext:
- images.extend([f' '])
- if not os.path.exists(os.path.join(root, ".previews", folder.removeprefix(root), item)):
- # os.system(f'magick {os.path.join(folder, item)} -resize 1024x768! {os.path.join(root, ".previews", folder.removeprefix(root), item)}')
- print(f'magick {os.path.join(folder, item)} -resize 1024x768! {os.path.join(root, ".previews", folder.removeprefix(root), item)}')
+ image = f'{item}'
+ if not os.path.exists(os.path.join(ROOT, ".previews", folder.removeprefix(ROOT), item)):
+ thumbnails.append((folder, item))
for raw in rawext:
if os.path.exists(os.path.join(folder, os.path.splitext(item)[0] + raw)):
- images.extend([f'RAW '])
- for image in images:
- f.write(image)
- f.write("\n")
+ image += f': RAW'
+ image += ""
+ images.extend([image])
+ f.write('
\n')
for subfolder in subfolders:
f.write(subfolder)
f.write("\n")
- f.write("")
+ f.write("
\n")
+ f.write('
\n')
+ for chunk in np.array_split(images, 8):
+ f.write('
\n')
+ for image in chunk:
+ f.write(f" {image}\n")
+ f.write("