#!/usr/bin/python3 """!@brief:generates static html imagelibrary @author: Luzia Christiane Tesar """ import os import sys import glob # import exif from PIL import Image import argparse import configparser from pathlib import Path import datetime BUILD_DIR = Path("./build") CONF_DIR = Path("./conf") THUMBSIZE = (300, 300) GLOBALNAME = "Chrissys random Imagelibrary" AUTHOR = "Luzia Christiane Tesar" LANGUAGE = "en" DESCRIPTION = "" TODAY = datetime.datetime.today().strftime("%Y-%m-%d") CANONICALURL = "https://dm2lct.radio" class HTML: def __init__(self, **kwargs): self.header = Path(CONF_DIR / "header.html").read_text() self.footer = Path(CONF_DIR / "footer.html").read_text() for key, value in kwargs.items(): setattr(self, key, value) def title(self, title): return f"""

{title}

\n""" def par(self, text): return f"""

{text}

\n""" def div(self, divclass): return f"""
\n""" def endDiv(self): return f"""
\n""" def img(self, src, alt=None, width=None, title=None): return f"""{alt}\n""" def aimg(self, src, dest, alt=None, width=None, title=None): return f"""{alt}\n""" def link(self, dest, data): return f"""{data}""" def headermeta(self, title): header = self.header.replace("{{title}}", title) header = header.replace("{{cannonical_url}}", CANONICALURL) header = header.replace("{{global_name}}", GLOBALNAME) header = header.replace("{{global_name}}", GLOBALNAME) header = header.replace("{{author}}", AUTHOR) header = header.replace("{{language}}", LANGUAGE) header = header.replace("{{description}}", DESCRIPTION) header = header.replace("{{published_date}}", TODAY) return header def writeIndex(self, indir, odir, title): with open(f"{odir}/index.html", "w", encoding="utf-8") as file: breakpoint() file.write(self.headermeta(title)) file.write(self.title(title)) file.write(self.div("row")) imglist = glob.glob(str(odir) + "/.thumbnails/*") for n in range(0,3): file.write(self.div("column")) for i in range(n, len(imglist),3): file.write( self.aimg( imglist[i].removeprefix(str(odir) + "/"), imglist[i].removeprefix(str(odir) + "/.thumbnails/"), ) ) file.write(self.endDiv()) file.write(self.endDiv()) file.write(self.footer) def writeDetail(self, img, previmg, nextimg): with open(f"build/{self.outfolder}/index.html", "w", encoding="utf-8") as file: file.write(self.headermeta(title)) file.write(self.title(title)) file.write(self.img(image)) file.write(self.footer) def writeMain(self): with open(f"{str(BUILD_DIR)}/index.html", "w", encoding="utf-8") as file: title="Chrissys random Imagelibrary" file.write(self.headermeta(title)) file.write(self.title(title)) dirlist = [x[0] for x in os.walk(BUILD_DIR)] for root, dirs, files in os.walk(BUILD_DIR): for n in range(0,3): file.write(self.div("column")) for i in range(n, len(dirlist),3): file.write( self.aimg( dirlist[i].removeprefix(str(BUILD_DIR) + "/"), dirlist[i].removeprefix(str(BUILD_DIR) + "/"), ) ) file.write(self.endDiv()) file.write(self.endDiv()) file.write(self.footer) class EXIF: def __init__(self, **kwargs): for key, value in kwargs.items(): setattr(self, key, value) class IMG: def __init__(self, **kwargs): for key, value in kwargs.items(): setattr(self, key, value) def createThumb(img, thumbdir): file = Path(img).stem with Image.open(img) as im: im.thumbnail(THUMBSIZE) im.convert("RGB").save(str(thumbdir) + "/" + file + ".jpg", "JPEG") def processImage(img, odir): file = Path(img).stem with Image.open(img) as im: im.convert("RGB").save(str(odir) + "/" + file + ".jpg", "JPEG") def generateDir(path): Path(BUILD_DIR / path.name).mkdir(parents=True, exist_ok=True) Path(BUILD_DIR / path.name / ".thumbnails").mkdir(parents=True, exist_ok=True) return Path(BUILD_DIR / path.name), Path(BUILD_DIR / path.name / ".thumbnails") if __name__ == "__main__": parser = argparse.ArgumentParser( prog="PurrPic", description="Creates a static image gallery from a given Filelist", epilog="Meow! =^.^=", ) parser.add_argument( "--inpath", type=lambda p: Path(p).absolute(), help="", ) parser.add_argument( "--outpath", type=lambda p: Path(p).absolute(), help="", ) parser.add_argument( "--start", "-s", type=str, help="", ) args = parser.parse_args() print(args.inpath) odir, thumbdir = generateDir(args.inpath) for img in glob.glob(str(args.inpath) + "/*"): print(img) createThumb(img, thumbdir) processImage(img, odir) html = HTML() html.writeIndex(thumbdir, odir, "eh23") html.writeMain() print(odir, thumbdir) # for image in args.inpath: