diff --git a/src/main.py b/src/main.py index caba8d8..6bb2be4 100644 --- a/src/main.py +++ b/src/main.py @@ -19,14 +19,14 @@ def scan_pages(folders: list[Path]) -> list[Page]: for folder in folders: files: list[Path] = folder.get_files() - page: Page = Page(folder.get_absolute_path(), folder.get_name(), None, prev, None) + page: Page = Page(folder.get_absolute_path(), folder.get_name(), prev=prev) raw: Path = Path(folder.get_absolute_path(), folder.get_name() + ".NEF") - images: list[Path] = [Picture(file, page=prev, raw=raw) for file in files if file.get_name().endswith(".png")] + for file in files: + if file.get_name().endswith(".png"): + page.add_picture(Picture(file, page=prev, raw=raw)) - page.images = images - - if len(images) == 0: + if len(page.get_picture()) == 0: bar.next() continue diff --git a/src/page.py b/src/page.py index 5d68bf2..f18a5e6 100644 --- a/src/page.py +++ b/src/page.py @@ -17,17 +17,23 @@ page_template = env.get_template('page.jinja') class Page(): - def __init__(self, path: Path, name: str, images: list[Picture], prev: Page|None, next: Page|None): + def __init__(self, path: Path, name: str, pictures: list[Picture] = None, prev: Page|None = None, next: Page|None = None): self.name: str = name - self.path: Path = path - self.images: list[Picture] = images - self._exif: Path = Path(self.path, "exif.txt") - self._readme: Path = Path(self.path, "readme.md") - self._raw: Path = Path(self.path, name + ".NEF") - self.html: Path = Path(self.path, "page.html") + self._path: Path = path + self._pictures: list[Picture] = [] if pictures is None else pictures + self._exif: Path = Path(self._path, "exif.txt") + self._readme: Path = Path(self._path, "readme.md") + self._raw: Path = Path(self._path, name + ".NEF") + self.html: Path = Path(self._path, "page.html") self.prev: Page = prev self.next: Page = next + def add_picture(self, picture: Picture) -> None: + self._pictures.append(picture) + + def get_picture(self) -> list[Picture]: + return self._pictures + def _render_raw(self): if not self._raw.exist(): return None @@ -44,7 +50,8 @@ class Page(): return f"../{self.next.name}/page.html" def _to_html(self) -> str|None: - html_rendered = page_template.render(exif=self._render_exif(), raw=self._render_raw(), images=self._render_images(), readme=self._render_readme(), prev=self._render_prev(), next=self._render_next()) + print(self._pictures) + html_rendered = page_template.render(page=self) return html_rendered def create(self) -> Path: @@ -60,9 +67,6 @@ class Page(): html = markdown.markdown(text) return html - def _render_images(self): - return [image.render() for image in self.images] - def _gen_exif(self): if self._raw.exist(): if os.system(f"exiftool {self._raw.get_absolute_path()} > {self._exif.get_absolute_path()} 2>/dev/null") == 0: diff --git a/src/path.py b/src/path.py index a4f3c5a..20437e0 100644 --- a/src/path.py +++ b/src/path.py @@ -11,6 +11,9 @@ class Path(): self._name: str = os.path.basename(self._absolute_path) self._dirpath: str = os.path.dirname(self._absolute_path) + def __str__(self) -> str: + return self._name + def get_dirpath(self): return self._dirpath diff --git a/src/picture.py b/src/picture.py index 1a414e0..feb788a 100644 --- a/src/picture.py +++ b/src/picture.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from PIL import Image import os @@ -7,22 +9,31 @@ from typing import TYPE_CHECKING if TYPE_CHECKING: from page import Page + from album import Album class Picture(): - def __init__(self, picture_path: Path, page = None, raw: Path|None = None): - self.large: Path = picture_path - self.small: Path = Path(picture_path.get_dirpath(), picture_path.get_name()[:-4] + "_small.jpg") - self.export_file: Path = Path(picture_path, ".out.pp3") - self.raw: Path|None = raw - self.page: Page = page + def __init__(self, picture_path: Path, page = None, raw: Path|None = None, albums: list[Album] = [], is_repertoried: bool = True): + self._large: Path = picture_path + self._small: Path = Path(picture_path.get_absolute_path()[:-4] + "_small.jpg") + self._export_file: Path = Path(picture_path.get_absolute_path() + ".out.pp3") + self._raw: Path|None = raw + self._page: Page = page + self._albums: list[Album] = albums + self._is_reperoried: bool = is_repertoried - def render(self) -> tuple[str, str, str]: - if not self.small.exist(): + def get_small(self): + if not self._small.exist(): self.gen_small() - return self.large.get_name(), self.small.get_name(), self.export_file.get_name() if self.export_file.exist() else None + return self._small + def get_large(self): + return self._large + + def get_export_file(self): + return self._export_file + def gen_small(self): im = Image.open(self.large.get_absolute_path()).convert("RGB") - im.save(self.small.get_absolute_path(), quality=95, optimize=True) + im.save(self._small.get_absolute_path(), quality=95, optimize=True) \ No newline at end of file diff --git a/src/templates/page.css b/src/templates/page.css index ef32410..aaef936 100644 --- a/src/templates/page.css +++ b/src/templates/page.css @@ -25,11 +25,11 @@ body * { width: 100%; } -.image-container { +.picture-container { margin-top: 10px; } -.image-container-element { +.picture-container-element { margin-top: 0px; } @@ -57,7 +57,7 @@ body * { } .navigation, -.meta-image { +.meta-picture { display: flex; flex-direction: row; justify-content: space-between; diff --git a/src/templates/page.jinja b/src/templates/page.jinja index 1094bf1..9388258 100644 --- a/src/templates/page.jinja +++ b/src/templates/page.jinja @@ -7,28 +7,28 @@ - {% if readme %} + {% if page._readme.exist() %}
- {{readme}} + {{page._render_readme()}}
{% endif %} - {% for image in images %} -
-
- -
- Large - {% if image|length > 2 %} - export file + {% for picture in page._pictures %} +
+
+ +
+ Large + {% if picture._export_file.exist() %} + export file {% endif %}