Aggregates images taken this week, from previous years and presents them on a slideshow.
100K+
Aggregate images taken this week, from previous years and presents them on a web page with a slideshow.
When I migrated my photo collection from google photos to a locally hosted instance of photoprism, I missed the automatically generated slideshow feature of google photos, here it is now.
The meta information of all images are read at startup and cached in memory. When the slideshow is opened, images from this calendar week from previous years are displayed. If no images from the calendar year are found, random images are displayed.
Docker Example:
docker run -p 8080:8080 \
-v /path/to/pictures:/resources \
-e SLIDESHOW_INTERVAL=60 \
-e WEATHER_ENABLED=true \
-e OPEN_WEATHER_MAP_API_KEY=<YOUR_KEY> \
rouhim/this-week-in-past
Docker compose example:
services:
this-week-in-past:
image: rouhim/this-week-in-past
volumes:
- /path/to/pictures:/resources:ro # mount read only
ports:
- "8080:8080"
environment:
SLIDESHOW_INTERVAL: 10
Download the latest release for your system from the releases page:
# Assuming you run a x86/x64 system, if not adjust the binary name to download
LATEST_VERSION=$(curl -L -s -H 'Accept: application/json' https://github.com/RouHim/this-week-in-past/releases/latest | \
sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/') && \
curl -L -o this-week-in-past https://github.com/RouHim/this-week-in-past/releases/download/$LATEST_VERSION/this-week-in-past-x86_64-unknown-linux-musl && \
chmod +x this-week-in-past
Create a folder to store the application data:
mkdir data
Start the application with:
RESOURCE_PATHS=/path/to/pictures \
DATA_FOLDER=data \
SLIDESHOW_INTERVAL=60 \
./this-week-in-past
Offline city lookup: For native execution download the derived place dataset once:
curl -fL https://github.com/RouHim/this-week-in-past/releases/latest/download/geodata.txt -o geodata.txtor build it from the upstream GeoNames dumps (downloads
cities500.zipandallCountries.ziponce, result ~17 MB):bash .container/build-geodata.sh ./geodata.txtand run with
GEODATA_PATH=$(pwd)/geodata.txt(defaults to/geodata.txtin the container). Without the file city resolution is disabled with awarn!log.
Since the binary is compiled completely statically, there are no dependencies on system libraries like glibc.
BREAKING CHANGE:
BIGDATA_CLOUD_API_KEYis deprecated and ignored since the offline city-resolution migration. Remove it fromdocker run -e/compose.yaml/.envat your convenience — offline lookup needs no API key or network.CITIES500_PATHis no longer read: the app refuses to start while it is set, and the error names the variable andGEODATA_PATH. Native execution now requires the one-time download above; container image already bakes/geodata.txt(+~17 MB).
All configuration is done via environment variables:
| Name | Description | Default value | Can be overwritten in URL |
|---|---|---|---|
| RESOURCE_PATHS | A list of folders from which the images should be loaded (comma separated) | /resources (Container only) | |
| DATA_FOLDER | Path to a folder where the data should be stored, needs read/write access | /data (Container only) | |
| PORT | Port on which the application should listen | 8080 | |
| SLIDESHOW_INTERVAL | Interval of the slideshow in seconds | 30 | x |
| REFRESH_INTERVAL | Interval how often the page should be reloaded in minutes (triggers a new slideshow playlist) | 360 (6h) | |
| DATE_FORMAT | Date format of the image taken date (https://docs.rs/chrono/0.4.19/chrono/format/strftime/index.html) | %d.%m.%Y | |
| BIGDATA_CLOUD_API_KEY | Deprecated — ignored; the offline GeoNames place dataset (CC BY 4.0, https://www.geonames.org) is used. Remove from env/compose at your convenience. | ||
| GEODATA_PATH | Path to the derived #twip-places-v1 place dataset (GeoNames cities500.zip + allCountries.zip) for offline city/district lookup; the container bakes /geodata.txt, native installs fetch or build it (see "Offline city lookup"). | /geodata.txt | |
| HOME_COUNTRY | Home country (ISO 3166-1 alpha-2 code, e.g. DE): same-country photos show no country suffix, foreign photos append the English country name. Unset shows no country suffix; invalid codes fail fast at startup. | ||
| WEATHER_ENABLED | Indicates if weather should be shown in the slideshow | false | x |
| WEATHER_LOCATION | Name of a city | Berlin | |
| WEATHER_LANGUAGE | Weather language (ISO_639-1 two digit code) | en | |
| WEATHER_UNIT | Weather units (metric or imperial) | metric | |
| HOME_ASSISTANT_BASE_URL | Home assistant base url (e.g.: http://192.168.0.123:8123) | ||
| HOME_ASSISTANT_ENTITY_ID | Home assistant entity id to load the weather from (e.g.: sensor.outside_temperature) | ||
| HOME_ASSISTANT_API_TOKEN | Home assistant api access token | ||
| SHOW_HIDE_BUTTON | Show the hide button on the slideshow | false | x |
| RANDOM_SLIDESHOW | Show only random images instead of images from this week in previous years | false | x |
| IGNORE_FOLDER_MARKER_FILES | A list of file names which causes the folder in which the file is located to be ignored. (comma separated) | .ignore | |
| IGNORE_FOLDER_REGEX | A regular expression that causes the folder to be ignored if it matches | ||
| PRELOAD_IMAGES | Indicates if images should be preloaded during the slideshow | false |
Some parameters, as marked in the table, can be overwritten as URL parameter e.g.: http://localhost:8080/?SLIDESHOW_INTERVAL=10&SHOW_HIDE_BUTTON=false
There are two ways to ignore folders:
IGNORE_FOLDER_MARKER_FILES, the folder is
ignored.IGNORE_FOLDER_REGEX, the folder is
ignored.If a folder is ignored, all its sub-elements (files and folders) are also ignored.
The slideshow can be controlled by clicking on invisible zones on the screen. These zones are divided into three areas:
The slideshow will automatically continue after the
REFRESH_INTERVALhas passed.
Indexing scales with storage performance
Slideshow change scales with CPU performance
cities500.zip and allCountries.zip (filtered to populated places incl. PPLX quarters) — © GeoNames (CC BY 4.0 https://creativecommons.org/licenses/by/4.0/, https://www.geonames.org).Content type
Image
Digest
sha256:779f1d7d1…
Size
10.1 MB
Last updated
8 days ago
docker pull rouhim/this-week-in-past