Jump to content

Show Intro Skip Option


Liquidfire88

Recommended Posts

rbjtech
44 minutes ago, fallenwitch3r said:

Just my 5 cents but I think it would be better to extract the pictures after saving the right start/end time to prevent the high CPU load. Maybe with a resolution of 320x320. 

The random stopping during the detection progress seems to be fixed.

The frames are accessed on demand.

So if you look at Season 1 of Lost, that's the only frames it will grab.  If the season has 10 episodes, then it will grab 30 images - 3 from each episode.

All it is technically doing is telling ffmpeg to jump to the location and extract the frame - (it is effectively creating a thumbnail - the exact same thing that emby uses - it is also the same low resolution )

In summary, it should not be spiking the CPU any more than the thumbnail task would do, but for a very short period as it's only creating 3 'images' per epsiode, not 100's per episode (if you have it set to 10secs interval). 

Link to comment
Share on other sites

FrostyCoolSlug
On 19/11/2021 at 10:52, rbjtech said:

Hi - thanks for the feedback.

You may not be aware (we need to make this more obvious..) but you can directly add/edit any of the times listed under the thumbnails by overtyping the time - and then hit the 'Save' button on the right.

For one off's such as this - then there is 'something' (inaudible to you and I) that is off with that audio - thus it is not being matched to anything else - so a manual edit, is likely the only way to correct it I'm afraid.

I need to confirm what happens after you make the correction, I believe it re-runs the chapter insertion with your corrected data.. - brb.

update - so any corrected time data is saved but the chapter info is not being updated even after manually running the chapter/thumb task.  You may have discovered a bug (or something we forget to add lol).  Thanks - We'll need to look at this.. 👍 

@chef @Cheesegeezer - I'll ping you in the PM chat - I've done some quick testing on this.

Thanks for the reply, and apologies for the delay getting back to you.

I reported this specific case as the plugin was claiming it had detected the intro (true on the drop-down, and flagged as found in the log), but the timestamps indicate it hadn't been found, so there may be something strange going on there.

With that having been said, I've discovered what has happened, I've accidentally duplicated an episode, so that file is the same as another episode in the season, and first few minutes of those episodes match each other, and the plugin correctly spotted it and flagged it as an intro :)

I've corrected the episode and the detection has worked fine this time.

One request, would it be possible on the stats page to be able to link to a season on the episodes page? Just to make fixing and checking misses a little easier?

Thanks!

Edited by FrostyCoolSlug
  • Agree 1
  • Thanks 1
Link to comment
Share on other sites

rbjtech
9 minutes ago, FrostyCoolSlug said:

One request, would it be possible on the stats page to be able to link to a season on the episodes page? Just to make fixing and checking misses a little easier?

Nice idea, I like it. 

We do this on the main page as no doubt you are aware (click the main thumb on the left), but we don't do this on the report.  @Cheesegeezer is this something we could accommodate ?

  • Like 2
Link to comment
Share on other sites

4 hours ago, fallenwitch3r said:

Just my 5 cents but I think it would be better to extract the pictures after saving the right start/end time to prevent the high CPU load. Maybe with a resolution of 320x320. 

The random stopping during the detection progress seems to be fixed.

I also reported this "issue" as I was seeing the same like you on the first detection run.
Second run is currently running but the result will be the same I'm afraid as my files are on a network storage and the delay comes from there I guess.

Edit: By the time I reported I was told that caching those images would require quite some space, iirc it was like ~40GB for 30000 images and therefore it was denied.

Edited by neik
  • Like 1
Link to comment
Share on other sites

Okay, we can make it an option to cache the images.

It will be a toggle in advanced settings.

 

  • Like 1
Link to comment
Share on other sites

fallenwitch3r
28 minutes ago, chef said:

Okay, we can make it an option to cache the images.

It will be a toggle in advanced settings.

 

Sounds nice. Especially for people who have a low powerd CPU and don't care much about space on the HDD

  • Like 1
Link to comment
Share on other sites

1 hour ago, chef said:

Okay, we can make it an option to cache the images.

It will be a toggle in advanced settings.

Just thinking about this:

Is it possible that the detected times change for example by changing confidence score?
If so, then you would need to check the detected times and if they changed that particular image would need to be extracted again otherwise you would just load the cached images, right?

Link to comment
Share on other sites

Some strange things I noticed while having a look at the running detection logs:

Quote
2021-11-22 21:01:48.341 Debug Intro Skip: 
DETECTION processed 7 compared items for American Horror Stories Season 1 Episode 3.
Best result: American Horror Stories - Season 1 Episode 3 
TITLE SEQUENCE START: 00:07:14 
TITLE SEQUENCE END: 00:08:14 
CREDIT START: 00:40:02.7750000
CREDIT END: 00:41:16.9600000
CREDIT CONFIDENCE: 18.21
TITLE SEQUENCE CONFIDENCE: 1.02

Confidence is quite high, isn't it?

 

Quote

2021-11-22 20:02:33.343 Debug Intro Skip: Looney Tunes Cartoons Season 1 Episode 46:
Credit sequence audio detection start: -00:02:25.4720000.
No black frame detected within contiguous regions.
2021-11-22 20:02:33.345 Debug Intro Skip: 
DETECTION processed 58 compared items for Looney Tunes Cartoons Season 1 Episode 46.
Best result: Looney Tunes Cartoons - Season 1 Episode 46 
TITLE SEQUENCE START: 00:00:00 
TITLE SEQUENCE END: 00:00:00 
CREDIT START: -00:02:25.4720000
CREDIT END: 00:00:34.5280000
CREDIT CONFIDENCE: 1
TITLE SEQUENCE CONFIDENCE: 1

Credit start is a bit too early with that "minus" at the beginning.. 😄 

Detection currently at ~17% and counting,

Link to comment
Share on other sites

1 hour ago, neik said:

Just thinking about this:

Is it possible that the detected times change for example by changing confidence score?
If so, then you would need to check the detected times and if they changed that particular image would need to be extracted again otherwise you would just load the cached images, right?

Yes, keeping a cache updated needs to be coded. But, I got it. 😉

Link to comment
Share on other sites

1 hour ago, neik said:

Some strange things I noticed while having a look at the running detection logs:

Confidence is quite high, isn't it?

 

Credit start is a bit too early with that "minus" at the beginning.. 😄 

Detection currently at ~17% and counting,

If you see that again , let me know.

It looks like it has taken the duration of the intro as the start time.

So yeah, that calculation is strange.

 

Link to comment
Share on other sites

10 hours ago, chef said:

If you see that again , let me know.

It looks like it has taken the duration of the intro as the start time.

So yeah, that calculation is strange.

Just had a look again and saw this:

Quote
DETECTION processed 16 compared items for American Chopper: Senior vs. Junior Season 1 Episode 11.
Best result: American Chopper: Senior vs. Junior - Season 1 Episode 11 
TITLE SEQUENCE START: 00:00:59 
TITLE SEQUENCE END: 00:01:20 
CREDIT START: 00:00:00
CREDIT END: 00:44:30.1832500
CREDIT CONFIDENCE: 0
TITLE SEQUENCE CONFIDENCE: 1.02

What do you guys do with this information?

 

Edit:
High confidence score just happened again...

Quote
2021-11-23 10:14:35.059 Debug Intro Skip: 
DETECTION processed 13 compared items for Bob's Burgers Season 1 Episode 4.
Best result: Bob's Burgers - Season 1 Episode 4 
TITLE SEQUENCE START: 00:00:00 
TITLE SEQUENCE END: 00:00:18 
CREDIT START: 00:20:48.4000000
CREDIT END: 00:20:49.6640000
CREDIT CONFIDENCE: 20.16
TITLE SEQUENCE CONFIDENCE: 1

 

Edited by neik
  • Thanks 1
Link to comment
Share on other sites

On the first example you have (American chopper) it doesn't say in the logs there, but we have flagged the credit sequence as 'HasCredit=false'.

The score was zero, and all we had was the runtime of the item. We weren't able to detect the end credits there.

 

On the second example (bobs burgers) The really high scores on the data seem to happen when every single episode in the season has the exact same or similar contiguous regions, and each episode has added to the score. It then seems to push the confidence level waaaaay out of bounds.

There isn't a condition to keep perfect scores in check. I suppose it just means exactly what you would think. The calculation is extremely sure it is correct. 😆

 

That being said, we had better put a condition in place to handle out of bounds scoring.

Edited by chef
Link to comment
Share on other sites

My detection just stopped at about 26% with following error msg:

Quote
2021-11-23 19:22:05.207 Error Intro Skip: One or more errors occurred. (Value cannot be null. (Parameter 'source'))
	*** Error Report ***
	Version: 4.7.0.18
	Command line: /opt/emby-server/system/EmbyServer.dll -programdata /var/lib/emby -ffdetect /opt/emby-server/bin/ffdetect -ffmpeg /opt/emby-server/bin/ffmpeg -ffprobe /opt/emby-server/bin/ffprobe -restartexitcode 3 -updatepackage emby-server-deb_{version}_amd64.deb
	Operating system: Linux version 5.4.0-88-generic (buildd@lgw01-amd64-008) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #99-Ubuntu SMP Thu Sep 23 17:29:00 UTC 2021
	Framework: .NET 6.0.0-rtm.21522.10
	OS/Process: x64/x64
	Runtime: opt/emby-server/system/System.Private.CoreLib.dll
	Processor count: 4
	Data path: /var/lib/emby
	Application path: /opt/emby-server/system
	System.AggregateException: System.AggregateException: One or more errors occurred. (Value cannot be null. (Parameter 'source'))
	 ---> System.ArgumentNullException: Value cannot be null. (Parameter 'source')
	   at System.Linq.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
	   at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source)
	   at IntroSkip.Detection.SequenceDetectionManager.Clean(BaseItem season, ISequenceRepository repo, CancellationToken cancellationToken)
	   at IntroSkip.Detection.SequenceDetectionManager.<>c__DisplayClass17_0.<Analyze>b__0(BaseItem series, ParallelLoopState state)
	   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
	--- End of stack trace from previous location ---
	   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, 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.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, 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.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
	   at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](TSource[] array, 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.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`2 body)
	   at IntroSkip.Detection.SequenceDetectionManager.Analyze(QueryResult`1 seriesQuery, IProgress`1 progress, CancellationToken cancellationToken, ISequenceRepository repository)
	   at IntroSkip.Detection.SequenceDetectionManager.Analyze(CancellationToken cancellationToken, IProgress`1 progress, ISequenceRepository repository)
	   at IntroSkip.ScheduledTasks.SequenceDetectionScheduledTask.Execute(CancellationToken cancellationToken, IProgress`1 progress)
	Source: System.Threading.Tasks.Parallel
	TargetSite: Void Run[TState](ReplicatableUserAction`1, System.Threading.Tasks.ParallelOptions, Boolean)
	InnerException: System.ArgumentNullException: Value cannot be null. (Parameter 'source')
	Source: System.Linq
	TargetSite: Void ThrowArgumentNullException(System.Linq.ExceptionArgument)
	   at System.Linq.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
	   at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source)
	   at IntroSkip.Detection.SequenceDetectionManager.Clean(BaseItem season, ISequenceRepository repo, CancellationToken cancellationToken)
	   at IntroSkip.Detection.SequenceDetectionManager.<>c__DisplayClass17_0.<Analyze>b__0(BaseItem series, ParallelLoopState state)
	   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
	--- End of stack trace from previous location ---
	   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
	   at System.Threading.Tasks.TaskReplicator.Replica.Execute()

 

Link to comment
Share on other sites

2 hours ago, chef said:

@neik are there ffmpeg processes currently running in your list of processes?

Nope, seems to have stopped altogether.

Just started it again to see how it goes.

Link to comment
Share on other sites

47 minutes ago, neik said:

Just started it again to see how it goes.

And there is the error again:

Quote
2021-11-24 00:04:37.531 Error Intro Skip: One or more errors occurred. (Value cannot be null. (Parameter 'source'))
	*** Error Report ***
	Version: 4.7.0.18
	Command line: /opt/emby-server/system/EmbyServer.dll -programdata /var/lib/emby -ffdetect /opt/emby-server/bin/ffdetect -ffmpeg /opt/emby-server/bin/ffmpeg -ffprobe /opt/emby-server/bin/ffprobe -restartexitcode 3 -updatepackage emby-server-deb_{version}_amd64.deb
	Operating system: Linux version 5.4.0-88-generic (buildd@lgw01-amd64-008) (gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)) #99-Ubuntu SMP Thu Sep 23 17:29:00 UTC 2021
	Framework: .NET 6.0.0-rtm.21522.10
	OS/Process: x64/x64
	Runtime: opt/emby-server/system/System.Private.CoreLib.dll
	Processor count: 4
	Data path: /var/lib/emby
	Application path: /opt/emby-server/system
	System.AggregateException: System.AggregateException: One or more errors occurred. (Value cannot be null. (Parameter 'source'))
	 ---> System.ArgumentNullException: Value cannot be null. (Parameter 'source')
	   at System.Linq.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
	   at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source)
	   at IntroSkip.Detection.SequenceDetectionManager.Clean(BaseItem season, ISequenceRepository repo, CancellationToken cancellationToken)
	   at IntroSkip.Detection.SequenceDetectionManager.<>c__DisplayClass17_0.<Analyze>b__0(BaseItem series, ParallelLoopState state)
	   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
	--- End of stack trace from previous location ---
	   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, 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.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, 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.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
	   at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](TSource[] array, 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.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`2 body)
	   at IntroSkip.Detection.SequenceDetectionManager.Analyze(QueryResult`1 seriesQuery, IProgress`1 progress, CancellationToken cancellationToken, ISequenceRepository repository)
	   at IntroSkip.Detection.SequenceDetectionManager.Analyze(CancellationToken cancellationToken, IProgress`1 progress, ISequenceRepository repository)
	   at IntroSkip.ScheduledTasks.SequenceDetectionScheduledTask.Execute(CancellationToken cancellationToken, IProgress`1 progress)
	Source: System.Threading.Tasks.Parallel
	TargetSite: Void Run[TState](ReplicatableUserAction`1, System.Threading.Tasks.ParallelOptions, Boolean)
	InnerException: System.ArgumentNullException: Value cannot be null. (Parameter 'source')
	Source: System.Linq
	TargetSite: Void ThrowArgumentNullException(System.Linq.ExceptionArgument)
	   at System.Linq.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
	   at System.Linq.Enumerable.Any[TSource](IEnumerable`1 source)
	   at IntroSkip.Detection.SequenceDetectionManager.Clean(BaseItem season, ISequenceRepository repo, CancellationToken cancellationToken)
	   at IntroSkip.Detection.SequenceDetectionManager.<>c__DisplayClass17_0.<Analyze>b__0(BaseItem series, ParallelLoopState state)
	   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
	--- End of stack trace from previous location ---
	   at System.Threading.Tasks.Parallel.<>c__DisplayClass19_0`1.<ForWorker>b__1(RangeWorker& currentWorker, Int32 timeout, Boolean& replicationDelegateYieldedBeforeCompletion)
	   at System.Threading.Tasks.TaskReplicator.Replica.Execute()
	
2021-11-24 00:04:37.532 Debug TaskManager: Episode Title Sequence Detection Completed after 26 minute(s) and 57 seconds

I will give it another go and see how it works out tomorrow morning.
If you need anything, just let me know. 😉 

Link to comment
Share on other sites

1 minute ago, neik said:

And there is the error again:

I will give it another go and see how it works out tomorrow morning.
If you need anything, just let me know. 😉 

Does that error fail the task?

Link to comment
Share on other sites

Finally finished the complete process and it seems to have worked great All episodes that have intros seemed to have been found and marked true. For me the fast detection didn't work but the longer process with the fast detection off work a lot better... almost 100% better in my opinion.

Thanks again everyone.

Should I wait for the new updated plugin (future release) or should I grab the most recent one (I think it keeps count of what episodes that have been ran/completed) now and install? Also, will I have to delete the DB and start a fresh run? I ask because for me it takes super long but I will still do my part to help test.   

  • Thanks 1
Link to comment
Share on other sites

23 minutes ago, STR8 said:

Finally finished the complete process and it seems to have worked great All episodes that have intros seemed to have been found and marked true. For me the fast detection didn't work but the longer process with the fast detection off work a lot better... almost 100% better in my opinion.

Thanks again everyone.

Should I wait for the new updated plugin (future release) or should I grab the most recent one (I think it keeps count of what episodes that have been ran/completed) now and install? Also, will I have to delete the DB and start a fresh run? I ask because for me it takes super long but I will still do my part to help test.   

That's great news.

You shouldnt have to remove the db.

Anything from here on out would be built, or fixed based on that database. 

 

Now, I just have to track down that error neik has. 🤟

 

  • Like 1
Link to comment
Share on other sites

8 hours ago, neik said:

I will give it another go and see how it works out tomorrow morning.

 

7 hours ago, chef said:

Now, I just have to track down that error neik has. 🤟

Interestingly, 7 hours and a sleep later the detection is still running.

It's funny how it failed twice but the third time it keeps running for hours.

Edit:
Just in case it matters I'm on the latest betas .18 server (the one with ffmpeg 4.5) and .22 plugin.

Edited by neik
Link to comment
Share on other sites

Just want to aks if this is now a functional plugin? ie does it let you skip intro's yet? Fancy giving it a go if it works, but I know the build time will be long on 1000+ shows!

Link to comment
Share on other sites

rbjtech
39 minutes ago, GiGo said:

Just want to aks if this is now a functional plugin? ie does it let you skip intro's yet? Fancy giving it a go if it works, but I know the build time will be long on 1000+ shows!

It's fully functional in that you can use the Chapters to 'skip' the Intro as it adds the chapter points, but it's not fully functional in the sense that it pops up a 'Skip Intro' button - we need the core Dev's to add that to the clients and although they have committed to adding this (my understanding), we do not have an ETA for that at this time.  

To note, the data for the Intro's is needed regardless of whether there is an Intro Skip button or not  (as any core feature will be using the data from this Plugin) so there is no harm in doing it now - just be sure to take a copy of the 'titlesequence.db' file - as that holds all your timings ;) plus of course, it would help us iron out any last minute bugs or misses.

Lastly - if you want to test without letting it loose on your entire collection, then creating a separate emby instance (using a different port) and then using symlinks to 'some' of your main library is a good way to test in isolation.  Let me know if you want to do this and I'll write a quick 'how to' on it.

Thanks.

Edited by rbjtech
Link to comment
Share on other sites

Cheesegeezer
36 minutes ago, GiGo said:

Just want to aks if this is now a functional plugin? ie does it let you skip intro's yet? Fancy giving it a go if it works, but I know the build time will be long on 1000+ shows!

The plugin is functioning well, this is a beta test group so we can iron out the bugs. Indirectly yes, you can skip, but you would have to use the chapters to skip. We are not able to code the core emby apps, so this is upto admin to implement this across all Frontends.

you might as well start the process, no more rebuilds will be necessary now, only potential plugin updates to fix minor bugs.

cheers

Link to comment
Share on other sites

rbjtech
2 minutes ago, Cheesegeezer said:

The plugin is functioning well, this is a beta test group so we can iron out the bugs. Indirectly yes, you can skip, but you would have to use the chapters to skip. We are not able to code the core emby apps, so this is upto admin to implement this across all Frontends.

you might as well start the process, no more rebuilds will be necessary now, only potential plugin updates to fix minor bugs.

cheers

lol - we have a habit of saying the same thing - again 🤣

  • Haha 1
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...