Metadata-Version: 2.4
Name: picture-of-the-day
Version: 0.4.0a4
Summary: REST API to get a picture of the day. This fetches photos from a Nextcloud Photos / Memories album. It let you specify to deliver a specific photo for a specific day, for unspecified days it chooses a random picture. 
Author-email: Michael 'Croydon' Keck <git@cr0ydon.eu>
Maintainer-email: Michael 'Croydon' Keck <git@cr0ydon.eu>
License-Expression: MIT
Project-URL: Homepage, https://github.com/Croydon/picture-of-the-day
Project-URL: Repository, https://github.com/Croydon/picture-of-the-day.git
Project-URL: Bug Tracker, https://github.com/Croydon/picture-of-the-day/issues
Project-URL: Changelog, https://github.com/Croydon/picture-of-the-day/blob/main/changelog.md
Keywords: picture,pictures,photoframe,eink,e-ink,picture-of-the-day
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.14
Requires-Python: >=3.14
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: fastapi<1.0.0,>=0.128.2
Requires-Dist: uvicorn<1.0.0,>=0.41.0
Requires-Dist: webdavclient3<4.0.0,>=3.14.7
Requires-Dist: pillow<13.0.0,>=12.1.1
Requires-Dist: exifread<4.0.0,>=3.5.1
Provides-Extra: tests
Requires-Dist: pytest<10.0.0,>=9.0.0; extra == "tests"
Provides-Extra: dev
Requires-Dist: build<2.0.0,>=1.4.0; extra == "dev"
Requires-Dist: fastapi[standard]<1.0.0,>=0.128.2; extra == "dev"
Dynamic: license-file

# Picture of the Day

This project provides a REST API endpoint for delivering a Picture of the Day.

It requires a connection to a Nextcloud instance with Nextcloud Photos being enabled. You can also use Memories for Nextcloud, but you need to have Nextcloud Photos enabled for photo album support (Memories and Photos are sharing their albums).

You can then specify an album from which the photos are fetched. Afterwards, you can assign for each calandar day a specific photo. For days for which there is no photo assigned, a random photo is choosen.

The app remembers which photos have already been delivered and prefers photos for the random assignment which haven't been picked yet. If there are no more new photos, the already delivered photos will be picked again.


## Motivation

My personal motivation for this app is to use it for an ESP32-S3-PhotoFrame, which has an e-ink display and therefore has ultra-low energy consumption and can run on a battery for months.


## Important

> [!CAUTION]  
> While this application has some form of basic authentication, I still recommend to only run this within a trusted home network without exposing it to the internet.


## Install

To install the latest release:  
`pip install picture-of-the-day`

To install from source:  
`pip install .`


## Developing & Testing

Install all dependencies:

`pip install -U .[dev,tests]`

Run tests:

`pytest -v`


## Run

`picture-of-the-day run`


## License

This project is licensed under the terms of the [MIT license](LICENSE).
