About
lazygal is another static web gallery generator written in Python.
It can be summed up by the following features :
- Commande line based (thus scriptable).
- Reusable engine (to make a GUI for instance).
- Lazy : do not build what's already there.
- Recursive : generates subgalleries.
- Does not change your original pictures directories (the source argument).
- Tells you what should not be in your generated directories (and delete it if you want to).
- Can generate multiple sizes to browse pictures according to your screen.
- Sort pictures in the same directory by EXIF date if available, else file modification time.
- Theming.
- XHTML and CSS compliance for provided themes.
- Support for per folder meta data.
- RSS feed generation for your album updates.
- Optional generation of ZIP archives of original pictures.
- Output internationalization.
- Optional breaking of big galleries (directories) on multiple pages.
- Multiple sorting options for pictures and galleries.
A huge gallery shows Lazygal in action : Album. Another example using album images: Photos from Japan.
Requirements
lazygal requires :
- Python >= 2.4.
- Python imaging library (PIL) >= 1.1.6.
- pyexiv2, a Python binding to exiv2, a library to access image metadata.
- Genshi >= 0.5, a Python toolkit for generation of output for the web.
- Python ElementTree or Python >= 2.5 for RSS feed generation.
Building a lazygal installation requires :
msgfmtfor translations.intltool-updateandxgettextare also needed to update translation files. All are included in the GNUgettextpackage.xsltprocto build manpages from docbook sources. It is included in the libxslt package.
Usage
Usage is straightforward :
usage: lazygal [options] albumdir
Options:
-h, --help Show this help message and exit.
--quiet Don't output anything except for errors.
--debug Output everything that lazygal is doing.
-o DEST_DIR, --output-directory=DEST_DIR
Directory where web pages, slides and thumbs will be
written (default is current directory).
-t THEME, --theme=THEME
Theme name (looked up in theme directory) or theme
full path.
--default-style=DEFAULT_STYLE
Default style to apply to the theme.
--template-vars=TPL_VARS
Common variables to load all templates with.
--clean-destination Clean destination directory of files that should not
be there.
-v, --version Display program version.
--check-all-dirs Exhaustively go through all directories regardless of
source modification time.
-s IMAGE_SIZE, --image-size=IMAGE_SIZE
Size of images, define as <name>=<x>x<y>,..., eg.
small=800x600,medium=1024x768. The special dimensions
0x0 use original size.
-T THUMBNAIL_SIZE, --thumbnail-size=THUMBNAIL_SIZE
Size of thumbnails, define as <x>x<y>, eg. 150x113.
-q QUALITY, --quality=QUALITY
Quality of generated JPEG images (default is 85).
-O, --original Include original photos in output.
--orig-base=ORIG_BASE
Do not copy original photos in output directory,
instead link them using submitted relative path as
base.
--puburl=PUB_URL Publication URL (only usefull for feed generation).
-m, --generate-metadata
Generate metadata description files where they don't
exist.
-n THUMBS_PER_PAGE, --thumbs-per-page=THUMBS_PER_PAGE
Maximum number of thumbs per index page. This enables
index pagination (0 is unlimited).
-z, --make-dir-zip Make a zip archive of original pictures for each
directory.
--webalbum-pic-bg=WEBALBUMPIC_BG
Webalbum picture background color. Default is
transparent, and implies the PNG format. Any other
value, e.g. red, white, blue, uses JPEG.
--optimize Run an extra optimization pass an each image.
--progressive Generate Progressive JPEG images.
--pic-sort-by=ORDER Sort order for images in a folder: filename, mtime, or
exif. Add ':reverse' to reverse the chosen order.
--subgal-sort-by=ORDER
Sort order for sub galleries in a folder: filename or
mtime. Add ':reverse' to reverse the chosen order.
If you want to force lazygal into checking a directory's contents, simply touch the source directory to modify its modification time :
$ touch album_source/gallery_to_check
Download & Changelog
- Lazygal 0.4.1 which adds those requested command line options.
- Lazygal 0.4 which can speak foreign languages.
- Lazygal 0.3.1 which fixes up some stuff.
- Lazygal 0.3 which brings messy directory pictures (the ones that are shown to represent a subgallery).
- Lazygal 0.2 which brings RSS feed generation and a real
Makefileinfrastructure. - Lazygal 0.1
(full log of changes may be browsed in Lazygal's repository browser)
Lazygal is part of Debian (and thus Ubuntu universe), which should make it one aptitude install away if you use one of those.
Contributing
Code
Code may be downloaded using darcs :
darcs get --partial http://sousmonlit.dyndns.org/~niol/repository/lazygal/
It is browsable online in Lazygal's repository browser.
lazygal may be used directly in the source repository, by calling the
lazygal.py script. Building simply prepares the translations and the man
pages. Updating a source checkout of the lazygal rpeository is done using
darcs pull in the source directory.
There should be an up to date snapshot of the repository available in the Snapshots directory.
Patches are very welcome and darcs makes it really easy to exchange changesets.
Translations
To start a new translation, for example cs_CZ, you can proceed as follows. The first script requires intltool-update and xgettext from the GNU gettext package.
$ devscripts/update-po
$ cp locale/lazygal.pot locale/cz_CZ.po
$ $EDITOR locale/cz_CZ.po
(do not bother committing or sending in changes to lazygal.pot, they contain a lot of noise because of changes in line numbers)
Another side-note : in templates, translatable strings are declared in a character noisy way (I hope to fix this one day). As an example :
<p><a href="..">Parent</a></p>
becomes
<p><a href="..">${_('Parent')}</a></p>
Bugs & feature requests
This project has too few users/contributors to justify the use of a dedicated bug tracking application.
For now, bug reports and feature requests may go in :
- by e-mail, directly to alexandre.rossi@gmail.com (please put
lazygalsomewhere in the subject), - through the Debian Bug Tracking System to which I think I subscribed,
- and even through
darcs sendas patches to a./TODOfile in the source, preferably withTODOat the beginning of the commit message.