nicknsy / jellyscrub

Smooth mouse-over video scrubbing previews for Jellyfin.
MIT License
660 stars 25 forks source link

Not working? Not really sure how to debug #104

Closed ghost closed 1 year ago

ghost commented 1 year ago

So I have jellyfin running in a docker container using this image. The jellyfin section in the compose yaml file looks like this:

jellyfin:
    image: lscr.io/linuxserver/jellyfin:latest
    container_name: jellyfin
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
    volumes:
      - ./config/jellyfin:/config
      - ./data/media/tv:/data/media/tv
      - ./data/media/anime:/data/media/anime
      - ./data/media/movies:/data/media/movies
    restart: unless-stopped
    network_mode: service:gluetun

Here are the steps I followed:

  1. In Jellyfin I go to Dashboard -> Plugins -> Repositories and add the Jellyscrub repository (https://raw.githubusercontent.com/nicknsy/jellyscrub/main/manifest.json)

  2. Go to Catalog and Install Jellyscrub

  3. Restart the docker container

  4. Enable the 'Save trickplay files within media folders' option

  5. Go to Dashboard -> Scheduled Tasks and Run the 'Generate BIF Files'

I waited for the BIF files to generate, checked the media folders and I can see the BIF/Trickplay files are all there, but then when I go to play a video, nothing happens.

I tried removing the PUID and PGID environment variables, restarting the server/container, deleting cache/local storage, using a private window, etc...

I haven't tried manually inserting the script tag into the index.html because I'm not really sure where this index.html file even is. "If your Jellyfin's web path is set" what does this mean? I rather it be an automatic insertion, can you or anyone possibly guide me into what I'm doing wrong? Thank you!

Edit: Just wondering too...where are the trickplay files stored when the 'Save trickplay files within media folders' option is disabled?

nicknsy commented 1 year ago

Could you paste any lines from the log that refer to script injection? The trickplay files are stored in the metadata folder by default.

ghost commented 1 year ago

Could you paste any lines from the log that refer to script injection? The trickplay files are stored in the metadata folder by default.

Ah. Should've looked at it a bit closer. Found this.

[2023-03-30 03:43:53.268 +00:00] [INF] [1] Nick.Plugin.Jellyscrub.JellyscrubPlugin: Attempting to inject trickplay script code in "/usr/share/jellyfin/web/index.html"
[2023-03-30 03:43:53.273 +00:00] [ERR] [1] Nick.Plugin.Jellyscrub.JellyscrubPlugin: Encountered exception while writing to "/usr/share/jellyfin/web/index.html": "System.UnauthorizedAccessException: Access to the path '/usr/share/jellyfin/web/index.html' is denied.

So it is a permission issue. Hmm I tried removing the PUID and PGID stuff and restarting the server but that didn't work.

nicknsy commented 1 year ago

How are you restarting the container? Are you doing a full docker compose down / docker compose up -d or simply docker compose restart?

I believe the latter does not apply changes made in the compose file.

ghost commented 1 year ago

Yeah I'm doing a full docker compose down / docker compose up -d

ghost commented 1 year ago

So I tried using this image instead and I got it working. The web path is different on this one. '/jellyfin/jellyfin-web' compared to the '/usr/local/jellyfin/web' in the other image. (Have no idea if that makes any difference)

I tried using the user: option but it gave me the same access denied error. Once I removed the user: option the script was injected successfully.

Interesting...

Edit: Found this issue: https://github.com/linuxserver/docker-jellyfin/issues/182

ghost commented 1 year ago

Ok so following this guide for the first image. I added a custom script:

#!/bin/bash
chmod 666 /usr/share/jellyfin/web/index.html

And this seems to fix the problem.

How it looks like on the docker compose yaml:

jellyfin:
    image: lscr.io/linuxserver/jellyfin:latest
    container_name: jellyfin
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
    volumes:
      - ./config/jellyfin:/config
      - ./config/jellyfin/scripts:/custom-cont-init.d:ro
      - ./data/media/tv:/data/media/tv
      - ./data/media/anime:/data/media/anime
      - ./data/media/movies:/data/media/movies
    restart: unless-stopped
    network_mode: service:gluetun