diff --git a/purrpic.py b/purrpic.py
index 91ed2ff..5a0fcbb 100644
--- a/purrpic.py
+++ b/purrpic.py
@@ -1,6 +1,7 @@
#!/usr/bin/python3
"""!@brief:generates static html imagelibrary
@author: Luzia Christiane Tesar
+@date Mo 13. Jul 20:52:54 CEST 2026
"""
import os
@@ -24,6 +25,8 @@ DESCRIPTION = ""
TODAY = datetime.datetime.today().strftime("%Y-%m-%d")
CANONICALURL = "https://dm2lct.radio"
+exclude = set(['.thumbnails'])
+
class HTML:
def __init__(self, **kwargs):
self.header = Path(CONF_DIR / "header.html").read_text()
@@ -37,6 +40,15 @@ class HTML:
def par(self, text):
return f"""
{text}\n"""
+
def div(self, divclass):
return f"""\n"""
@@ -61,58 +73,70 @@ class HTML:
header = header.replace("{{language}}", LANGUAGE)
header = header.replace("{{description}}", DESCRIPTION)
header = header.replace("{{published_date}}", TODAY)
+ header = header.replace("{{modified_date}}", TODAY)
+ header = header.replace("{{canonical_URL}}", CANONICALURL)
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/"),
- )
- )
+ def writeIndex(self, indir, odir, title, info=None) -> None:
+ try:
+ with open(f"{odir}/index.html", "w", encoding="utf-8") as file:
+ file.write(self.headermeta(title))
+ file.write(self.title(title))
+ if info is not None:
+ file.write(self.ul())
+ for line in info:
+ file.write(self.li(line))
+ file.write(self.endUl())
+ 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.endDiv())
- file.write(self.footer)
+ file.write(self.footer)
+ except:
+ pass
def writeDetail(self, img, previmg, nextimg):
+ buf+= self.headermeta(title)
+ buf+= self.title(title)
+ buf+= self.img(image)
+ buf+= self.footer
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)
+ file.write(buf)
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):
-
+ file.write(self.div("row"))
+ dirs = list(filter(lambda x: x.is_dir(),os.scandir(BUILD_DIR)))
+ #dirs[:] = list(filter(lambda x: not x in exclude, dirs))
for n in range(0,3):
file.write(self.div("column"))
- for i in range(n, len(dirlist),3):
+ for i in range(n, len(dirs),3):
+ thumbs = os.listdir(str(BUILD_DIR)+"/"+dirs[i].name+"/.thumbnails")
+ file.write(self.div("desc"))
+ file.write("EH23")
+ file.write(self.endDiv())
file.write(
- self.aimg(
- dirlist[i].removeprefix(str(BUILD_DIR) + "/"),
- dirlist[i].removeprefix(str(BUILD_DIR) + "/"),
- )
- )
+ self.aimg(
+ str(dirs[i].name)+"/.thumbnails/"+thumbs[0],
+ str(dirs[i].name)+"/"),
+ )
file.write(self.endDiv())
file.write(self.endDiv())
file.write(self.footer)
-
class EXIF:
def __init__(self, **kwargs):
for key, value in kwargs.items():
@@ -143,6 +167,37 @@ def generateDir(path):
Path(BUILD_DIR / path.name / ".thumbnails").mkdir(parents=True, exist_ok=True)
return Path(BUILD_DIR / path.name), Path(BUILD_DIR / path.name / ".thumbnails")
+def parseIni(file):
+ title = ""
+ desc=[]
+ files = []
+ try:
+ with open(file, 'r') as f:
+ for line in f:
+ if line.startswith("desc = "):
+ desc.append(line.removeprefix("desc = ").strip())
+ elif line.endswith(".jpg\n" or ".png\n" or ".jpeg\n"):
+ files.append(line.strip())
+ elif line.startswith("title = "):
+ title=line.removeprefix("title = ").strip()
+ else:
+ next
+ except:
+ pass
+ return files, desc, title
+
+def processDir(path):
+ try:
+ if Path(path/".purrpic.ini").is_file():
+ files, desc, title = parseIni(Path(args.inpath/".purrpic.ini"))
+ odir, thumbdir = generateDir(args.inpath)
+ for img in files:
+ createThumb(Path(args.inpath/img), thumbdir)
+ processImage(Path(args.inpath/img), odir)
+ html = HTML()
+ html.writeIndex(thumbdir, odir, title, desc)
+ except:
+ pass
if __name__ == "__main__":
@@ -153,13 +208,13 @@ if __name__ == "__main__":
)
parser.add_argument(
"--inpath",
- type=lambda p: Path(p).absolute(),
+ type=lambda p: Path(p),
help="",
)
parser.add_argument(
"--outpath",
- type=lambda p: Path(p).absolute(),
+ type=lambda p: Path(p),
help="",
)
parser.add_argument(
@@ -169,17 +224,8 @@ if __name__ == "__main__":
help="",
)
args = parser.parse_args()
- print(args.inpath)
+
+ processDir(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=HTML()
html.writeMain()
- print(odir, thumbdir)
-
-# for image in args.inpath: