This week in past logo

This week in past

  •  0 ratings
In category: Photo and Video Galleries

About This week in past

Aggregates images taken this week, from previous years and presents them on a web page with a simple slideshow.

  •   428  
  •   0  
  •   0  
  •   0  
Github stats:
  •  Commits: N/A  
  •   N/A  
  •   N/A  
  •  Latest commit: N/A  

Deploy this app to Linode with a free $100 credit!

Languages/Platforms/Technologies:
Lincenses:

More about This week in past

CI CI Docker Pulls Docker Image Size (tag) os-arch Online demo Donate me Awesome

Aggregate images taken this week, from previous years and presents them on a web page with slideshow.

Motivation

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.

How it works

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.

Performance

Example 1

  • Hardware: i3-12100T, 3xWD_BLACK SN750 (RAID-Z1), 32GB RAM
  • Photos: ~80k
  • Indexing: 6 seconds
  • Uncached slideshow change: < 1 second

Example 2

  • Hardware: Raspberry Pi Model B, Class 10 SD Card, 1GHz (OC) 32-Bit arm/v6, 512MB RAM
  • Photos: ~6k
  • Indexing: 38 seconds
  • Uncached slideshow change: ~7 seconds

Example 3

  • Hardware: LG G3 (Android Smartphone), Internal Storage, Snapdragon 801 4C 32-Bit arm/v7, 3GB RAM
  • Photos: ~8k
  • Indexing: 50 seconds
  • Uncached slideshow change: < 1 second

Indexing scales with storage performance

Slideshow change scales with CPU performance

Run the application

Native execution

Since the binary is compiled completely statically, there are no dependencies on system libraries like glibc.

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

Docker

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> \
        -e BIGDATA_CLOUD_API_KEY=<YOUR_KEY> \
        rouhim/this-week-in-past

Docker compose example:

version: "3.9"

services:
  this-week-in-past:
    image: rouhim/this-week-in-past
    volumes:
      - /path/to/pictures:/resources:ro # mount read only
    ports:
      - "8080:8080"

Configuration

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 to 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 180
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 To resolve geo coordinates to city name. Obtain here: https://www.bigdatacloud.com
OPEN_WEATHER_MAP_API_KEY To receive weather live data. Obtain here: https://openweathermap.org/api
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) 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

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

Resources

Comments (0)

Please login to join the discussion on this project.

This week in past Reviews (0)

Overall Rating

None

based on 0 ratings

Please login to review this project.

No reviews for this project yet.

↑ back to top

pCloud Lifetime

Popular Projects

FluxBB

in Social Networks and Forums
 33k    0    0    0  

Nextcloud

in File Transfer & Synchronization
 21k    1    1    0  

Libreddit

in Social Networks and Forums
 7k    0    1    0  

Dashboard

in Personal Dashboards
 6k    0    0    0  

Audiobookshelf

in Audio Streaming
 6k    0    1    0  

CasaOS

in Self-hosting Solutions
 5k    0    0    0  

Mediagoblin

in Photo and Video Galleries
 4k    0    0    0  

Most Discussed

Nextcloud

in File Transfer & Synchronization
 21k    1    1    0  

Tube Archivist

in Automation
 3k    0    1    0  

OneDev

in Project Management
 2k    0    0    0  

iodine

in Proxy
 2k    0    0    0  

Alf.io

in Booking and Scheduling
 2k    0    0    0  

sysPass

in Password Managers
 1k    0    0    0  

Misskey

in Social Networks and Forums
 2k    0    0    0  
Linux VPS from $11/yr.
RackNerd VPS for $11.38/mo

Top Rated Projects

Gitea

 1 rating
in Project Management

Bagisto

 1 rating
in E-commerce

LinkAce

 1 rating
in Bookmarks and Link Sharing

Pydio

 1 rating
in File Transfer & Synchronization

Audiobookshelf

 1 rating
in Audio Streaming

Nextcloud

 1 rating
in File Transfer & Synchronization

Seafile

 1 rating
in File Transfer & Synchronization

Categories

You May Also Be Interested In

Zenphoto logo
Zenphoto cover

Zenphoto

Open-source gallery and CMS project.

Mejiro logo
Mejiro cover

Mejiro

An easy-to-use PHP web application for instant photo publis…

Fussel logo
Fussel cover

Fussel

Fussel is a static photo gallery generator. Easily generate…