Code Monkey home page Code Monkey logo

intro-skipper's Introduction

Intro Skipper (beta)

Plugin Banner

Analyzes the audio of television episodes to detect and skip over intros.

CodeQL

Jellyfin 10.8

๐Ÿ‘‰๐Ÿ‘‰๐Ÿ‘‰ Jellyfin 10.8 Instructions

System requirements

  • Jellyfin 10.9.7 (or newer)
  • Jellyfin's fork 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
    • MacOS native installs: build ffmpeg with chromaprint support (instructions)

Detection parameters

Show introductions will be detected if they are:

  • Located within the first 25% of an episode or the first 10 minutes, whichever is smaller
  • Between 15 seconds and 2 minutes long

Ending credits will be detected if they are shorter than 4 minutes.

These parameters can be configured by opening the plugin settings

Installation

Step 1: Install the plugin

  1. Add this plugin repository to your server: https://raw.githubusercontent.com/jumoog/intro-skipper/master/manifest.json
  2. Install the Intro Skipper plugin from the General section
  3. Restart Jellyfin

Step 2: Configure the plugin

  1. OPTIONAL: Enable automatic skipping or skip button
    1. Go to Dashboard -> Plugins -> Intro Skipper
    2. Check "Automatically skip intros" or "Show skip intro button" and click Save
  2. Go to Dashboard -> Scheduled Tasks -> Analyze Episodes and click the play button
  3. After a season has completed analyzing, play some episodes from it and observe the results
    1. Status updates are logged before analyzing each season of a show

Troubleshooting

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)

Skip button is not visible

  • 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

    • 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:

      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
    • Hotio Docker Container: For the Hotio Docker Container, you can find the detailed solution to permission issues in the linked GitHub discussion: Hotio Docker Container Issue Solution.

    • Ubuntu/Debian: Run the following command to fix the permissions on index.html:

      sudo chown jellyfin /usr/share/jellyfin/web/index.html

      Note that you might need to repeat this command after Jellyfin updates.

    • Windows: Locate index.html in C:\Program Files\Jellyfin\Server\jellyfin-web and modify the permissions for your user to Full Control. After making this change, restart Jellyfin.

    • Install from distro repositories - the jellyfin-server will execute as jellyfin user while the web files will be owned by root, www-data, etc. This can likely 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.
  • 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 with autoskip not working because the apps never receive the seek command from Jellyfin.

Installation (MacOS)

  1. Build ffmpeg with chromaprint support using brew:
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
  1. 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>
  1. Follow the general installation instructions above

Documentation

Documentation about how the API works can be found in api.md.

intro-skipper's People

Contributors

abandonedcart avatar anthonylavado avatar arbitrate3280 avatar artiume avatar bond-009 avatar carif avatar cellulosa avatar cloud9developer avatar confusedpolarbear avatar crobibero avatar daullmer avatar dependabot[bot] avatar dkanada avatar github-actions[bot] avatar h1dden-da3m0n avatar iluvatyr avatar joshuaboniface avatar jtormalm avatar jumoog avatar ldellisola avatar logicalphallacy avatar nielsvanvelzen avatar nyanmisaka avatar oddstr13 avatar pomee4 avatar rlauuzo avatar roib20 avatar smart123s avatar xameon42 avatar zzvertigo avatar

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  avatar

intro-skipper's Issues

[Bug]: detect credits not working?

Describe the bug

cant seem to scan for credits?

i also end up with a 12mb credits.xml file in the cache folder that gets blown away each time i run it?

Jellyfin installation method

docker

Container image and tag

jellyfin 10.8.13, intro skipper latest

Operating System

docker

Support Bundle

  • Jellyfin version: 10.8.13
  • Plugin version: 0.1.16+ccb3bbc6835f
  • Queue contents: 91723 episodes, 5565 seasons
  • Warnings: UnableToAddSkipButton, InvalidChromaprintFingerprint
  • FFmpeg: okay

FFmpeg version:

ffmpeg version 5.1.4-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      57. 28.100 / 57. 28.100
libavcodec     59. 37.100 / 59. 37.100
libavformat    59. 27.100 / 59. 27.100
libavdevice    59.  7.100 / 59.  7.100
libavfilter     8. 44.100 /  8. 44.100
libswscale      6.  7.100 /  6.  7.100
libswresample   4.  7.100 /  4.  7.100
libpostproc    56.  6.100 / 56.  6.100

Jellyfin logs

System.AggregateException: One or more errors occurred. (Input string was not in a correct format.)
 ---> System.FormatException: Input string was not in a correct format.
   at System.Number.ThrowOverflowOrFormatException(ParsingStatus status, TypeCode type)
   at System.Convert.ToInt32(String value, IFormatProvider provider)
   at ConfusedPolarBear.Plugin.IntroSkipper.FFmpegWrapper.DetectBlackFrames(QueuedEpisode episode, TimeRange range, Int32 minimum)
   at ConfusedPolarBear.Plugin.IntroSkipper.BlackFrameAnalyzer.AnalyzeMediaFile(QueuedEpisode episode, AnalysisMode mode, Int32 minimum)
   at ConfusedPolarBear.Plugin.IntroSkipper.BlackFrameAnalyzer.AnalyzeMediaFiles(ReadOnlyCollection`1 analysisQueue, AnalysisMode mode, CancellationToken cancellationToken)
   at ConfusedPolarBear.Plugin.IntroSkipper.BaseItemAnalyzerTask.AnalyzeItems(ReadOnlyCollection`1 items, CancellationToken cancellationToken)
   at ConfusedPolarBear.Plugin.IntroSkipper.BaseItemAnalyzerTask.<>c__DisplayClass5_0.<AnalyzeItems>b__0(KeyValuePair`2 season)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.TaskReplicator.Run[TState](ReplicatableUserAction`1 action, ParallelOptions options, Boolean stopOnFirstFailure)
   at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 simpleBody, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.ThrowSingleCancellationExceptionOrOtherException(ICollection exceptions, CancellationToken cancelToken, Exception otherException)
   at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 simpleBody, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body)
   at ConfusedPolarBear.Plugin.IntroSkipper.BaseItemAnalyzerTask.AnalyzeItems(IProgress`1 progress, CancellationToken cancellationToken)
   at ConfusedPolarBear.Plugin.IntroSkipper.DetectCreditsTask.ExecuteAsync(IProgress`1 progress, CancellationToken cancellationToken)
   at Emby.Server.Implementations.ScheduledTasks.ScheduledTaskWorker.ExecuteInternal(TaskOptions options)
[02:30:54] [INF] [100] Emby.Server.Implementations.ScheduledTasks.TaskManager: Detect Credits Failed after 10 minute(s) and 53 seconds

[FeatureRequest] Make skip button active

When using TV mode it would be great if the spawned button would also be the active element so that you dont have to navigate to the button but immidiatly confirm the skip. Currenlty it takes multiple navigation clicks to get there.

Edit: Maybe make the :hov effect also play when active :)

Skips TO intro when intro is offset

My Jellyfin is on MacBook that is 10.14, so there is literally no hope of ffmpeg with chromaprint. I have a Mac Mini on 12 with the ffmpeg and use rffmpeg to connect to that. Jellyfin can't actually play videos with the homebrew version, so the process is to enable rffmpeg, run the tasks, build the database, then disable rffmpeg. This shouldn't be relevant, but just in case...

If the intro is the beginning of the video, it skips it perfectly. When there is a clip before the intro, it skips to the start of the intro. An example would be Demon Slayer. Season 1, episode 2 has 57 seconds of episode before the opening credits and the plugin skips exactly those 57 seconds. Season 1, episode 7 skips the 47 seconds of episode right to the opening credit. For some reason, it seems to be picking up exactly where the credits start, but cutting everything before it.

After further testing, I have found that intros that appear within 25 seconds of the start of the episode are logged correctly. Oddly, so were a few that were extremely delayed. When an intro was roughly 90 seconds into the episode, though, the start time was logged as 0 and the end time was logged as the start time.

I have tried this both with the defaults and setting the minimum and maximum intro length higher. My most recent test also added in 3 degrees of parallelism.

Re-scanning same show of different length reuses old intro timing

So, I have noticed that if I replace an episode with the same episode of a different length, delete the timestamps for that season, and rescan then the same timestamps are generated that were used from the original scan. I am wondering if there is also a cache somewhere that I should be deleting/or the program should delete but isn't (should I restart the server after doing this?). Hopefully what I am saying makes sense. If someone else can confirm/test this I would appreciate it. I have reproduced this issue on more than one show.

Edit:
Server - Ubuntu 20.04
Jellyfin.Server 10.8.13.0
Intro Skipper 0.1.8.0
jellyfin-ffmpeg 4.4.1-4

[Bug]: Detection job fails if same folder is used multiple times in different libraries

Describe the bug

I've got a library, that's combing the folders of 3 others (I've removed library scan enqueues of unrelated libraries)
"Anime-Gesamt" has the folders of "Anime-GerDub", "Anime-GerSub" and "Anime-Other"
When "Anime-Gesamt" is set up as library the detection fails after enqueuing the items, complaining that a job with that ID has already been added.
I've removed "Anime-Gesamt" as Library, and the detection job is processing as it should.

2 Support Bundles are attached
First with "Anime-Gesamt" not present, 2nd with "Anime-Gesamt" present.

Jellyfin installation method

Docker

Container image and tag

ghcr.io/hotio/jellyfin

Operating System

Ubuntu 22.04.4 LTS

IMDb ID of that TV Series

No response

Support Bundle

Combined Library removed

* Jellyfin version: 10.8.13
* Plugin version: 0.1.17+c2727ea4e482
* Queue contents: 46470 episodes, 4458 seasons
* Warnings: `None`
* FFmpeg: `okay`

FFmpeg version:

ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      58.  2.100 / 58.  2.100
libavcodec     60.  3.100 / 60.  3.100
libavformat    60.  3.100 / 60.  3.100
libavdevice    60.  1.100 / 60.  1.100
libavfilter     9.  3.100 /  9.  3.100
libswscale      7.  1.100 /  7.  1.100
libswresample   4. 10.100 /  4. 10.100
libpostproc    57.  1.100 / 57.  1.100
Combined Library recreated

* Jellyfin version: 10.8.13
* Plugin version: 0.1.17+c2727ea4e482
* Queue contents: 87721 episodes, 3439 seasons
* Warnings: `None`
* FFmpeg: `okay`

FFmpeg version:

ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      58.  2.100 / 58.  2.100
libavcodec     60.  3.100 / 60.  3.100
libavformat    60.  3.100 / 60.  3.100
libavdevice    60.  1.100 / 60.  1.100
libavfilter     9.  3.100 /  9.  3.100
libswscale      7.  1.100 /  7.  1.100
libswresample   4. 10.100 /  4. 10.100
libpostproc    57.  1.100 / 57.  1.100

Jellyfin logs

[2024-05-08 06:57:05.125 +02:00] [INF] [28] Emby.Server.Implementations.ScheduledTasks.TaskManager: "Detect Credits" Failed after 0 minute(s) and 4 seconds
[2024-05-08 06:57:05.125 +02:00] [INF] [28] Emby.Server.Implementations.ScheduledTasks.TaskManager: ExecuteQueuedTasks
[2024-05-08 06:57:08.838 +02:00] [INF] [20] Emby.Server.Implementations.ScheduledTasks.TaskManager: Executing "Detect Introductions"
[2024-05-08 06:57:09.009 +02:00] [INF] [20] ConfusedPolarBear.Plugin.IntroSkipper.QueueManager: Running enqueue of items in library "Anime-Gesamt"
[2024-05-08 06:57:11.002 +02:00] [INF] [20] ConfusedPolarBear.Plugin.IntroSkipper.QueueManager: Running enqueue of items in library "Anime-Other"
[2024-05-08 06:57:11.204 +02:00] [INF] [20] ConfusedPolarBear.Plugin.IntroSkipper.QueueManager: Running enqueue of items in library "Anime-GerSub"
[2024-05-08 06:57:12.292 +02:00] [INF] [20] ConfusedPolarBear.Plugin.IntroSkipper.QueueManager: Running enqueue of items in library "Anime-GerDub"
[2024-05-08 06:57:13.358 +02:00] [INF] [20] ConfusedPolarBear.Plugin.IntroSkipper.DetectIntroductionsTask: Analyzing 6 files from "Anime1" season 1
[2024-05-08 06:57:13.358 +02:00] [INF] [24] ConfusedPolarBear.Plugin.IntroSkipper.DetectIntroductionsTask: Analyzing 6 files from "Anime2" season 1
[2024-05-08 06:57:13.360 +02:00] [ERR] [20] Emby.Server.Implementations.ScheduledTasks.TaskManager: Error
System.AggregateException: One or more errors occurred. (An item with the same key has already been added. Key: 6b6e65b7-7b01-3e57-72b5-c2c9388a8029) (An item with the same key has already been added. Key: c04c8e52-6db7-fddc-7f5d-6c057e6be7fc)
 ---> System.ArgumentException: An item with the same key has already been added. Key: 6b6e65b7-7b01-3e57-72b5-c2c9388a8029
   at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
   at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   at ConfusedPolarBear.Plugin.IntroSkipper.ChapterAnalyzer.AnalyzeMediaFiles(ReadOnlyCollection`1 analysisQueue, AnalysisMode mode, CancellationToken cancellationToken)
   at ConfusedPolarBear.Plugin.IntroSkipper.BaseItemAnalyzerTask.AnalyzeItems(ReadOnlyCollection`1 items, CancellationToken cancellationToken)
   at ConfusedPolarBear.Plugin.IntroSkipper.BaseItemAnalyzerTask.<>c__DisplayClass5_0.<AnalyzeItems>b__0(KeyValuePair`2 season)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica`1.ExecuteAction(Boolean& yieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.TaskReplicator.Run[TState](ReplicatableUserAction`1 action, ParallelOptions options, Boolean stopOnFirstFailure)
   at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 simpleBody, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.ThrowSingleCancellationExceptionOrOtherException(ICollection exceptions, CancellationToken cancelToken, Exception otherException)
   at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 simpleBody, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body)
   at ConfusedPolarBear.Plugin.IntroSkipper.BaseItemAnalyzerTask.AnalyzeItems(IProgress`1 progress, CancellationToken cancellationToken)
   at ConfusedPolarBear.Plugin.IntroSkipper.DetectIntroductionsTask.ExecuteAsync(IProgress`1 progress, CancellationToken cancellationToken)
   at Emby.Server.Implementations.ScheduledTasks.ScheduledTaskWorker.ExecuteInternal(TaskOptions options)
 ---> (Inner Exception #1) System.ArgumentException: An item with the same key has already been added. Key: c04c8e52-6db7-fddc-7f5d-6c057e6be7fc
   at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
   at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   at ConfusedPolarBear.Plugin.IntroSkipper.ChapterAnalyzer.AnalyzeMediaFiles(ReadOnlyCollection`1 analysisQueue, AnalysisMode mode, CancellationToken cancellationToken)
   at ConfusedPolarBear.Plugin.IntroSkipper.BaseItemAnalyzerTask.AnalyzeItems(ReadOnlyCollection`1 items, CancellationToken cancellationToken)
   at ConfusedPolarBear.Plugin.IntroSkipper.BaseItemAnalyzerTask.<>c__DisplayClass5_0.<AnalyzeItems>b__0(KeyValuePair`2 season)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica`1.ExecuteAction(Boolean& yieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()<---

Cant get Skip Button working

Just installed a Unraid server and installed Jellyfin with docker. Now I want to use this plugin, auto skip works fine, but I want to use the skip button which I cant get to work.
I guess it has something to do with this:
image
But I just started working with all this and really cant figure out how to do it.

[Clarity/Feature request?] Automatically skip credits

I am unsure of how skipping credits works. I turned the automatic skip intros feature on, and it works great, but is skipping credits automatically not a thing? Or is there an option that is not in the gui that I need to turn on or a config file to edit somewhere to achieve this? Okay, thanks in advance for any additional information.

After clicking on skip intro, button still appears

So the "show skip button for intro duration" is amazing, but an issue I've been having is that it skips the intro but still shows the button after it's being pressed. Video example below

screen-20240302-202056.mp4

[Discussion]: Subdirectories for chromaprints

Describe the bug

I am thinking that eventually subdirectories will/or should be created for the chromaprint files in the same way that jellyfin stores library data or ccache stores files. For example if I do an "ls /var/lib/jellyfin/metadata/library/ " I get an output like this:

00/  09/  12/  1b/  24/  2d/  36/  3f/  48/  51/  5a/  63/  6c/  75/  7e/  87/  90/  99/  a2/  ab/  b4/  bd/  c6/  cf/  d8/  e1/  ea/  f3/  fc/
01/  0a/  13/  1c/  25/  2e/  37/  40/  49/  52/  5b/  64/  6d/  76/  7f/  88/  91/  9a/  a3/  ac/  b5/  be/  c7/  d0/  d9/  e2/  eb/  f4/  fd/
02/  0b/  14/  1d/  26/  2f/  38/  41/  4a/  53/  5c/  65/  6e/  77/  80/  89/  92/  9b/  a4/  ad/  b6/  bf/  c8/  d1/  da/  e3/  ec/  f5/  fe/
03/  0c/  15/  1e/  27/  30/  39/  42/  4b/  54/  5d/  66/  6f/  78/  81/  8a/  93/  9c/  a5/  ae/  b7/  c0/  c9/  d2/  db/  e4/  ed/  f6/  ff/
04/  0d/  16/  1f/  28/  31/  3a/  43/  4c/  55/  5e/  67/  70/  79/  82/  8b/  94/  9d/  a6/  af/  b8/  c1/  ca/  d3/  dc/  e5/  ee/  f7/
05/  0e/  17/  20/  29/  32/  3b/  44/  4d/  56/  5f/  68/  71/  7a/  83/  8c/  95/  9e/  a7/  b0/  b9/  c2/  cb/  d4/  dd/  e6/  ef/  f8/
06/  0f/  18/  21/  2a/  33/  3c/  45/  4e/  57/  60/  69/  72/  7b/  84/  8d/  96/  9f/  a8/  b1/  ba/  c3/  cc/  d5/  de/  e7/  f0/  f9/
07/  10/  19/  22/  2b/  34/  3d/  46/  4f/  58/  61/  6a/  73/  7c/  85/  8e/  97/  a0/  a9/  b2/  bb/  c4/  cd/  d6/  df/  e8/  f1/  fa/
08/  11/  1a/  23/  2c/  35/  3e/  47/  50/  59/  62/  6b/  74/  7d/  86/  8f/  98/  a1/  aa/  b3/  bc/  c5/  ce/  d7/  e0/  e9/  f2/  fb/

Where each folder hold around 100 files or so.

With the current implementation if I do a "ls chromaprints | wc -l" the value I get is 81222. I suspect that having so many files stored in one directory will create some type of issue in the future (I do not understand the issue personally as I am not a programmer, but I believe there is a reason things are normally done using the subdirectory structure). When I look at the files in the chromaprints directory they are already structured in the same way (currently from 00* to ff* on my system). This does not seem to be an issue yet, but as this number will probably increase more and more over time for those with large libraries I feel that this change should eventually be considered. The potential downside to changing the structure is that libraries may have to be rescanned in the future, but I was wondering if the devs here had any thoughts about this. Perhaps for the 10.9 branch this is something that can be considered? Okay, thanks.

Jellyfin installation method

apt

Container image and tag

No response

Operating System

Ubuntu 20.04

Support Bundle

* Jellyfin version: 10.8.13
* Plugin version: 0.1.17+26db24d187ed
* Queue contents: 19349 episodes, 1243 seasons
* Warnings: `UnableToAddSkipButton, InvalidChromaprintFingerprint`
* FFmpeg: `okay`

FFmpeg version:

ffmpeg version 5.1.4-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      57. 28.100 / 57. 28.100
libavcodec     59. 37.100 / 59. 37.100
libavformat    59. 27.100 / 59. 27.100
libavdevice    59.  7.100 / 59.  7.100
libavfilter     8. 44.100 /  8. 44.100
libswscale      6.  7.100 /  6.  7.100
libswresample   4.  7.100 /  4.  7.100
libpostproc    56.  6.100 / 56.  6.100


### Jellyfin logs

_No response_

Visualization editor not very visual

There seems like a lot of lost potential here, but it's possibly impossible. I expected this to show frames to match the timestamps instead of some strange horshack test. I just don't know if it's actually possible to populate real frames into something the page can display.

ffmpeg -ss {timestamp as XX:YY:ZZ} -i input.mp4 -frames:v 1 output.png

[BUG] Automatic skipping skips entire episodes

Describe the bug

I have enabled automatically skip intro and credits option. Plugin randomly starts to skipping episodes repeatedly until I stop it. This happened only in series Lie to me(tt1235099). Server version 10.8.13. Client : ios 17.4.1 safari browser

Jellyfin installation method

Windows installer

Container image and tag

No response

Operating System

Win 11

Support Bundle

* Jellyfin version: 10.8.13
* Plugin version: 0.1.17+c2727ea4e482
* Queue contents: 213 episodes, 17 seasons
* Warnings: `UnableToAddSkipButton`
* FFmpeg: `okay`

FFmpeg version:

ffmpeg version 5.1.4-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12-win32 (GCC)
configuration: --prefix=/opt/ffmpeg --arch=x86_64 --target-os=mingw32 --cross-prefix=x86_64-w64-mingw32- --pkg-config=pkg-config --pkg-config-flags=--static --extra-libs='-lfftw3f -lstdc++' --extra-cflags=-DCHROMAPRINT_NODLL --extra-version=Jellyfin --disable-ffplay --disable-debug --disable-doc --disable-sdl2 --disable-ptx-compression --disable-w32threads --enable-pthreads --enable-shared --enable-lto --enable-gpl --enable-version3 --enable-schannel --enable-iconv --enable-libxml2 --enable-zlib --enable-lzma --enable-gmp --enable-chromaprint --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libwebp --enable-libvpx --enable-libzimg --enable-libx264 --enable-libx265 --enable-libsvtav1 --enable-libdav1d --enable-libfdk-aac --enable-opencl --enable-dxva2 --enable-d3d11va --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      57. 28.100 / 57. 28.100
libavcodec     59. 37.100 / 59. 37.100
libavformat    59. 27.100 / 59. 27.100
libavdevice    59.  7.100 / 59.  7.100
libavfilter     8. 44.100 /  8. 44.100
libswscale      6.  7.100 /  6.  7.100
libswresample   4.  7.100 /  4.  7.100
libpostproc    56.  6.100 / 56.  6.100


### Jellyfin logs

_No response_

Missing "Automatically skip Credits"

I see "Automatically skip Intro" checkbox in plugin settings but don't see "Automatically skip Credits" or "Automatically press Next"
So I assumed that this checkbox would apply to both (Into and Credits), but it doesn't seems to be the case.

Intro is getting skipped automatically, however end credits still require you to press or hover your mouse on to "Next" button.

Why have "Credit Detection" in scheduling tasks if there is no way to automatically skip it after it was detected?

Can somebody please advise how to make it work? I just need button "Next" to be clicked automatically when it pops out during credits.

I saw similar request in other places. But not for this plugin. Is there another plugin that needs to be added to make this work, or could current [intro-skipper] include that?

[Feature request] Ability to blacklist a show/season

So, some shows have repeating audio and/or chapter segments that are introductory in terms of audio fingerprinting, but are also critical and/or part of the story. It is rare that this is the case, but I have seen it in two shows. What I would like is the ability to blacklist a show/and or season (season would probably be preferrable) so that it is ignored/not scanned by intro-skipper.

Edit: I did not see a template, so I hope that I am placing this request in the right section. It is not a bug/issue.

[Bug]: Scanning triggered without notice

Describe the bug

After have high CPU to see it was jellyfin but nothing was trancoding turns out the plugin is scanning without telling jellyfin what's going on.

There should be a notice on the dashboard and in tasks.

Jellyfin installation method

Linux

Container image and tag

No response

Operating System

Ubuntu

Support Bundle

* Jellyfin version: 10.8.13
* Plugin version: 0.1.17+c2727ea4e482
* Warnings: `InvalidChromaprintFingerprint`
* FFmpeg: `okay`

Jellyfin logs

No response

[Bug]: Skip button broken in v0.1.16.4 on Webos in certain situations

Describe the bug

The Intro Skipper plugin's skip button extends to an excessive length in specific scenarios on WebOS. This occurs when the Jellyfin "play next episode" dialog has been displayed at the conclusion of the previous episode. The issue appears to be isolated to WebOS and v0.1.16.4 and has not been replicated on Firefox or with plugin version v0.1.16.3.

20240328_114431

Jellyfin installation method

Docker

Container image and tag

No response

Operating System

Webos

Support Bundle

  • Jellyfin version: 10.8.13
  • Plugin version: 0.1.16+ccb3bbc6835f
  • Queue contents: 3481 episodes, 250 seasons
  • Warnings: None
  • FFmpeg: okay

FFmpeg version:

ffmpeg version 5.1.4-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 10 (Debian 10.2.1-6)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      57. 28.100 / 57. 28.100
libavcodec     59. 37.100 / 59. 37.100
libavformat    59. 27.100 / 59. 27.100
libavdevice    59.  7.100 / 59.  7.100
libavfilter     8. 44.100 /  8. 44.100
libswscale      6.  7.100 /  6.  7.100
libswresample   4.  7.100 /  4.  7.100
libpostproc    56.  6.100 / 56.  6.100

Jellyfin logs

No response

Help Wanted: "UnableToAddSkipButton"

Describe the bug

I can't get the skip button to show. I installed it as described in the README. And when it didn't work I followed the Troubleshooting. I verified the task ran at least once, I cleared my cache and reloaded the page, and because I run it in docker I nuked the container and it's settings and recreated it with the User lines commented out. None of these have helped. The show button option is checked. I did make sure the plugin was working by trying to automatically skip intro and that worked. But I don't want to use that option.

I don't know where the Warning: "UnableToAddSkipButton" is coming from and rather than banging my head against my desk I thought I would ask.
(I am trying to get this to work on my test server before adding it to my main one, so having to nuke it and restart isn't a problem.)

Jellyfin installation method

Docker

Container image and tag

hotio/jellyfin:latest

Operating System

Debian 12 Raspberry Pi

Support Bundle

  • Jellyfin version: 10.8.13
  • Plugin version: 0.1.17+c2727ea4e482
  • Queue contents: 55 episodes, 5 seasons
  • Warnings: UnableToAddSkipButton
  • FFmpeg: okay

FFmpeg version:

ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=arm64 --cross-prefix=/usr/bin/aarch64-linux-gnu- --toolchain=hardened --enable-cross-compile --enable-rkmpp --enable-rkrga
libavutil      58.  2.100 / 58.  2.100
libavcodec     60.  3.100 / 60.  3.100
libavformat    60.  3.100 / 60.  3.100
libavdevice    60.  1.100 / 60.  1.100
libavfilter     9.  3.100 /  9.  3.100
libswscale      7.  1.100 /  7.  1.100
libswresample   4. 10.100 /  4. 10.100
libpostproc    57.  1.100 / 57.  1.100

Jellyfin logs

No response

Plugin revival

I know it's been a bit of a flood of changes and pull requests. Hopefully I wasn't overstepping. If there are any rules or a specific workflow I should be following, please let me know.

[Feature request]: Show associated chromaprint file(s) on "Manage Fingerprints" page

Describe the bug

Sometimes a series or season of a show does not have intros/credits scanned for a season or episode 1 of a season etc.. It would be nice to know what the associated chromaprint files are so that I can go in and delete them/delete them from the xml file so that I can rescan them. I am not sure how trivial this would be to implement. I am assuming that this information is already being passed to the gui to access the timestamps?

Jellyfin installation method

apt

Container image and tag

No response

Operating System

Ubuntu 20.04

Support Bundle

* Jellyfin version: 10.8.13
* Plugin version: 0.1.17+c2727ea4e482
* Queue contents: 19349 episodes, 1243 seasons
* Warnings: `UnableToAddSkipButton, InvalidChromaprintFingerprint`
* FFmpeg: `okay`

FFmpeg version:

ffmpeg version 5.1.4-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      57. 28.100 / 57. 28.100
libavcodec     59. 37.100 / 59. 37.100
libavformat    59. 27.100 / 59. 27.100
libavdevice    59.  7.100 / 59.  7.100
libavfilter     8. 44.100 /  8. 44.100
libswscale      6.  7.100 /  6.  7.100
libswresample   4.  7.100 /  4.  7.100
libpostproc    56.  6.100 / 56.  6.100


### Jellyfin logs

_No response_

[Bug]: using dashboard restart cause crash

Describe the bug

restart via dashboard

Jellyfin installation method

Dcoker

Container image and tag

No response

Operating System

Docker

Support Bundle

Jellyfin logs

[2024-04-12 11:24:20.061 +02:00] [INF] [17] Main: Kestrel is listening on "127.0.0.1"
[2024-04-12 11:24:20.061 +02:00] [INF] [17] Main: Kestrel is listening on "172.21.0.2"
[2024-04-12 11:24:20.067 +02:00] [ERR] [17] Microsoft.Extensions.Hosting.Internal.Host: Hosting failed to start
System.InvalidOperationException: There was an error generating the XML document.
 ---> System.InvalidCastException: [A]ConfusedPolarBear.Plugin.IntroSkipper.Configuration.PluginConfiguration cannot be cast to [B]ConfusedPolarBear.Plugin.IntroSkipper.Configuration.PluginConfiguration. Type A originates from 'ConfusedPolarBear.Plugin.IntroSkipper, Version=0.2.0.1, Culture=neutral, PublicKeyToken=null' in the context '"" Emby.Server.Implementations.Plugins.PluginLoadContext #371' at location '/config/plugins/Intro Skipper_0.2.0.1/ConfusedPolarBear.Plugin.IntroSkipper.dll'. Type B originates from 'ConfusedPolarBear.Plugin.IntroSkipper, Version=0.2.0.1, Culture=neutral, PublicKeyToken=null' in the context '"" Emby.Server.Implementations.Plugins.PluginLoadContext #1' at location '/config/plugins/Intro Skipper_0.2.0.1/ConfusedPolarBear.Plugin.IntroSkipper.dll'.
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterPluginConfiguration.Write6_PluginConfiguration(Object o)
   at InvokeStub_XmlSerializationWriterPluginConfiguration.Write6_PluginConfiguration(Object, Span`1)
   at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   --- End of inner exception stack trace ---
   at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   at Emby.Server.Implementations.Serialization.MyXmlSerializer.SerializeToStream(Object obj, Stream stream)
   at Emby.Server.Implementations.Serialization.MyXmlSerializer.SerializeToFile(Object obj, String file)
   at MediaBrowser.Common.Plugins.BasePlugin`1.SaveConfiguration(TConfigurationType config)
   at MediaBrowser.Common.Plugins.BasePlugin`1.LoadConfiguration()
   at MediaBrowser.Common.Plugins.BasePlugin`1.get_Configuration()
   at ConfusedPolarBear.Plugin.IntroSkipper.AutoSkip.AutoSkipChanged(Object sender, EventArgs e)
   at ConfusedPolarBear.Plugin.IntroSkipper.AutoSkip.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>b__15_1(IHostedService service, CancellationToken token)
   at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation)
   at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>g__LogAndRethrow|15_3(<>c__DisplayClass15_0&)
   at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
   at Jellyfin.Server.Program.StartServer(IServerApplicationPaths appPaths, StartupOptions options, IConfiguration startupConfig)
[2024-04-12 11:24:20.067 +02:00] [ERR] [17] Main: Kestrel failed to start! This is most likely due to an invalid address or port bind - correct your bind configuration in network.xml and try again
[2024-04-12 11:24:20.067 +02:00] [FTL] [17] Main: Error while starting server
System.InvalidOperationException: There was an error generating the XML document.
 ---> System.InvalidCastException: [A]ConfusedPolarBear.Plugin.IntroSkipper.Configuration.PluginConfiguration cannot be cast to [B]ConfusedPolarBear.Plugin.IntroSkipper.Configuration.PluginConfiguration. Type A originates from 'ConfusedPolarBear.Plugin.IntroSkipper, Version=0.2.0.1, Culture=neutral, PublicKeyToken=null' in the context '"" Emby.Server.Implementations.Plugins.PluginLoadContext #371' at location '/config/plugins/Intro Skipper_0.2.0.1/ConfusedPolarBear.Plugin.IntroSkipper.dll'. Type B originates from 'ConfusedPolarBear.Plugin.IntroSkipper, Version=0.2.0.1, Culture=neutral, PublicKeyToken=null' in the context '"" Emby.Server.Implementations.Plugins.PluginLoadContext #1' at location '/config/plugins/Intro Skipper_0.2.0.1/ConfusedPolarBear.Plugin.IntroSkipper.dll'.
   at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationWriterPluginConfiguration.Write6_PluginConfiguration(Object o)
   at InvokeStub_XmlSerializationWriterPluginConfiguration.Write6_PluginConfiguration(Object, Span`1)
   at System.Reflection.MethodBaseInvoker.InvokeWithOneArg(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   --- End of inner exception stack trace ---
   at System.Xml.Serialization.XmlSerializer.Serialize(XmlWriter xmlWriter, Object o, XmlSerializerNamespaces namespaces, String encodingStyle, String id)
   at Emby.Server.Implementations.Serialization.MyXmlSerializer.SerializeToStream(Object obj, Stream stream)
   at Emby.Server.Implementations.Serialization.MyXmlSerializer.SerializeToFile(Object obj, String file)
   at MediaBrowser.Common.Plugins.BasePlugin`1.SaveConfiguration(TConfigurationType config)
   at MediaBrowser.Common.Plugins.BasePlugin`1.LoadConfiguration()
   at MediaBrowser.Common.Plugins.BasePlugin`1.get_Configuration()
   at ConfusedPolarBear.Plugin.IntroSkipper.AutoSkip.AutoSkipChanged(Object sender, EventArgs e)
   at ConfusedPolarBear.Plugin.IntroSkipper.AutoSkip.StartAsync(CancellationToken cancellationToken)
   at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>b__15_1(IHostedService service, CancellationToken token)
   at Microsoft.Extensions.Hosting.Internal.Host.ForeachService[T](IEnumerable`1 services, CancellationToken token, Boolean concurrent, Boolean abortOnFirstException, List`1 exceptions, Func`3 operation)
   at Microsoft.Extensions.Hosting.Internal.Host.<StartAsync>g__LogAndRethrow|15_3(<>c__DisplayClass15_0&)
   at Microsoft.Extensions.Hosting.Internal.Host.StartAsync(CancellationToken cancellationToken)
   at Jellyfin.Server.Program.StartServer(IServerApplicationPaths appPaths, StartupOptions options, IConfiguration startupConfig)
[2024-04-12 11:24:20.067 +02:00] [INF] [17] Main: Running query planner optimizations in the database... This might take a while

Missing "modified web interface"

In the installation instructions there is a reference to a "modified web interface" in order to get the "skip intro" button, but it's not clear how to obtain that modified web interface.

[Bug]: season 0 episodes that are automatically placed within seasons are scanned regardless of analyze season 0 setting and breaks manual fingerprint editor

Describe the bug

if an episode from season 0 is included within a season due to tvdb metadata it is automatically scanned, ignoring "analyze season 0" being unchecked despite absence of extras folder.

further, when going to change erroneous fingerprints within a season where this occurs it is not possible, the only episode that appears in the dropdown for the season is the one pulled from specials.

screenshot Screenshot 2024-03-17 at 5 09 15โ€ฏPM

screenshot of library showing what I mean - season 4 of family guy with the last 4 episodes replaced with the movie of the same episodes from specials

screenshot Screenshot 2024-03-17 at 5 10 18โ€ฏPM
managing fingerprints showing the season is listed out of order

screenshot Screenshot 2024-03-17 at 5 10 29โ€ฏPM
showing that is the only selectable episode within the season

screenshot Screenshot 2024-03-17 at 5 10 39โ€ฏPM

once selected fingerprints for said episode do not load. this is inconsistent; I have gotten fingerprints for said episode to load.

also comes up for anime with OVAs released in-between seasons and that's where fingerprinting tends to be more problematic for me. I can autoskip what is believed to be the intro or get the skip intro button from patched webui to appear so everything is getting fingerprinted, just cannot access the fingerprints for episodes once they are fingerprinted

also thanks for maintaining this project!

Jellyfin installation method

docker

Container image and tag

jellyfin 10.8.13 bbergle image, introskipper 0.1.16+7032816cbeb6

Operating System

docker is debian base, running on unraid

Support Bundle

  • Jellyfin version: 10.8.13
  • Plugin version: 0.1.16+7032816cbeb6
  • Queue contents: 8040 episodes, 606 seasons
  • Warnings: InvalidChromaprintFingerprint
  • FFmpeg: okay

FFmpeg version:

ffmpeg version 5.1.4-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 10 (Debian 10.2.1-6)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      57. 28.100 / 57. 28.100
libavcodec     59. 37.100 / 59. 37.100
libavformat    59. 27.100 / 59. 27.100
libavdevice    59.  7.100 / 59.  7.100
libavfilter     8. 44.100 /  8. 44.100
libswscale      6.  7.100 /  6.  7.100
libswresample   4.  7.100 /  4.  7.100
libpostproc    56.  6.100 / 56.  6.100

Jellyfin logs

No response

[Bug]: After updating to v0.1.16.4 running "Detect Introductions" scans whole library

Describe the bug

So, after updating and running the "Detect Introductions" scheduled task it seems to be rescanning my whole library. Initially I thought it was just stuck, but looking at the jellyfin log it shows that the plugin is scanning, just scanning everything. I am just going to let it run to completion I suppose, but if someone else can verify this behavior I would appreciate it. If it is necessary I understand, but should probably be documented in the release notes assuming that this is not a bug. I'm wondering if maybe this has to do with the "Testing the new release actions" commit from yesterday? Any clarity and/or verification would be appreciated.

Jellyfin installation method

apt

Container image and tag

No response

Operating System

Ubuntu 20.04

Support Bundle

  • Jellyfin version: 10.8.13
  • Plugin version: 0.1.16+ccb3bbc6835f
  • Queue contents: [Redacted] episodes, [Redacted] seasons
  • Warnings: UnableToAddSkipButton
  • FFmpeg: okay

FFmpeg version:

ffmpeg version 5.1.4-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      57. 28.100 / 57. 28.100
libavcodec     59. 37.100 / 59. 37.100
libavformat    59. 27.100 / 59. 27.100
libavdevice    59.  7.100 / 59.  7.100
libavfilter     8. 44.100 /  8. 44.100
libswscale      6.  7.100 /  6.  7.100
libswresample   4.  7.100 /  4.  7.100
libpostproc    56.  6.100 / 56.  6.100

Jellyfin logs

No response

Skip to preview instead of next video

In Anime, there is typically a preview after the credits. Should we be skipping to that, instead of moving to they next video? This could also be an optional behavior.

Although it may only be possible to identify the preview in files with chapters, since the current methods only find the start of the credits and can't determine the end.

[FeatureRequest]: Setting Dont Skip last Episode

Describe the bug

Hi,
a setting to disable the skip of the last episode. Same as there is already a setting for the first episode.
Most of the times i want to hear the last episodes Intro one last time before i end a series :)

Jellyfin installation method

Container image and tag

No response

Operating System

Support Bundle

-

Jellyfin logs

No response

Intro uses 100% ram

Intro skipper while scanning media eventually eats up all 16GB of ram and then crashes Jellyfin server.
This happens every time I run a scan, intro skipper scan gets to about 80% and then hits 100% ram usage.
For the last couple of months, I disabled the scan and the ram usage is 3GB, but as soon as I start the scan the memory usage starts climbing and don't get released.

Jellyfin : 10.8.13
Intro Skipper : 0.1.8.0

Detect credits task fails consistently

I've just updated to the latest version (0.1.16.0) from the original ConfusedPolarBear plugin and when running the detect credits task it always fails when scanning a specific season. The detect introductions task works fine and doesn't fail (possibly because of cached data?). The logs return this:

[2024-03-06 09:24:56.722 +01:00] [INF] [103] ConfusedPolarBear.Plugin.IntroSkipper.DetectCreditsTask: Analyzing 10 files from "Big Mouth" season 4
[2024-03-06 09:24:57.235 +01:00] [ERR] [103] Emby.Server.Implementations.ScheduledTasks.TaskManager: Error
System.AggregateException: One or more errors occurred. (Value cannot be null. (Parameter 'input'))
 ---> System.ArgumentNullException: Value cannot be null. (Parameter 'input')
   at System.Text.RegularExpressions.ThrowHelper.ThrowArgumentNullException(ExceptionArgument arg)
   at System.Text.RegularExpressions.Regex.IsMatch(String input)
   at System.Text.RegularExpressions.Regex.IsMatch(String input, String pattern, RegexOptions options, TimeSpan matchTimeout)
   at ConfusedPolarBear.Plugin.IntroSkipper.ChapterAnalyzer.FindMatchingChapter(QueuedEpisode episode, Collection`1 chapters, String expression, AnalysisMode mode)
   at ConfusedPolarBear.Plugin.IntroSkipper.ChapterAnalyzer.AnalyzeMediaFiles(ReadOnlyCollection`1 analysisQueue, AnalysisMode mode, CancellationToken cancellationToken)
   at ConfusedPolarBear.Plugin.IntroSkipper.BaseItemAnalyzerTask.AnalyzeItems(ReadOnlyCollection`1 items, CancellationToken cancellationToken)
   at ConfusedPolarBear.Plugin.IntroSkipper.BaseItemAnalyzerTask.<>c__DisplayClass5_0.<AnalyzeItems>b__0(KeyValuePair`2 season)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.TaskReplicator.Run[TState](ReplicatableUserAction`1 action, ParallelOptions options, Boolean stopOnFirstFailure)
   at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 simpleBody, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.ThrowSingleCancellationExceptionOrOtherException(ICollection exceptions, CancellationToken cancelToken, Exception otherException)
   at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 simpleBody, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body)
   at ConfusedPolarBear.Plugin.IntroSkipper.BaseItemAnalyzerTask.AnalyzeItems(IProgress`1 progress, CancellationToken cancellationToken)
   at ConfusedPolarBear.Plugin.IntroSkipper.DetectCreditsTask.ExecuteAsync(IProgress`1 progress, CancellationToken cancellationToken)
   at Emby.Server.Implementations.ScheduledTasks.ScheduledTaskWorker.ExecuteInternal(TaskOptions options)
[2024-03-06 09:24:57.236 +01:00] [INF] [103] Emby.Server.Implementations.ScheduledTasks.TaskManager: "Detect Credits" Failed after 0 minute(s) and 5 seconds
[2024-03-06 09:24:57.236 +01:00] [INF] [103] Emby.Server.Implementations.ScheduledTasks.TaskManager: ExecuteQueuedTasks

Maybe just ignoring the episode(s) that cause this issue would be a solution?

Segment Editor Graphical UI

Hey,
there is another Jellyfin Tool and plugin called Media Analyzer with quite the same functionality but with an additional feature, a visual segment editor. But the whole setup process for this plugin is quite complicated since you have to use a custom Jellyfin instance, which is not so easy if you have a perfectly configured instance already set up.
Your plugin is working with an API too, so my question is if you could increase this functionality to enable compatibility with this segment editor?

[Feature Request] Adjustable Credits detection time

Currently, there are only options to adjust the max introduction time. The max 4 minutes length for credits is hard-coded. It would be nice to be able to adjust also this, since a few shows have longer credits, like the new Fallout series for example.

Add support for SyncPlay

Describe the bug

Skipping intro when using sync play doesnt work correctly.

If I click the skip intro button, it will skip ahead, and then skip backwards to where I was before

Jellyfin installation method

Docker

Container image and tag

jellyfin/jellyfin:latest

Operating System

Ubuntu

Support Bundle

  • Jellyfin version: 10.8.13
  • Plugin version: 0.1.16+7032816cbeb6
  • Queue contents: 8658 episodes, 503 seasons
  • Warnings: None
  • FFmpeg: okay

FFmpeg version:

ffmpeg version 5.1.4-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 10 (Debian 10.2.1-6)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libsvtav1 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      57. 28.100 / 57. 28.100
libavcodec     59. 37.100 / 59. 37.100
libavformat    59. 27.100 / 59. 27.100
libavdevice    59.  7.100 / 59.  7.100
libavfilter     8. 44.100 /  8. 44.100
libswscale      6.  7.100 /  6.  7.100
libswresample   4.  7.100 /  4.  7.100
libpostproc    56.  6.100 / 56.  6.100

Jellyfin logs

No response

Updating this plugin

You currently have version 0.1.10.0 installed.

I upgraded from 0.1.8.0 to 0.1.10.0 the other day however no matter how I install 0.1.10.0, 0.1.11.0, 0.1.12.0 or 0.1.13.0 I end up with 0.1.10.0. Deleting the plugin and manually installing doesn't fix it, removing the plugin and restarting to install it again doesn't change anything as I always end up with 0.1.10.0 installed.

Is this an error with the plugin or my sever?

I also notice on https://github.com/jumoog/intro-skipper/blob/v0.1.13/manifest.json 0.1.13 is not listed?

[Bug]: Can't skip intro in syncplay

Describe the bug

When being in syncplay with another person, you can't skip the intro, when clicking the button it will for 1 second go to the end of the intro and came back to normal like I've never clicked on the button.

GIF :
chrome_CZMD9DINpj

Jellyfin installation method

Docker

Container image and tag

linuxserver/jellyfin:latest

Operating System

Ubuntu 23.10

Support Bundle

* Jellyfin version: 10.8.13
* Plugin version: 0.1.17+c2727ea4e482
* Queue contents: 1841 episodes, 121 seasons
* Warnings: `InvalidChromaprintFingerprint`
* FFmpeg: `okay`

FFmpeg version:

ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      58.  2.100 / 58.  2.100
libavcodec     60.  3.100 / 60.  3.100
libavformat    60.  3.100 / 60.  3.100
libavdevice    60.  1.100 / 60.  1.100
libavfilter     9.  3.100 /  9.  3.100
libswscale      7.  1.100 /  7.  1.100
libswresample   4. 10.100 /  4. 10.100
libpostproc    57.  1.100 / 57.  1.100


### Jellyfin logs

```shell
[01:35:37] [INF] [37] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:35:57] [INF] [37] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:36:17] [INF] [52] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:36:37] [INF] [24] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:36:57] [INF] [26] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:37:18] [INF] [24] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:37:39] [INF] [24] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:37:59] [INF] [16] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:38:19] [INF] [57] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:38:39] [INF] [40] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:38:59] [INF] [50] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:39:19] [INF] [27] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:39:40] [INF] [57] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:40:00] [INF] [50] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:40:01] [INF] [56] Emby.Server.Implementations.SyncPlay.Group: Session 10d7caeeae1478df30e124372e76a8e1 left group 242e18c2-dfee-4aaa-834a-b9daf9643246.
[01:40:01] [INF] [56] Emby.Server.Implementations.SyncPlay.SyncPlayManager: Group 242e18c2-dfee-4aaa-834a-b9daf9643246 is empty, removing it.
[01:40:21] [INF] [47] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:40:41] [INF] [47] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:41:01] [INF] [47] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:41:21] [INF] [18] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:41:41] [INF] [22] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:41:59] [INF] [60] ConfusedPolarBear.Plugin.IntroSkipper.Plugin: Unstable plugin version built from commit c2727ea4e4823b26a2a079660f347cc0bd777333
[01:42:01] [INF] [55] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:42:21] [INF] [52] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:42:26] [INF] [22] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for Uruk. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[01:42:26] [INF] [22] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 20000000, RemoteIp: 90.46.201.250, IsInLocalNetwork: False
[01:42:26] [INF] [22] Jellyfin.Api.Helpers.MediaInfoHelper: StreamBuilder.BuildVideoItem( Profile=Anonymous Profile, Path=/data/series/Halo (2022)/Season 2/Halo (2022) - S02E08 - Halo [WEBDL-2160p][DV HDR10Plus][EAC3 2.0][FR+EN][h265].mkv, AudioStreamIndex=null, SubtitleStreamIndex=null ) => ( PlayMethod=Transcode, TranscodeReason=ContainerBitrateExceedsLimit ) media:/videos/97968e52-4d4c-710b-ca6b-7b228de6a020/master.m3u8?MediaSourceId=97968e524d4c710bca6b7b228de6a020&VideoCodec=h264&AudioCodec=aac,mp3&AudioStreamIndex=4&VideoBitrate=9616000&AudioBitrate=384000&MaxFramerate=23.976025&api_key=<token>&SubtitleMethod=Encode&TranscodingMaxAudioChannels=6&RequireAvc=false&Tag=10777554da56a7544d39f1be0f0edd01&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=True&hevc-level=150&hevc-videobitdepth=10&hevc-profile=main10&TranscodeReasons=ContainerBitrateExceedsLimit
[01:42:26] [INF] [22] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[01:42:26] [INF] [22] Jellyfin.Api.Helpers.TranscodingJobHelper: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -init_hw_device cuda=cu:0 -filter_hw_device cu -hwaccel cuda -hwaccel_output_format cuda -hwaccel_flags +unsafe_output -threads 1 -autorotate 0 -i file:"/data/series/Halo (2022)/Season 2/Halo (2022) - S02E08 - Halo [WEBDL-2160p][DV HDR10Plus][EAC3 2.0][FR+EN][h265].mkv" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 h264_nvenc -preset p1 -b:v 9616000 -maxrate 9616000 -bufsize 19232000 -g:v:0 72 -keyint_min:v:0 72 -vf "setparams=color_primaries=bt2020:color_trc=smpte2084:colorspace=bt2020nc,scale_cuda=w=1920:h=1080,tonemap_cuda=format=yuv420p:p=bt709:t=bt709:m=bt709:tonemap=bt2390:peak=100:desat=0" -codec:a:0 libfdk_aac -ac 2 -ab 256000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename "/data/transcodes/12e2fb01e1d910bd0224c4ca05be49f5%d.ts" -hls_playlist_type vod -hls_list_size 0 -y "/data/transcodes/12e2fb01e1d910bd0224c4ca05be49f5.m3u8"
[01:42:28] [INF] [36] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Adding playback tracker : TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNC4wLjAuMCBTYWZhcmkvNTM3LjM2fDE2ODg4NDY0Njc0OTg1-e603a716fed24c7e9662e4fd974f608e-97968e524d4c710bca6b7b228de6a020
[01:42:28] [INF] [36] Jellyfin.Plugin.PlaybackReporting.Data.PlaybackTracker: PlaybackTracker : Adding Start Event : 04/21/2024 01:42:28
[01:42:28] [INF] [36] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Creating StartPlaybackTimer Task
[01:42:28] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Entered
[01:42:28] [INF] [39] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNC4wLjAuMCBTYWZhcmkvNTM3LjM2fDE2ODg4NDY0Njc0OTg1-e603a716fed24c7e9662e4fd974f608e-97968e524d4c710bca6b7b228de6a020
[01:42:35] [INF] [45] Jellyfin.Api.Helpers.TranscodingJobHelper: Stopping ffmpeg process with q command for /data/transcodes/12e2fb01e1d910bd0224c4ca05be49f5.m3u8
[01:42:35] [INF] [45] Jellyfin.Api.Helpers.TranscodingJobHelper: FFmpeg exited with code 0
[01:42:35] [INF] [45] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[01:42:35] [INF] [45] Jellyfin.Api.Helpers.TranscodingJobHelper: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -ss 00:05:42.000 -init_hw_device cuda=cu:0 -filter_hw_device cu -hwaccel cuda -hwaccel_output_format cuda -hwaccel_flags +unsafe_output -threads 1 -autorotate 0 -i file:"/data/series/Halo (2022)/Season 2/Halo (2022) - S02E08 - Halo [WEBDL-2160p][DV HDR10Plus][EAC3 2.0][FR+EN][h265].mkv" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 h264_nvenc -preset p1 -b:v 9616000 -maxrate 9616000 -bufsize 19232000 -g:v:0 72 -keyint_min:v:0 72 -vf "setparams=color_primaries=bt2020:color_trc=smpte2084:colorspace=bt2020nc,scale_cuda=w=1920:h=1080,tonemap_cuda=format=yuv420p:p=bt709:t=bt709:m=bt709:tonemap=bt2390:peak=100:desat=0" -codec:a:0 libfdk_aac -ac 2 -ab 256000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 114 -hls_segment_filename "/data/transcodes/12e2fb01e1d910bd0224c4ca05be49f5%d.ts" -hls_playlist_type vod -hls_list_size 0 -y "/data/transcodes/12e2fb01e1d910bd0224c4ca05be49f5.m3u8"
[01:42:41] [INF] [23] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: session.RemoteEndPoint : 90.46.201.250
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_playing_id     = 97968e524d4c710bca6b7b228de6a020
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id        = e603a716fed24c7e9662e4fd974f608e
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : event_user_id_int    = 1
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_playing_id   = 97968e524d4c710bca6b7b228de6a020
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : session_user_id      = e603a716fed24c7e9662e4fd974f608e
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : play_method          = Transcode (v:h264 a:aac)
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.ClientName         = Jellyfin Web
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : e.DeviceName         = Chrome
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemName             = Halo - s02e08 - Halo
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemId               = 97968e524d4c710bca6b7b228de6a020
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : ItemType             = Episode
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : All matches, playback registered
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Playback tracker found, adding playback info : TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNC4wLjAuMCBTYWZhcmkvNTM3LjM2fDE2ODg4NDY0Njc0OTg1-e603a716fed24c7e9662e4fd974f608e-97968e524d4c710bca6b7b228de6a020
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Saving playback tracking activity in DB
[01:42:48] [INF] [4] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Exited
[01:42:49] [INF] [23] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNC4wLjAuMCBTYWZhcmkvNTM3LjM2fDE2ODg4NDY0Njc0OTg1-e603a716fed24c7e9662e4fd974f608e-97968e524d4c710bca6b7b228de6a020
[01:42:57] [INF] [60] Emby.Server.Implementations.SyncPlay.Group: Group 7bc6c3cb-2f5a-4911-806c-c9486d245050 switching from Idle to Waiting.
[01:42:57] [INF] [60] Emby.Server.Implementations.SyncPlay.Group: Session 10d7caeeae1478df30e124372e76a8e1 created group 7bc6c3cb-2f5a-4911-806c-c9486d245050.
[01:42:57] [INF] [36] Jellyfin.Api.Helpers.TranscodingJobHelper: Stopping ffmpeg process with q command for /data/transcodes/12e2fb01e1d910bd0224c4ca05be49f5.m3u8
[01:42:57] [INF] [37] Jellyfin.Api.Helpers.MediaInfoHelper: User policy for Uruk. EnablePlaybackRemuxing: True EnableVideoPlaybackTranscoding: True EnableAudioPlaybackTranscoding: True
[01:42:57] [INF] [37] Jellyfin.Api.Helpers.MediaInfoHelper: RemoteClientBitrateLimit: 20000000, RemoteIp: 90.46.201.250, IsInLocalNetwork: False
[01:42:57] [INF] [37] Jellyfin.Api.Helpers.MediaInfoHelper: StreamBuilder.BuildVideoItem( Profile=Anonymous Profile, Path=/data/series/Halo (2022)/Season 2/Halo (2022) - S02E08 - Halo [WEBDL-2160p][DV HDR10Plus][EAC3 2.0][FR+EN][h265].mkv, AudioStreamIndex=null, SubtitleStreamIndex=null ) => ( PlayMethod=Transcode, TranscodeReason=ContainerBitrateExceedsLimit ) media:/videos/97968e52-4d4c-710b-ca6b-7b228de6a020/master.m3u8?MediaSourceId=97968e524d4c710bca6b7b228de6a020&VideoCodec=h264&AudioCodec=aac,mp3&AudioStreamIndex=4&VideoBitrate=9616000&AudioBitrate=384000&MaxFramerate=23.976025&api_key=<token>&SubtitleMethod=Encode&TranscodingMaxAudioChannels=6&RequireAvc=false&Tag=10777554da56a7544d39f1be0f0edd01&SegmentContainer=ts&MinSegments=1&BreakOnNonKeyFrames=True&hevc-level=150&hevc-videobitdepth=10&hevc-profile=main10&TranscodeReasons=ContainerBitrateExceedsLimit
[01:42:57] [INF] [39] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[01:42:57] [INF] [39] Jellyfin.Api.Helpers.TranscodingJobHelper: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -init_hw_device cuda=cu:0 -filter_hw_device cu -hwaccel cuda -hwaccel_output_format cuda -hwaccel_flags +unsafe_output -threads 1 -autorotate 0 -i file:"/data/series/Halo (2022)/Season 2/Halo (2022) - S02E08 - Halo [WEBDL-2160p][DV HDR10Plus][EAC3 2.0][FR+EN][h265].mkv" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 h264_nvenc -preset p1 -b:v 9616000 -maxrate 9616000 -bufsize 19232000 -g:v:0 72 -keyint_min:v:0 72 -vf "setparams=color_primaries=bt2020:color_trc=smpte2084:colorspace=bt2020nc,scale_cuda=w=1920:h=1080,tonemap_cuda=format=yuv420p:p=bt709:t=bt709:m=bt709:tonemap=bt2390:peak=100:desat=0" -codec:a:0 libfdk_aac -ac 2 -ab 256000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 0 -hls_segment_filename "/data/transcodes/d2cf7ce2741b994a84cbc2f37c6d9745%d.ts" -hls_playlist_type vod -hls_list_size 0 -y "/data/transcodes/d2cf7ce2741b994a84cbc2f37c6d9745.m3u8"
[01:42:57] [INF] [36] Jellyfin.Api.Helpers.TranscodingJobHelper: FFmpeg exited with code 0
[01:42:57] [INF] [36] Jellyfin.Api.Helpers.TranscodingJobHelper: Deleting partial stream file(s) /data/transcodes/12e2fb01e1d910bd0224c4ca05be49f5.m3u8
[01:42:58] [INF] [37] Emby.Server.Implementations.SyncPlay.Group: Session 10d7caeeae1478df30e124372e76a8e1 requested Ready in group 7bc6c3cb-2f5a-4911-806c-c9486d245050 that is Waiting.
[01:42:58] [INF] [37] Emby.Server.Implementations.SyncPlay.Group: Group 7bc6c3cb-2f5a-4911-806c-c9486d245050 switching from Waiting to Paused.
[01:42:58] [INF] [23] Emby.Server.Implementations.SyncPlay.Group: Session 10d7caeeae1478df30e124372e76a8e1 requested Ready in group 7bc6c3cb-2f5a-4911-806c-c9486d245050 that is Paused.
[01:42:58] [INF] [23] Jellyfin.Api.Helpers.TranscodingJobHelper: Stopping ffmpeg process with q command for /data/transcodes/d2cf7ce2741b994a84cbc2f37c6d9745.m3u8
[01:42:58] [INF] [36] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Existing tracker found! : TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNC4wLjAuMCBTYWZhcmkvNTM3LjM2fDE2ODg4NDY0Njc0OTg1-e603a716fed24c7e9662e4fd974f608e-97968e524d4c710bca6b7b228de6a020
[01:42:58] [INF] [36] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Saving existing playback tracking activity in DB
[01:42:58] [INF] [36] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Removing existing tracker : TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNC4wLjAuMCBTYWZhcmkvNTM3LjM2fDE2ODg4NDY0Njc0OTg1-e603a716fed24c7e9662e4fd974f608e-97968e524d4c710bca6b7b228de6a020
[01:42:58] [INF] [36] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Adding playback tracker : TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNC4wLjAuMCBTYWZhcmkvNTM3LjM2fDE2ODg4NDY0Njc0OTg1-e603a716fed24c7e9662e4fd974f608e-97968e524d4c710bca6b7b228de6a020
[01:42:58] [INF] [36] Jellyfin.Plugin.PlaybackReporting.Data.PlaybackTracker: PlaybackTracker : Adding Start Event : 04/21/2024 01:42:58
[01:42:58] [INF] [36] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Creating StartPlaybackTimer Task
[01:42:58] [INF] [60] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: StartPlaybackTimer : Entered
[01:42:58] [INF] [36] Jellyfin.Api.Helpers.TranscodingJobHelper: FFmpeg exited with code 0
[01:42:58] [INF] [23] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[01:42:58] [INF] [23] Jellyfin.Api.Helpers.TranscodingJobHelper: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -ss 00:06:18.000 -init_hw_device cuda=cu:0 -filter_hw_device cu -hwaccel cuda -hwaccel_output_format cuda -hwaccel_flags +unsafe_output -threads 1 -autorotate 0 -i file:"/data/series/Halo (2022)/Season 2/Halo (2022) - S02E08 - Halo [WEBDL-2160p][DV HDR10Plus][EAC3 2.0][FR+EN][h265].mkv" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 h264_nvenc -preset p1 -b:v 9616000 -maxrate 9616000 -bufsize 19232000 -g:v:0 72 -keyint_min:v:0 72 -vf "setparams=color_primaries=bt2020:color_trc=smpte2084:colorspace=bt2020nc,scale_cuda=w=1920:h=1080,tonemap_cuda=format=yuv420p:p=bt709:t=bt709:m=bt709:tonemap=bt2390:peak=100:desat=0" -codec:a:0 libfdk_aac -ac 2 -ab 256000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 126 -hls_segment_filename "/data/transcodes/d2cf7ce2741b994a84cbc2f37c6d9745%d.ts" -hls_playlist_type vod -hls_list_size 0 -y "/data/transcodes/d2cf7ce2741b994a84cbc2f37c6d9745.m3u8"
[01:42:59] [INF] [23] Emby.Server.Implementations.Session.SessionManager: Playback stopped reported by app Jellyfin Web 10.8.13 playing Halo. Stopped at 378480 ms
[01:42:59] [INF] [63] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Playback stop tracker found, processing stop : TW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzExNC4wLjAuMCBTYWZhcmkvNTM3LjM2fDE2ODg4NDY0Njc0OTg1-e603a716fed24c7e9662e4fd974f608e-97968e524d4c710bca6b7b228de6a020
[01:42:59] [INF] [63] Jellyfin.Plugin.PlaybackReporting.Data.PlaybackTracker: PlaybackTracker : Adding Stop Event : 04/21/2024 01:42:59
[01:42:59] [INF] [63] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Playback stop but TrackedPlaybackInfo not found! not storing activity in DB
[01:43:01] [INF] [63] Jellyfin.Api.Helpers.TranscodingJobHelper: Stopping ffmpeg process with q command for /data/transcodes/d2cf7ce2741b994a84cbc2f37c6d9745.m3u8
[01:43:01] [INF] [60] Jellyfin.Plugin.PlaybackReporting.EventMonitorEntryPoint: Processing playback tracker : 3f600163ef6647766cc56e58083cd8edf86adfe1-e4c5f100873946a7b41026c151dab377-26d1b3ff9127e872146ba8e786b68a8e
[01:43:02] [INF] [63] Jellyfin.Api.Helpers.TranscodingJobHelper: FFmpeg exited with code 0
[01:43:02] [INF] [63] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[01:43:02] [INF] [63] Jellyfin.Api.Helpers.TranscodingJobHelper: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -ss 00:07:06.000 -init_hw_device cuda=cu:0 -filter_hw_device cu -hwaccel cuda -hwaccel_output_format cuda -hwaccel_flags +unsafe_output -threads 1 -autorotate 0 -i file:"/data/series/Halo (2022)/Season 2/Halo (2022) - S02E08 - Halo [WEBDL-2160p][DV HDR10Plus][EAC3 2.0][FR+EN][h265].mkv" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 h264_nvenc -preset p1 -b:v 9616000 -maxrate 9616000 -bufsize 19232000 -g:v:0 72 -keyint_min:v:0 72 -vf "setparams=color_primaries=bt2020:color_trc=smpte2084:colorspace=bt2020nc,scale_cuda=w=1920:h=1080,tonemap_cuda=format=yuv420p:p=bt709:t=bt709:m=bt709:tonemap=bt2390:peak=100:desat=0" -codec:a:0 libfdk_aac -ac 2 -ab 256000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 142 -hls_segment_filename "/data/transcodes/d2cf7ce2741b994a84cbc2f37c6d9745%d.ts" -hls_playlist_type vod -hls_list_size 0 -y "/data/transcodes/d2cf7ce2741b994a84cbc2f37c6d9745.m3u8"
[01:43:05] [INF] [4] Emby.Server.Implementations.SyncPlay.Group: Session 10d7caeeae1478df30e124372e76a8e1 requested Unpause in group 7bc6c3cb-2f5a-4911-806c-c9486d245050 that is Paused.
[01:43:05] [INF] [4] Emby.Server.Implementations.SyncPlay.Group: Group 7bc6c3cb-2f5a-4911-806c-c9486d245050 switching from Paused to Playing.
[01:43:06] [INF] [4] Jellyfin.Api.Helpers.TranscodingJobHelper: Stopping ffmpeg process with q command for /data/transcodes/d2cf7ce2741b994a84cbc2f37c6d9745.m3u8
[01:43:06] [INF] [4] Jellyfin.Api.Helpers.TranscodingJobHelper: FFmpeg exited with code 0
[01:43:06] [INF] [4] Jellyfin.Api.Controllers.DynamicHlsController: Current HLS implementation doesn't support non-keyframe breaks but one is requested, ignoring that request
[01:43:06] [INF] [4] Jellyfin.Api.Helpers.TranscodingJobHelper: /usr/lib/jellyfin-ffmpeg/ffmpeg -analyzeduration 200M -ss 00:06:42.000 -init_hw_device cuda=cu:0 -filter_hw_device cu -hwaccel cuda -hwaccel_output_format cuda -hwaccel_flags +unsafe_output -threads 1 -autorotate 0 -i file:"/data/series/Halo (2022)/Season 2/Halo (2022) - S02E08 - Halo [WEBDL-2160p][DV HDR10Plus][EAC3 2.0][FR+EN][h265].mkv" -autoscale 0 -map_metadata -1 -map_chapters -1 -threads 0 -map 0:0 -map 0:1 -map -0:s -codec:v:0 h264_nvenc -preset p1 -b:v 9616000 -maxrate 9616000 -bufsize 19232000 -g:v:0 72 -keyint_min:v:0 72 -vf "setparams=color_primaries=bt2020:color_trc=smpte2084:colorspace=bt2020nc,scale_cuda=w=1920:h=1080,tonemap_cuda=format=yuv420p:p=bt709:t=bt709:m=bt709:tonemap=bt2390:peak=100:desat=0" -codec:a:0 libfdk_aac -ac 2 -ab 256000 -copyts -avoid_negative_ts disabled -max_muxing_queue_size 2048 -f hls -max_delay 5000000 -hls_time 3 -hls_segment_type mpegts -start_number 134 -hls_segment_filename "/data/transcodes/d2cf7ce2741b994a84cbc2f37c6d9745%d.ts" -hls_playlist_type vod -hls_list_size 0 -y "/data/transcodes/d2cf7ce2741b994a84cbc2f37c6d9745.m3u8"
[01:43:06] [INF] [4] Emby.Server.Implementations.SyncPlay.Group: Session 10d7caeeae1478df30e124372e76a8e1 requested Ready in group 7bc6c3cb-2f5a-4911-806c-c9486d245050 that is Playing.
[01:43:07] [INF] [16] Emby.Server.Implementations.SyncPlay.Group: Session 10d7caeeae1478df30e124372e76a8e1 requested Ready in group 7bc6c3cb-2f5a-4911-806c-c9486d245050 that is Playing.
[01:43:11] [INF] [27] Emby.Server.Implementations.SyncPlay.Group: Session 10d7caeeae1478df30e124372e76a8e1 requested Ready in group 7bc6c3cb-2f5a-4911-806c-c9486d245050 that is Playing.
[01:43:13] [INF] [63] Emby.Server.Implementations.SyncPlay.Group: Session 10d7caeeae1478df30e124372e76a8e1 requested Pause in group 7bc6c3cb-2f5a-4911-806c-c9486d245050 that is Playing.
[01:43:13] [INF] [63] Emby.Server.Implementations.SyncPlay.Group: Group 7bc6c3cb-2f5a-4911-806c-c9486d245050 switching from Playing to Paused.

Android does not show the button

Hello, sorry, but I'm fairly new here when it comes to asking questions or problems, and I'm not sure if this is the appropriate place.

My question is that after implementation, I can't get it to work on my Android phone; it doesn't show the button (skip introduction and skip credits).

Is there something specific that needs to be done for it to work on Android or Android TV? I'm interested in both.

I'm working with docker-compose. If there's any example of why it might not be working, I would appreciate it.

Previously, I did use the old version of this plugin, but I installed /jellyfin/jellyfin-web:ro, which was what made it work, and from the tests I've done, this shouldn't appear now.

Thank you very much.

New update breaks "Support Bundle Info" output

When clicking the "Support Bundle Info" dropdown arrow the output is: "Error processing request.". Unsure if whether any other functionality is affected, but wanted to point out the issue. All other option dropdown arrows seem to be working properly.

Installed version: 0.1.16.1

[Bug]: "Ignore intro in the first episode of a season" functionality inverted?

Describe the bug

In the settings there is an option (checkbox) entitled:
Ignore intro in the first episode of a season
The description is written as:
If checked, auto skip will ignore introduction in the first episode of a season.

I assumed that this meant if this box was unchecked, then first episode would also have introduction skipped automatically. It seems that the opposite is true though (when checked, episode skips). Based on the description it seems that ignoring auto skip would mean that the first episode introduction is not skipped, but the opposite is true in my case. Re-writing the description would probably be the fastest way to remedy this issue. If someone else could confirm this behavior that would be great. Okay, thanks in advance.

Jellyfin installation method

apt

Container image and tag

No response

Operating System

Ubuntu 20.04

Support Bundle

  • Jellyfin version: 10.8.13
  • Plugin version: 0.1.16+7032816cbeb6
  • Queue contents: [Redacted] episodes, [Redacted] seasons
  • Warnings: UnableToAddSkipButton, InvalidChromaprintFingerprint
  • FFmpeg: okay

FFmpeg version:

ffmpeg version 5.1.4-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      57. 28.100 / 57. 28.100
libavcodec     59. 37.100 / 59. 37.100
libavformat    59. 27.100 / 59. 27.100
libavdevice    59.  7.100 / 59.  7.100
libavfilter     8. 44.100 /  8. 44.100
libswscale      6.  7.100 /  6.  7.100
libswresample   4.  7.100 /  4.  7.100
libpostproc    56.  6.100 / 56.  6.100

Jellyfin logs

No response

Androidtv app not working with this plugin

So, for the androidtv jellyfin app (0.16.2) found here: https://github.com/jellyfin/jellyfin-androidtv, this plugin does not work. The popup appears, but the media is not skipped. If I post an issue on the jelyfin androidtv app github the response I get is: "We do not support third party plugins. Please open an issue with the author." So, not sure what to do. I tested the webapp and the jellyfin media player desktop app and this plugin works great for both of those, just not the androidtv app. Is there something different about the way the tv app works? Any way to recompile it to get this plugin to work? Okay, thanks.

Edit: Spelling typo.

[Bug]: Jellyfin API-Docs (api-docs/swagger/index.html) not rendering when plugin installed

Describe the bug

Hello everybody,
today I noticed that the local Jellyfin API docs are not being rendered when this plugin is installed.
You get the following error message when calling /api-docs/swagger/index.html

Fetch error
Internal Server Error /api-docs/openapi.json

screenshot

The relevant Jellyfin log lines indicate that this is because no explicit HttpMethod is defined for a particular action.

I tested it with the latest pre-release version "intro-skipper-fd63670".

Apparently it is sufficient if the HTTP method is set for the action.
I tested this in a fork of the repo locally and the API documentation was loaded successfully again.

I will create a pull request for this.

If you also think that this is a bug, please feel free to merge it.
If you have any further questions, I will be happy to answer them.

Jellyfin installation method

Installation over Jellyfin APT-Repository for Ubuntu

Container image and tag

No response

Operating System

Ubuntu 22.04

Support Bundle

  • Jellyfin version: 10.8.13
  • Plugin version: 0.1.16+fd636706cc4d
  • Queue contents: 0 episodes, 0 seasons
  • Warnings: UnableToAddSkipButton
  • FFmpeg: okay

FFmpeg version:

ffmpeg version 5.1.4-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      57. 28.100 / 57. 28.100
libavcodec     59. 37.100 / 59. 37.100
libavformat    59. 27.100 / 59. 27.100
libavdevice    59.  7.100 / 59.  7.100
libavfilter     8. 44.100 /  8. 44.100
libswscale      6.  7.100 /  6.  7.100
libswresample   4.  7.100 /  4.  7.100
libpostproc    56.  6.100 / 56.  6.100

Jellyfin logs

[2024-03-10 19:19:36.895 +01:00] [ERR] [192] Jellyfin.Server.Middleware.ExceptionMiddleware: Error processing request. URL "GET" "/api-docs/openapi.json".
Swashbuckle.AspNetCore.SwaggerGen.SwaggerGeneratorException: Ambiguous HTTP method for action - ConfusedPolarBear.Plugin.IntroSkipper.Controllers.SkipIntroController.GetUserInterfaceConfiguration (ConfusedPolarBear.Plugin.IntroSkipper). Actions require an explicit HttpMethod binding for Swagger/OpenAPI 3.0
   at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GenerateOperations(IEnumerable`1 apiDescriptions, SchemaRepository schemaRepository)
   at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GeneratePaths(IEnumerable`1 apiDescriptions, SchemaRepository schemaRepository)
   at Swashbuckle.AspNetCore.SwaggerGen.SwaggerGenerator.GetSwagger(String documentName, String host, String basePath)
   at Swashbuckle.AspNetCore.Swagger.SwaggerMiddleware.Invoke(HttpContext httpContext, ISwaggerProvider swaggerProvider)
   at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
   at Jellyfin.Server.Middleware.LegacyEmbyRouteRewriteMiddleware.Invoke(HttpContext httpContext)
   at Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMiddleware.InvokeCore(HttpContext context)
   at Jellyfin.Server.Middleware.ResponseTimeMiddleware.Invoke(HttpContext context, IServerConfigurationManager serverConfigurationManager)
   at Jellyfin.Server.Middleware.ExceptionMiddleware.Invoke(HttpContext context)

[Bug]: Skip button not displayed

Describe the bug

I'm using nyanmisaka/jellyfin,"Automatically skip intros" works fine,but โ€œShow skip intro button" not working.

Jellyfin installation method

Docker

Container image and tag

nyanmisaka/jellyfin:latest,intro skipper 0.1.16.4

Operating System

Synology DSM 7.21

Support Bundle

  • Jellyfin version: 10.8.13
  • Plugin version: 0.1.16+ccb3bbc6835f
  • Queue contents: 2747 episodes, 198 seasons
  • Warnings: None
  • FFmpeg: okay

FFmpeg version:

ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 12 (Debian 12.2.0-14)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      58.  2.100 / 58.  2.100
libavcodec     60.  3.100 / 60.  3.100
libavformat    60.  3.100 / 60.  3.100
libavdevice    60.  1.100 / 60.  1.100
libavfilter     9.  3.100 /  9.  3.100
libswscale      7.  1.100 /  7.  1.100
libswresample   4. 10.100 /  4. 10.100
libpostproc    57.  1.100 / 57.  1.100

Jellyfin logs

No response

[Bug]: Warning after folder is renamed.

Describe the bug

Recently, I renamed this Hanasaku Iroha - Blossoms for Tomorrow (2011) [tmdbid-42417] folder and the mkv file using sonarr. And whenever detect intros and credits task run, Chromaprint returned 0 points warning is show up in log and then in the support bundle info this InvalidChromaprintFingerprint warning will show. Is there any way to get rid of it?

Jellyfin installation method

Ubuntu apt

Container image and tag

No response

Operating System

Ubuntu 22.04

Support Bundle

* Jellyfin version: 10.9.0
* Plugin version: 0.2.0+c20370c47f06
* Queue contents: 9417 episodes, 716 seasons
* Warnings: `InvalidChromaprintFingerprint`
* FFmpeg: `okay`

FFmpeg version:

ffmpeg version 6.0.1-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-opencl --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-vaapi --enable-amf --enable-libvpl --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      58.  2.100 / 58.  2.100
libavcodec     60.  3.100 / 60.  3.100
libavformat    60.  3.100 / 60.  3.100
libavdevice    60.  1.100 / 60.  1.100
libavfilter     9.  3.100 /  9.  3.100
libswscale      7.  1.100 /  7.  1.100
libswresample   4. 10.100 /  4. 10.100
libpostproc    57.  1.100 / 57.  1.100

Jellyfin logs

May 03 14:13:29 ubuntu-server jellyfin[2849506]: Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used).
May 03 14:13:29 ubuntu-server jellyfin[2818279]: [14:13:29] [WRN] Chromaprint returned 0 points for "/mnt/hdd/Anime/Hanasaku Iroha - Blossoms for Tomorrow (2011) [tmdbid-42417]/Season 00/Hanasaku Iroha - Blossoms for Tomorrow - S00E01.mkv"

[Bug]: No able to save setting after update to jellyfin 10.8.13

Describe the bug

No able to save setting after update to jellyfin 10.8.13. The screen will flashback to nothing selected after save.

Jellyfin installation method

Docker

Container image and tag

nyanmisaka/jellyfin:latest

Operating System

Synology DS920+

Support Bundle

its emtpy

Jellyfin logs

No response

[Feature Request]: Show credit information in "Manage Fingerprints" page.

Describe the bug

I noticed that credits were not scanned/being skipped for a show I have so I wanted to check on the plugin page, but the timestamps for the credits are not listed there. It would be helpful information to have access to and/or edit.

Jellyfin installation method

apt

Container image and tag

No response

Operating System

Ubuntu 20.04

Support Bundle

* Jellyfin version: 10.8.13
* Plugin version: 0.1.17+c2727ea4e482
* Queue contents: 19349 episodes, 1243 seasons
* Warnings: `UnableToAddSkipButton, InvalidChromaprintFingerprint`
* FFmpeg: `okay`

FFmpeg version:

ffmpeg version 5.1.4-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      57. 28.100 / 57. 28.100
libavcodec     59. 37.100 / 59. 37.100
libavformat    59. 27.100 / 59. 27.100
libavdevice    59.  7.100 / 59.  7.100
libavfilter     8. 44.100 /  8. 44.100
libswscale      6.  7.100 /  6.  7.100
libswresample   4.  7.100 /  4.  7.100
libpostproc    56.  6.100 / 56.  6.100


### Jellyfin logs

_No response_

[Bug]: detect intros and outros task always fails

Describe the bug

When i try to detect intros and outros the task always fails

Jellyfin installation method

Docker

Container image and tag

lscr.io/linuxserver/jellyfin:latest

Operating System

Unraid 6.12.10

IMDb ID of that TV Series

No response

Support Bundle

* Jellyfin version: 10.8.13
* Plugin version: 0.1.17+c2727ea4e482
* Queue contents: 14926 episodes, 505 seasons
* Warnings: `UnableToAddSkipButton`
* FFmpeg: `okay`

FFmpeg version:

ffmpeg version 5.1.4-Jellyfin Copyright (c) 2000-2023 the FFmpeg developers
built with gcc 11 (Ubuntu 11.4.0-1ubuntu1~22.04)
configuration: --prefix=/usr/lib/jellyfin-ffmpeg --target-os=linux --extra-libs=-lfftw3f --extra-version=Jellyfin --disable-doc --disable-ffplay --disable-ptx-compression --disable-static --disable-libxcb --disable-sdl2 --disable-xlib --enable-lto --enable-gpl --enable-version3 --enable-shared --enable-gmp --enable-gnutls --enable-chromaprint --enable-libdrm --enable-libass --enable-libfreetype --enable-libfribidi --enable-libfontconfig --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvorbis --enable-libopenmpt --enable-libdav1d --enable-libsvtav1 --enable-libwebp --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzvbi --enable-libzimg --enable-libfdk-aac --arch=amd64 --enable-libshaderc --enable-libplacebo --enable-vulkan --enable-opencl --enable-vaapi --enable-amf --enable-libmfx --enable-ffnvcodec --enable-cuda --enable-cuda-llvm --enable-cuvid --enable-nvdec --enable-nvenc
libavutil      57. 28.100 / 57. 28.100
libavcodec     59. 37.100 / 59. 37.100
libavformat    59. 27.100 / 59. 27.100
libavdevice    59.  7.100 / 59.  7.100
libavfilter     8. 44.100 /  8. 44.100
libswscale      6.  7.100 /  6.  7.100
libswresample   4.  7.100 /  4.  7.100
libpostproc    56.  6.100 / 56.  6.100


### Jellyfin logs

```shell
[22:10:44] [INF] [28] Emby.Server.Implementations.ScheduledTasks.TaskManager: Executing Detect Intros and Credits
Trailing option(s) found in the command: may be ignored.
Trailing option(s) found in the command: may be ignored.
Trailing option(s) found in the command: may be ignored.
Trailing option(s) found in the command: may be ignored.
[22:10:44] [INF] [28] ConfusedPolarBear.Plugin.IntroSkipper.QueueManager: Running enqueue of items in library Anime
[22:10:44] [INF] [28] ConfusedPolarBear.Plugin.IntroSkipper.QueueManager: Running enqueue of items in library Serien
[22:10:44] [INF] [28] ConfusedPolarBear.Plugin.IntroSkipper.QueueManager: Running enqueue of items in library Filme
[22:10:44] [INF] [28] ConfusedPolarBear.Plugin.IntroSkipper.QueueManager: Running enqueue of items in library Collections
[22:10:44] [INF] [28] ConfusedPolarBear.Plugin.IntroSkipper.DetectIntrosCreditsTask: Analyzing 8 files from .hack//Liminality season 1
[22:10:44] [INF] [28] ConfusedPolarBear.Plugin.IntroSkipper.DetectIntrosCreditsTask: Analyzing 6 files from .hack//Quantum season 1
[22:10:45] [INF] [28] ConfusedPolarBear.Plugin.IntroSkipper.DetectIntrosCreditsTask: Analyzing 52 files from .hack//ROOTS season 1
[22:10:45] [ERR] [28] Emby.Server.Implementations.ScheduledTasks.TaskManager: Error
System.AggregateException: One or more errors occurred. (An item with the same key has already been added. Key: b16fbb5e-a045-2263-ee56-5f197cdb9585)
 ---> System.ArgumentException: An item with the same key has already been added. Key: b16fbb5e-a045-2263-ee56-5f197cdb9585
   at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
   at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   at ConfusedPolarBear.Plugin.IntroSkipper.ChapterAnalyzer.AnalyzeMediaFiles(ReadOnlyCollection`1 analysisQueue, AnalysisMode mode, CancellationToken cancellationToken)
   at ConfusedPolarBear.Plugin.IntroSkipper.BaseItemAnalyzerTask.AnalyzeItems(ReadOnlyCollection`1 items, CancellationToken cancellationToken)
   at ConfusedPolarBear.Plugin.IntroSkipper.BaseItemAnalyzerTask.<>c__DisplayClass5_0.<AnalyzeItems>b__0(KeyValuePair`2 season)
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.<>c__DisplayClass44_0`2.<PartitionerForEachWorker>b__1(IEnumerator& partitionState, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica`1.ExecuteAction(Boolean& yieldedBeforeCompletion)
   at System.Threading.Tasks.TaskReplicator.Replica.Execute()
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.TaskReplicator.Run[TState](ReplicatableUserAction`1 action, ParallelOptions options, Boolean stopOnFirstFailure)
   at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 simpleBody, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
--- End of stack trace from previous location ---
   at System.Threading.Tasks.Parallel.ThrowSingleCancellationExceptionOrOtherException(ICollection exceptions, CancellationToken cancelToken, Exception otherException)
   at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 simpleBody, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Action`3 bodyWithStateAndIndex, Func`4 bodyWithStateAndLocal, Func`5 bodyWithEverything, Func`1 localInit, Action`1 localFinally)
   at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body)
   at ConfusedPolarBear.Plugin.IntroSkipper.BaseItemAnalyzerTask.AnalyzeItems(IProgress`1 progress, CancellationToken cancellationToken)
   at ConfusedPolarBear.Plugin.IntroSkipper.DetectIntrosCreditsTask.ExecuteAsync(IProgress`1 progress, CancellationToken cancellationToken)
   at Emby.Server.Implementations.ScheduledTasks.ScheduledTaskWorker.ExecuteInternal(TaskOptions options)

Support Jellyfin 10.9.0

Description

According to https://jellyfin.org/posts/testing-10.9.0/ :
Jellyfin 10.9.0 is scheduled for release during the weekend of April 26th-28th

It would be neat if this plugin worked right away after upgrading.

Additional context

I'm running 10.9.0 from the unstable docker image and would be happy to test stuff.

Right now 0.1.16.4 gives this error in the Jellyfin 10.9.0 log:

[16:51:11] [ERR] Failed to load assembly /config/plugins/Intro Skipper_0.1.16.4/ConfusedPolarBear.Plugin.IntroSkipper.dll. This error occurs when a plugin references an incompatible version of one of the shared libraries. Disabling plugin
System.Reflection.ReflectionTypeLoadException: Unable to load one or more of the requested types.
Could not load type 'MediaBrowser.Controller.Plugins.IServerEntryPoint' from assembly 'MediaBrowser.Controller, Version=10.9.0.0, Culture=neutral, PublicKeyToken=null'.
Could not load type 'MediaBrowser.Controller.Plugins.IServerEntryPoint' from assembly 'MediaBrowser.Controller, Version=10.9.0.0, Culture=neutral, PublicKeyToken=null'.
   at System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
   at System.Reflection.RuntimeModule.GetTypes()
   at Emby.Server.Implementations.Plugins.PluginManager.LoadAssemblies()+MoveNext()
System.TypeLoadException: Could not load type 'MediaBrowser.Controller.Plugins.IServerEntryPoint' from assembly 'MediaBrowser.Controller, Version=10.9.0.0, Culture=neutral, PublicKeyToken=null'.
System.TypeLoadException: Could not load type 'MediaBrowser.Controller.Plugins.IServerEntryPoint' from assembly 'MediaBrowser.Controller, Version=10.9.0.0, Culture=neutral, PublicKeyToken=null'.

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.