Templated HTML galleries based on in-photo metadata
Project description
Photoweb
Photoweb creates HTML galleries based on in-photo metadata, using flexible templates. What's different about it?
- It's easy to add new photos; just drop them in the folder and re-run.
- You don't have to track metadata; it comes from the photos themselves, using standard embedded metadata (EXIF, IPTC, XMP).
- It includes specialized support for titles and descriptions from Apple Photos.
- It's easy to modify the templates to make your photos look great.
- It supports modern web features like dark mode, keyboard navigation, and responsive side-by-side layouts out of the box.
Installation
Photoweb needs Python.
It's easiest with pipx:
pipx install photoweb
Usage
To generate the HTML for a gallery, call it from the command line:
photoweb .
You can generate multiple galleries at once:
photoweb beach hawaii snow
When you first generate a gallery, you can specify the page title and description, which will be used in the template:
photoweb -p "At the Beach" -d "We went to the beach for a weekend. Fun!" .
The page metadata will be saved in a file (md.json) for use next time you run photoweb.
Creating and Using Templates
By default, the bundled default template will be used. You can edit this, or create new templates, using them with the -t option:
photoweb -t "my template" .
To bootstrap your own template, you can copy the default one:
photoweb --copy-templates ./my-custom-design
Templates are directories with the following files in them:
- md.json - a configuration file
- gallery.html - the overview page
- detail.html - a single photo page
- style.css - visual styling
- photoweb.js - interactive logic (for keyboard navigation and zoom)
Take a look at the default template to get an idea of how to create your own.
Navigation and Shortcuts
When viewing a photo in the generated gallery:
- Left/Right Arrow keys: Previous/Next photo.
- Escape: Return to the gallery index.
- Click/Tap: Toggle between fit-to-screen and full-size view.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file photoweb-0.5.4.tar.gz.
File metadata
- Download URL: photoweb-0.5.4.tar.gz
- Upload date:
- Size: 14.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d47bea81dd8513e70c5acaf37681dba33f808b3399a906b31ee6bc8d1622b47
|
|
| MD5 |
93fe46102335f2fedced5e283c996516
|
|
| BLAKE2b-256 |
3683d1c7f954237d966db8d8b47989182f30241216d1db1681727fcee1a4d23c
|
Provenance
The following attestation bundles were made for photoweb-0.5.4.tar.gz:
Publisher:
publish.yml on mnot/photoweb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
photoweb-0.5.4.tar.gz -
Subject digest:
8d47bea81dd8513e70c5acaf37681dba33f808b3399a906b31ee6bc8d1622b47 - Sigstore transparency entry: 1237871085
- Sigstore integration time:
-
Permalink:
mnot/photoweb@4f532fb88447efc21e26ee405d98a40b0c5b51cd -
Branch / Tag:
refs/tags/v0.5.4 - Owner: https://github.com/mnot
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4f532fb88447efc21e26ee405d98a40b0c5b51cd -
Trigger Event:
push
-
Statement type:
File details
Details for the file photoweb-0.5.4-py3-none-any.whl.
File metadata
- Download URL: photoweb-0.5.4-py3-none-any.whl
- Upload date:
- Size: 16.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52d9b6ea1f302e5e76013cc71c0b7c4eb667474dc1ed258c92c81f52b73a4561
|
|
| MD5 |
6338fcb67ca966fd732fd4908f85cc7f
|
|
| BLAKE2b-256 |
e9b518a989f529a33b7a377ef47f1e0906c1a9046382eaccc3ab817f14843dd1
|
Provenance
The following attestation bundles were made for photoweb-0.5.4-py3-none-any.whl:
Publisher:
publish.yml on mnot/photoweb
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
photoweb-0.5.4-py3-none-any.whl -
Subject digest:
52d9b6ea1f302e5e76013cc71c0b7c4eb667474dc1ed258c92c81f52b73a4561 - Sigstore transparency entry: 1237871090
- Sigstore integration time:
-
Permalink:
mnot/photoweb@4f532fb88447efc21e26ee405d98a40b0c5b51cd -
Branch / Tag:
refs/tags/v0.5.4 - Owner: https://github.com/mnot
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@4f532fb88447efc21e26ee405d98a40b0c5b51cd -
Trigger Event:
push
-
Statement type: