memories/README.md

62 lines
4.4 KiB
Markdown
Raw Normal View History

# Memories
2022-08-13 01:58:37 +00:00
2022-08-20 01:07:39 +00:00
**📷 Yet another photo management app for Nextcloud**
2022-08-13 01:58:37 +00:00
2022-09-08 01:40:24 +00:00
![Screenshot](appinfo/screencap.webp)
2022-08-18 03:36:37 +00:00
2022-08-16 01:28:40 +00:00
## How is this different?
2022-08-13 01:58:37 +00:00
2022-08-17 21:45:01 +00:00
* **📸 Photo and Video Timeline**: Sorts photos by date taken, parsed from Exif data.
2022-08-16 01:28:40 +00:00
* **🤔 Quick Recap**: Jump to anywhere in the timeline instantly.
2022-09-08 23:57:50 +00:00
* **🖼️ Folders**: Browse your and shared folders with a similar, efficient timeline.
* **🎦 Slideshow**: View photos from your timeline and folders easily.
2022-08-20 01:10:28 +00:00
* **📱 Mobile Support**: Relive your memories on devices of any shape and size through the web app.
2022-09-08 01:40:24 +00:00
* **🗑️ Recycle**: Select and delete multiple photos and videos at once.
2022-09-13 03:42:02 +00:00
* **⚡️ Fast**: Memories is extremely fast. Period. More details below.
2022-08-13 01:58:37 +00:00
2022-08-16 01:28:40 +00:00
## 🚀 Installation
2022-08-13 01:58:37 +00:00
2022-09-09 00:46:16 +00:00
1. Install the app from the Nextcloud app store
2022-09-13 19:23:20 +00:00
1. ⚒️ Install `exiftool` (see below).
1. Run `php ./occ memories:index` to generate metadata indices for existing photos.
2022-08-20 01:07:39 +00:00
1. Open the 📷 Memories app in Nextcloud and set the directory containing your photos. Photos from this directory will be displayed in the timeline, including any photos in nested subdirectories.
2022-09-12 06:22:56 +00:00
1. Installing the [preview generator](https://github.com/rullzer/previewgenerator) for pre-generating thumbnails is strongly recommended.
2022-08-13 01:58:37 +00:00
2022-09-13 19:23:20 +00:00
## 🔨 Installing Dependencies
The exact steps depend on your Nextcloud platform. If you use Docker for your Nextcloud instance, you can install Exiftool by using a custom docker image.
- **Ubuntu/Debian**: `sudo apt install libimage-exiftool-perl`
- **Fedora**: `sudo dnf install perl-Image-ExifTool`
- **Arch Linux**: `sudo pacman -S perl-image-exiftool`
- **Alpine**: `apk add --no-cache exiftool`
- **MacOS**: `brew install exiftool`
- **FreeBSD**: `sudo pkg install p5-Image-ExifTool`
2022-08-16 01:28:40 +00:00
## 🏗 Development setup
2022-08-13 01:58:37 +00:00
2022-08-16 01:28:40 +00:00
1. ☁ Clone this into your `apps` folder of your Nextcloud.
1. 👩‍💻 In a terminal, run the command `make dev-setup` to install the dependencies.
1. 🏗 Then to build the Javascript whenever you make changes, run `make build-js`. To create a pull request use `make build-js-production`. Watch changes with: `make watch-js`.
1. ✅ Enable the app through the app management of your Nextcloud.
1. 🎉 Partytime!
2022-08-13 01:58:37 +00:00
2022-09-13 07:41:06 +00:00
## 🤔 Why a separate app?
2022-08-16 01:59:28 +00:00
The approach of this app is fundamentally different from the official Nextcloud Photos app, which is very lightweight and works entirely using webdav. This app instead maintains special metadata in a separate table on the backend, and thus can be considered to have different objectives.
2022-08-13 01:58:37 +00:00
2022-09-13 07:41:06 +00:00
## ⚡ Performance
2022-09-13 18:49:10 +00:00
- Once properly configured, Memories is **extremely fast**, possibly one of the fastest web photo viewers.
- On a server with relatively cheap hardware (`Intel Pentium G6400 / 8GB RAM / SSD`), loading the timeline takes only `~400ms` without cache on a laptop (`Intel Core i5-1035G1 / Windows 11 / Chrome`) for a library of `~17000 photos` totaling `100GB`. The test was performed on Nextcloud 24 with `nginx`, `php-fpm` and `mariadb` running in Docker.
2022-09-13 03:42:02 +00:00
- For best performance, install the [preview generator](https://github.com/rullzer/previewgenerator) and make sure HTTP/2 is enabled for your Nextcloud instance.
2022-09-13 07:41:06 +00:00
## 📝 Notes
2022-09-13 03:42:02 +00:00
- You may need to configure the Nextcloud preview generator and Imagemagick / ffmpeg to support all types of images and videos (e.g. HEIC). If using the official docker image, add `OC\Preview\HEIC` to `enabledPreviewProviders` in your `config.php`.
- If local time is not found in the photo (especially for videos), the server timezone is used.
2022-09-13 18:49:18 +00:00
- The app can work with external storage for photos.
- The photos in the external storage needs to be at the same _relative_ path that is configured for the timeline. For example, if your storage is mounted as `/External/` and your photos are in `/External/MyPhotos/`, then you need to configure the timeline to be `MyPhotos/`. This will look for `MyPhotos/` in all external storages as well as your root home directory, and aggregate these photos.
- You also need to set up a cron job for the index command if you:
- Use the same timeline for multiple users.
- Delete and restore files from the external storage.
- If you add any photos from outside Nextcloud, you must run the scan and index commands.
- This function is experimental and may not work as expected. Please report any issues.
2022-08-16 02:13:04 +00:00
2022-09-13 07:41:06 +00:00
## Special Thanks
2022-08-16 01:28:40 +00:00
Nextcloud team. At least one half of the code is based on the work of the [Nextcloud Photos](https://github.com/nextcloud/photos).