add support for album descriptions
This commit is contained in:
parent
03debf05bc
commit
7ae5d8271c
4 changed files with 32 additions and 3 deletions
|
@ -7,6 +7,7 @@ from typing import Iterator, Optional
|
|||
from jinja2 import Environment, FileSystemLoader, select_autoescape
|
||||
from PIL import Image, UnidentifiedImageError
|
||||
from rich.progress import Progress, track
|
||||
from markdown import markdown
|
||||
|
||||
from photojawn.config import Config
|
||||
|
||||
|
@ -19,6 +20,7 @@ class ImageDirectory:
|
|||
children: list["ImageDirectory"]
|
||||
images: list["ImagePath"]
|
||||
is_root: bool = False
|
||||
description: str = ""
|
||||
|
||||
cover_path: Optional["ImagePath"] = None
|
||||
|
||||
|
@ -105,7 +107,11 @@ def find_images(root_path: Path) -> ImageDirectory:
|
|||
|
||||
for filename in sorted(filenames):
|
||||
file_path = dirpath / filename
|
||||
if is_image(file_path):
|
||||
if filename == "description.txt":
|
||||
image_dir.description = file_path.read_text()
|
||||
elif filename == "description.md":
|
||||
image_dir.description = markdown(file_path.read_text())
|
||||
elif is_image(file_path):
|
||||
ip = ImagePath(file_path)
|
||||
|
||||
# Set a cover image for the album. Use "cover.jpg" if one exists,
|
||||
|
@ -154,7 +160,9 @@ def generate_thumbnails(config: Config, root_dir: ImageDirectory) -> None:
|
|||
thumb_img = orig_img.copy()
|
||||
thumb_img.thumbnail(config.thumbnail_size)
|
||||
thumb_img.save(thumb_path)
|
||||
logger.info(f'Generated thumbnail size "{image_path.path}" -> "{thumb_path}"')
|
||||
logger.info(
|
||||
f'Generated thumbnail size "{image_path.path}" -> "{thumb_path}"'
|
||||
)
|
||||
|
||||
screen_path = image_path.display_path()
|
||||
if not screen_path.exists() or not config.quick:
|
||||
|
|
|
@ -12,6 +12,11 @@
|
|||
{% if not album_dir.is_root %}
|
||||
<h1>{{album_dir.path.name}}</h1>
|
||||
{% endif %}
|
||||
|
||||
{% if album_dir.description %}
|
||||
{{ album_dir.description | safe }}
|
||||
{% endif %}
|
||||
|
||||
{% if album_dir.children %}
|
||||
<div id="album-children">
|
||||
{% for child in album_dir.children %}
|
||||
|
|
17
poetry.lock
generated
17
poetry.lock
generated
|
@ -103,6 +103,21 @@ MarkupSafe = ">=2.0"
|
|||
[package.extras]
|
||||
i18n = ["Babel (>=2.7)"]
|
||||
|
||||
[[package]]
|
||||
name = "markdown"
|
||||
version = "3.6"
|
||||
description = "Python implementation of John Gruber's Markdown."
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
files = [
|
||||
{file = "Markdown-3.6-py3-none-any.whl", hash = "sha256:48f276f4d8cfb8ce6527c8f79e2ee29708508bf4d40aa410fbc3b4ee832c850f"},
|
||||
{file = "Markdown-3.6.tar.gz", hash = "sha256:ed4f41f6daecbeeb96e576ce414c41d2d876daa9a16cb35fa8ed8c2ddfad0224"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
docs = ["mdx-gh-links (>=0.2)", "mkdocs (>=1.5)", "mkdocs-gen-files", "mkdocs-literate-nav", "mkdocs-nature (>=0.6)", "mkdocs-section-index", "mkdocstrings[python]"]
|
||||
testing = ["coverage", "pyyaml"]
|
||||
|
||||
[[package]]
|
||||
name = "markdown-it-py"
|
||||
version = "3.0.0"
|
||||
|
@ -565,4 +580,4 @@ files = [
|
|||
[metadata]
|
||||
lock-version = "2.0"
|
||||
python-versions = "^3.12"
|
||||
content-hash = "773580221534dd8152d5385b517f068c9a92fc905eaf7fe0356a97daaa0b7f96"
|
||||
content-hash = "84f4661f5720da5427ac7bcd4e50674ca6017413fdada09d6bd7ea9b8f650818"
|
||||
|
|
|
@ -17,6 +17,7 @@ jinja2 = "^3.1.4"
|
|||
pillow = "^10.4.0"
|
||||
rich = "^13.7.1"
|
||||
pyyaml = "^6.0.1"
|
||||
markdown = "^3.6"
|
||||
|
||||
[tool.poetry.group.dev.dependencies]
|
||||
pytest = "*"
|
||||
|
|
Loading…
Add table
Reference in a new issue