Giter VIP home page Giter VIP logo

spis's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

spis's Issues

Follow symbolic links

I'm running spis on a linux server and my media folders are located in different paths. I tried to link them into the specified media folder but spis did not follow the symbolic links. I was able to confirm that in the Code as Walkdir does not follow symbolic links by default, one has to specify it with .follow_links(true). Is it possible that you would add that to your next release?

Request for software for managing pdf/scanned documents.

Thanks for SPIS software, I am enjoying this software on my low end machine. I want to request the author of SPIS software please make pdf/scanned documents manager type of app with almost same type of functionality SPIS using. I do not want OCR type functionality/upload via web app. I just want almost SPIS type of functionality only 4-5 predefined fields to query the documents ( like user name, type of document, tag etc.).

Docker image not available

Hi,
I wanted to try, using the easiest way.

docker pull ghcr.io/gbbirkisson/spis:latest
Error response from daemon: manifest unknown

Is the Docker image available?
Cheers

Collections

First of all I really like the simplicity of your gallery and see the appeal of the timeline style of presenting the pictures.

When I take pictures it is either "random" or in a context for example a special event or a trip to somewhere. For me the timeline approach is very neat for the random style picture or if I want so scroll through memories of a specific year/month/day. However I realized that if I want to see pictures from a specific event/trip/shooting it gets a bit hard to find the right date.

Have you thought about introducing "collections" that show only pictures found in a subfolder? Maybe with the option to whitelist or blacklist subfolders you want or don't want to show up. They can still show up in the timeline, the idea is just to have another way to limit the pictures you want to see.

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

cargo
Cargo.toml
  • tracing 0.1
  • tracing-subscriber 0.3
  • dotenv 0.15
  • color-eyre 0.6
  • thiserror 1.0.57
  • config 0.14
  • clap 4
  • derive_more 0.99.17
  • tokio 1
  • async-cron-scheduler 2
  • sqlx 0.7
  • actix-web 4
  • tracing-actix-web 0.7.9
  • askama 0.12.1
  • serde 1
  • serde_urlencoded 0.7.1
  • walkdir 2
  • rayon 1
  • uuid 1
  • chrono 0.4.32
  • notify 6.1.1
  • image 0.25.0
  • kamadak-exif 0.5
  • which 6.0
  • subprocess 0.2
  • md-5 0.10
  • include_dir 0.7.3
  • actix 0.13.1
  • actix-web-actors 4.2.0
  • reqwest 0.12
  • tempfile 3
docker-compose
examples/docker/docker-compose.yml
dockerfile
docker/Dockerfile
  • nginx 1.27.0
github-actions
.github/actions/toolchain/action.yml
  • jdx/mise-action v2
  • Swatinem/rust-cache v2
.github/workflows/ci.yml
  • actions/checkout v4
  • HatsuneMiku3939/direnv-action v1
  • codecov/codecov-action v4
.github/workflows/conventional-commit.yml
  • amannn/action-semantic-pull-request v5
  • marocchino/sticky-pull-request-comment v2
  • marocchino/sticky-pull-request-comment v2
.github/workflows/release-please.yml
  • google-github-actions/release-please-action v4
.github/workflows/release.yml
  • actions/checkout v4
  • ScribeMD/docker-cache 0.5.0
  • houseabsolute/actions-rust-cross v0
  • actions/upload-artifact v4
  • actions/checkout v4
  • actions/download-artifact v4
  • docker/setup-qemu-action v3
  • docker/setup-buildx-action v3
  • docker/login-action v3
  • docker/build-push-action v5
  • AButler/upload-release-assets v3.0
.github/workflows/stale.yml
  • actions/stale v9
regex
rust-toolchain.toml
  • rust 1.78.0

  • Check this box to trigger a request for Renovate to run again on this repository

OS file watch limit reached

When starting in Docker on Synology:

2024-01-12 08:21:31,014 INFO spawned: 'spis' with pid 979
2024-01-12T08:21:31.028597Z INFO spis_server: Starting spis version 0.5.7
2024-01-12T08:21:31.028909Z INFO spis_server: Media dir: "/var/lib/spis/media"
2024-01-12T08:21:31.028922Z INFO spis_server: Thumb dir: "/var/lib/spis/data/thumbnails"
2024-01-12T08:21:31.028931Z INFO spis_server: Data file: "/var/lib/spis/data/spis.db"
2024-01-12T08:21:31.028953Z INFO spis_server: Setting up DB
2024-01-12T08:21:31.031012Z INFO spis_server: Setting up media processing
2024-01-12T08:21:31.031498Z INFO spis_server: Setting up file watcher
2024-01-12T08:21:31.883209Z WARN spis_server::pipeline: file_channel was closed
Error:
0: Failed to start file watcher
1: OS file watch limit reached. about ["/var/lib/spis/media/2022/@eaDir/IMG_0168.HEIC"]

Location:
spis-server/src/main.rs:89

Backtrace omitted. Run with RUST_BACKTRACE=1 environment variable to display it.
Run with RUST_BACKTRACE=full to include source snippets.
2024-01-12 08:21:32,010 WARN exited: spis (exit status 1; not expected)
2024-01-12 08:21:33,011 INFO gave up: spis entered FATAL state, too many start retries too quickly

Alternative approach to access & run SPIS without webserver

Thanks for making SPIS software & I am using it at my home and enjoying it very much.
This time My SPIS software heavily relies on NGINX server as it broadcast/share SPIS required data files image files within LAN network. Is it possible we can eliminate installation full flanged NGINX webserver. As I can maintained all required files with in static web address with the help of either home-assistant, Python simple Web Server or with https://filebrowser.org/ type of software. In SPIS required environment variable we can give these static web addresses then may be we can eliminate web server requirement. This approach may be beneficial by reducing resource consumption also very helpful for uploading/downloading photos to headless server. Please tell me which SPIS environment we can give to SPIS during installation & in which format those files allowed to accessible Like it only need HTTP type connection or FTP, NFS type formats also allowed. thanks

Multiple users

Could it be possible to add a feature where there are more than one users, each one accessing a different directory and have maybe an account or just the owner point each interface to a different port? I know that it might be forcing the project out of its original idea but I think it's a feature worth having.

Autoplay animated gif thumbnail of video when mouse hovers

This seems like a perfect project for me, except for the video part.

I have a somewhat large collection of short footages (3-15 seconds) - about 5TB of video clips much like stock videos at sites like 123rf or Adobe stock or storyblocks.

Clicking and viewing the videos one by one to find what you want gets old really quick when you have a ton of files like
Guy A getting angry.mp4
Guy A sad.mp4
Guy A reading document.mp4
And so on

It would be a godsend if this feature is implemented.

Cheers and thanks for reading at least!

make service file for spis systemctl

I am very happy using spis on my machine with docker format. Now I want to install spis on debian machine directly. I have downloaded spis binary & install niginx & sqlite on my machine. Now I want that spis server run automatically after each time system reboot with systemctl command please guide me & help me to make service file for spis “ sudo nano /etc/systemd/system/spis.service” . I remembered I used for zigbee2mqtt this service file
`
[Unit]
Description=zigbee2mqtt
After=network.target

[Service]
Environment=NODE_ENV=production
ExecStart=/usr/bin/npm start
WorkingDirectory=/opt/zigbee2mqtt
StandardOutput=inherit
StandardError=inherit
Restart=always
RestartSec=10s
User=pi

[Install]
WantedBy=multi-user.target

`
Please modify this service file for spis software binary.
I save spis binary in this location “/mnt/mydata/spis/spis-server-x86_64-unknown-linux-gnu”
I want spis dedicated data folder “/mnt/mydata/spis_data/”
My images are at “/mnt/mydata/my_photos” want photos are read only permission for spis
Please tell me how I can pass these location values to spis & binary software control by ststemctl. thanks

Better Installation Instructions

The project looks perfect for my use-case, although I have a little trouble in understanding how to install and use it.

The docker example or git cloning it and deployment in a vps, it seems a little vague. Would appreciate step-by-step instructions.

Thanks!

Video support in Docker

Hi, thanks for your work! To get video support, both ffmpeg and ffprobe must be present in path! How can I provide ffmpeg and ffprobe in Docker self-host version?

Support files with no EXIF data

Currently SPIS will fail processing media that has no EXIF data.

Aug 01 14:19:57 lxc501 spis_active[1197]: 2023-08-01T13:19:57.907249Z ERROR spis_server::pipeline: Failed processing media: "/mnt/dietpi_userdata/plex_data/photos/IMG-20190526-WA00                           88.jpg"
Aug 01 14:19:57 lxc501 spis_active[1197]:    0: Failed to read exif data
Aug 01 14:19:57 lxc501 spis_active[1197]:    1: No Exif data found in JPEG
Aug 01 14:19:57 lxc501 spis_active[1197]: Location:
Aug 01 14:19:57 lxc501 spis_active[1197]:    spis-server/src/media/images/mod.rs:24

Create a fallback mechanism, using file creation date perhaps.

[Error] Failed processing media

2023-06-22T04:39:15.366897Z  INFO spis_server::media::processing: Processing done, waiting for grace period
2023-06-22T04:39:16.362099Z  INFO spis_server::media: Processed 1 files in total
2023-06-22T04:39:16.363656Z  INFO spis_server::media: DB counts total:    0
2023-06-22T04:39:16.363806Z  INFO spis_server::media: Media processing ended after 5 seconds
2023-06-22T04:39:16.363754Z  INFO spis_server: Processing schedule triggered: * * * * * *
2023-06-22T04:39:16.363843Z  INFO spis_server: Processing schedule finished: * * * * * *
2023-06-22T04:39:16.363847Z  INFO spis_server::media: Media processing started
2023-06-22T04:39:16.369150Z ERROR spis_server::media::processing: Failed processing media /var/lib/spis/media/screen1.jpg: failed to read exif
2023-06-22T04:39:16.369875Z  INFO spis_server::media::processing: Processing done, waiting for grace period

When I ran the docker image with your gallery image, which is screen1.jpg, the error occured and nothing is showed up.

image


Environments

  • spis docker image version: v0.4.8

user "nginx" missing in docker image

Hi,

I tried to run the docker image.
nginx cannot start since the user nginx is not existing. Do i do anything wrong here?

Any help would be appreciated.

i@raspberrypi:/srv/dev-disk-by-label-nas1/spis_working_dir $ sudo docker run -it -p 8080:8080 -v /srv/dev-disk-by-label-nas1/nasfs/Bilder:/var/lib/spis/media -v /srv/dev-disk-by-label-nas1/spis_working_dir:/var/lib/spis/data ghcr.io/gbbirkisson/spis
2024-03-03 17:35:45,941 CRIT Supervisor is running as root.  Privileges were not dropped because no user is specified in the config file.  If you intend to run as root, you can set user=root in the config file to avoid this message.
2024-03-03 17:35:45,950 INFO supervisord started with pid 1
2024-03-03 17:35:46,960 INFO spawned: 'nginx' with pid 7
2024-03-03 17:35:46,972 INFO spawned: 'spis' with pid 8
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/15-local-resolvers.envsh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/20-envsubst-on-templates.sh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/30-tune-worker-processes.sh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/40-user-fix.sh, not executable
/docker-entrypoint.sh: Configuration complete; ready for start up
2024-03-03T17:35:47.044662Z  INFO spis_server: Starting spis version 0.6.0
2024-03-03T17:35:47.047675Z  INFO spis_server: Media dir: "/var/lib/spis/media"
2024-03-03T17:35:47.048439Z  INFO spis_server: Thumb dir: "/var/lib/spis/data/thumbnails"
2024-03-03T17:35:47.048679Z  INFO spis_server: Data file: "/var/lib/spis/data/spis.db"
2024-03-03T17:35:47.048736Z  INFO spis_server: Setting up DB
2024-03-03T17:35:47.056933Z  INFO spis_server: Setting up media processing
2024/03/03 17:35:47 [emerg] 7#7: getpwnam("nginx") failed in /etc/nginx/nginx.conf:2
2024-03-03T17:35:47.059612Z  INFO spis_server: Setting up file watcher
2024-03-03 17:35:47,063 WARN exited: nginx (exit status 1; not expected)
2024-03-03T17:35:47.669139Z  INFO spis_server: Setting up file walker
2024-03-03T17:35:47.669340Z  INFO spis_server::pipeline: Starting db processing component
2024-03-03T17:35:47.670339Z  INFO spis_server: Start listening on socket /var/run/spis.sock
2024-03-03T17:35:47.670633Z  INFO spis_server::pipeline: Added processing schedule: 0 0 2 * * *
2024-03-03 17:35:48,680 INFO spawned: 'nginx' with pid 30
2024-03-03 17:35:48,683 INFO success: spis entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/15-local-resolvers.envsh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/20-envsubst-on-templates.sh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/30-tune-worker-processes.sh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/40-user-fix.sh, not executable
/docker-entrypoint.sh: Configuration complete; ready for start up
2024/03/03 17:35:48 [emerg] 30#30: getpwnam("nginx") failed in /etc/nginx/nginx.conf:2
2024-03-03 17:35:48,772 WARN exited: nginx (exit status 1; not expected)
2024-03-03 17:35:50,783 INFO spawned: 'nginx' with pid 36
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/15-local-resolvers.envsh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/20-envsubst-on-templates.sh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/30-tune-worker-processes.sh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/40-user-fix.sh, not executable
/docker-entrypoint.sh: Configuration complete; ready for start up
2024/03/03 17:35:50 [emerg] 36#36: getpwnam("nginx") failed in /etc/nginx/nginx.conf:2
2024-03-03 17:35:50,865 WARN exited: nginx (exit status 1; not expected)
2024-03-03 17:35:53,878 INFO spawned: 'nginx' with pid 42
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/15-local-resolvers.envsh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/20-envsubst-on-templates.sh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/30-tune-worker-processes.sh, not executable
/docker-entrypoint.sh: Ignoring /docker-entrypoint.d/40-user-fix.sh, not executable
/docker-entrypoint.sh: Configuration complete; ready for start up
2024/03/03 17:35:53 [emerg] 42#42: getpwnam("nginx") failed in /etc/nginx/nginx.conf:2
2024-03-03 17:35:53,957 WARN exited: nginx (exit status 1; not expected)
2024-03-03 17:35:54,960 INFO gave up: nginx entered FATAL state, too many start retries too quickly
^C2024-03-03 17:36:12,987 WARN received SIGINT indicating exit request
2024-03-03 17:36:12,988 INFO waiting for spis to die
2024-03-03T17:36:13.296632Z  WARN spis_server::pipeline: file_channel was closed
2024-03-03 17:36:14,063 INFO stopped: spis (exit status 0)

Slideshow

Is there a way to start a slideshow?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.