2022-06-09 14:07:40 -05:00
# Intro Skipper (beta)
2020-01-21 13:03:21 +09:00
2022-05-18 15:45:25 -05:00
< div align = "center" >
2024-03-12 14:40:07 -04:00
< p >
< img alt = "Plugin Banner" src = "https://raw.githubusercontent.com/jumoog/intro-skipper/master/images/logo.png" / >
< / p >
< p >
Analyzes the audio of television episodes to detect and skip over intros.
< / p >
2024-04-13 10:59:43 -04:00
[![CodeQL ](https://github.com/jumoog/intro-skipper/actions/workflows/codeql.yml/badge.svg )](https://github.com/jumoog/intro-skipper/actions/workflows/codeql.yml)
2022-05-18 15:45:25 -05:00
< / div >
2024-05-12 18:05:19 +00:00
## Jellyfin 10.8
👉👉👉 [Jellyfin 10.8 Instructions ](https://github.com/jumoog/intro-skipper/blob/10.8/README.md )
2024-04-10 21:18:22 +00:00
2022-06-22 18:52:47 -05:00
## System requirements
2024-06-28 19:08:02 +00:00
* Jellyfin 10.9.7 (or newer)
2024-04-20 15:02:12 +02:00
* Jellyfin's [fork ](https://github.com/jellyfin/jellyfin-ffmpeg ) of `ffmpeg` must be installed, version `6.0.1-5` or newer
* `jellyfin/jellyfin` 10.9.z container: preinstalled
* `linuxserver/jellyfin` 10.9.z container: preinstalled
* Debian Linux based native installs: provided by the `jellyfin-ffmpeg6` package
2023-05-27 22:21:33 -05:00
* MacOS native installs: build ffmpeg with chromaprint support ([instructions ](#installation-instructions-for-macos ))
2022-06-10 22:52:44 -05:00
2024-03-12 14:40:07 -04:00
## Detection parameters
2019-02-21 00:36:01 -08:00
2024-03-04 08:20:46 -05:00
Show introductions will be detected if they are:
2022-05-10 18:24:16 -05:00
2024-03-04 08:20:46 -05:00
* Located within the first 25% of an episode or the first 10 minutes, whichever is smaller
2022-09-03 01:28:35 -05:00
* Between 15 seconds and 2 minutes long
2022-07-08 00:57:12 -05:00
2024-03-04 08:20:46 -05:00
Ending credits will be detected if they are shorter than 4 minutes.
2022-10-31 01:00:39 -05:00
2024-03-12 14:40:07 -04:00
These parameters can be configured by opening the plugin settings
2020-03-09 21:17:32 +01:00
2024-03-12 14:40:07 -04:00
## Installation
2022-10-01 18:13:28 -05:00
2023-12-15 17:27:00 +01:00
### Step 1: Install the plugin
2023-12-03 01:48:43 +01:00
1. Add this plugin repository to your server: `https://raw.githubusercontent.com/jumoog/intro-skipper/master/manifest.json`
2022-05-10 18:24:16 -05:00
2. Install the Intro Skipper plugin from the General section
3. Restart Jellyfin
2024-03-12 14:40:07 -04:00
### Step 2: Configure the plugin
2024-03-09 11:00:37 -05:00
4. OPTIONAL: Enable automatic skipping or skip button
2022-06-14 14:36:05 -05:00
1. Go to Dashboard -> Plugins -> Intro Skipper
2024-03-09 11:00:37 -05:00
2. Check "Automatically skip intros" or "Show skip intro button" and click Save
2022-06-14 14:36:05 -05:00
5. Go to Dashboard -> Scheduled Tasks -> Analyze Episodes and click the play button
6. After a season has completed analyzing, play some episodes from it and observe the results
2022-05-10 18:24:16 -05:00
1. Status updates are logged before analyzing each season of a show
2022-05-10 16:09:27 -05:00
2024-03-12 19:31:19 -04:00
## Troubleshooting
2024-03-12 19:28:13 -04:00
#### Scheduled tasks fail instantly
- Verify that Intro Skipper can detect ffmpeg with Chromaprint
- Dashboard -> Plugins -> Intro Skipper -> Support Bundle Info
- Verify that ffmpeg is installed and detected by jellyfin
- Dashboard -> Playback -> FFmpeg path
- Verify that Chromaprint is enabled in ffmpeg (`--enable-chromaprint` )
2024-03-12 19:31:19 -04:00
#### Skip button is not visible
2024-03-12 19:28:13 -04:00
- Verify you have successfully completed the scheduled task at least once
- Clear your browser cache and reload the Jellyfin server webpage
- Fix any permission mismatches between the web folder and Jellyfin server
2024-06-12 14:27:39 +02:00
- **Official Jellyfin Docker:** The container is being run as a non-root user while having been built as a root user, causing the web files to be owned by root. To solve this, you can remove any lines like `User: 1000:1000` , etc. from the Jellyfin Docker Compose file.
- **LinuxServer Docker Container:** Set an environment variable `DOCKER_MODS=ghcr.io/jumoog/intro-skipper` to ensure the permissions are set correctly for the skip button:
```yaml
services:
jellyfin:
image: lscr.io/linuxserver/jellyfin:latest
container_name: jellyfin
environment:
- PUID=1000
- PGID=1000
- TZ=Etc/UTC
- DOCKER_MODS=ghcr.io/jumoog/intro-skipper
```
2024-03-12 19:28:13 -04:00
* < b > Install from distro repositories -</ b > the jellyfin-server will execute as `jellyfin` user while the web files will be owned by `root` , `www-data` , etc. This can < i > likely</ i > be fixed by adding the `jellyfin` user (or whichever user executes the jellyfin server) to the same group that owns the jellyfin-web folders. **You should only do this if they are owned by a group other than root** .
2024-05-27 18:28:06 +02:00
- The official Android TV app do not support the skip button. For this app, you will need to use the autoskip option. Please note that there is currently an [issue ](https://github.com/jumoog/intro-skipper/issues/168 ) with autoskip not working because the apps never receive the seek command from Jellyfin.
2024-03-12 14:40:07 -04:00
## Installation (MacOS)
2024-03-09 11:00:37 -05:00
2023-05-27 22:21:33 -05:00
1. Build ffmpeg with chromaprint support using brew:
2024-03-12 14:40:07 -04:00
- macOS 12 or newer can install the [portable jellyfin-ffmpeg ](https://github.com/jellyfin/jellyfin-ffmpeg )
2023-05-28 04:17:00 +01:00
```
brew uninstall --force --ignore-dependencies ffmpeg
brew install chromaprint amiaopensource/amiaos/decklinksdk
brew tap homebrew-ffmpeg/ffmpeg
brew install homebrew-ffmpeg/ffmpeg/ffmpeg --with-chromaprint
brew link --overwrite ffmpeg
```
2024-03-12 14:40:07 -04:00
2. Open ~/.config/jellyfin/encoding.xml and add or edit the following lines
- Replace [FFMPEG_PATH] with the path returned by `whereis ffmpeg`
```
< EncoderAppPath > [FFMPEG_PATH]< / EncoderAppPath >
< EncoderAppPathDisplay > [FFMPEG_PATH]< / EncoderAppPathDisplay >
```
2023-05-28 04:17:00 +01:00
2024-03-12 14:40:07 -04:00
4. Follow the [general installation instructions ](#installation ) above
2023-05-28 04:17:00 +01:00
2022-06-13 16:16:15 -05:00
## Documentation
Documentation about how the API works can be found in [api.md ](docs/api.md ).