@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
@@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [Unreleased]
### Added
- Add button to copy/clone schedule from schedules table
- Synchronize episode tags and genres from Jellyfin, Emby and Local show libraries
- Add `Deep Scan` button to Jellyfin and Emby libraries
- This is now required to update some metadata for existing libraries, when targeted updates are not possible
- For example, if you already have tags and genres on your episodes in Jellyfin or Emby, you will need to deep scan each library to update that metadata on existing items in ErsatzTV
@ -65,6 +65,11 @@ public class CallEmbyLibraryScannerHandler : CallLibraryScannerHandler<ISynchron
@@ -65,6 +65,11 @@ public class CallEmbyLibraryScannerHandler : CallLibraryScannerHandler<ISynchron
@ -64,6 +64,11 @@ public class CallJellyfinLibraryScannerHandler : CallLibraryScannerHandler<ISync
@@ -64,6 +64,11 @@ public class CallJellyfinLibraryScannerHandler : CallLibraryScannerHandler<ISync
@ -7,14 +7,17 @@ public interface ISynchronizeJellyfinLibraryById : IRequest<Either<BaseError, st
@@ -7,14 +7,17 @@ public interface ISynchronizeJellyfinLibraryById : IRequest<Either<BaseError, st
@ -59,6 +59,8 @@ public class FakeTelevisionRepository : ITelevisionRepository
@@ -59,6 +59,8 @@ public class FakeTelevisionRepository : ITelevisionRepository
@ -124,7 +124,8 @@ public class EmbyTelevisionRepository : IEmbyTelevisionRepository
@@ -124,7 +124,8 @@ public class EmbyTelevisionRepository : IEmbyTelevisionRepository
@ -158,7 +159,7 @@ public class EmbyTelevisionRepository : IEmbyTelevisionRepository
@@ -158,7 +159,7 @@ public class EmbyTelevisionRepository : IEmbyTelevisionRepository
@ -657,6 +658,36 @@ public class EmbyTelevisionRepository : IEmbyTelevisionRepository
@@ -657,6 +658,36 @@ public class EmbyTelevisionRepository : IEmbyTelevisionRepository
@ -128,7 +128,8 @@ public class JellyfinTelevisionRepository : IJellyfinTelevisionRepository
@@ -128,7 +128,8 @@ public class JellyfinTelevisionRepository : IJellyfinTelevisionRepository
@ -162,7 +163,7 @@ public class JellyfinTelevisionRepository : IJellyfinTelevisionRepository
@@ -162,7 +163,7 @@ public class JellyfinTelevisionRepository : IJellyfinTelevisionRepository
@ -660,6 +661,36 @@ public class JellyfinTelevisionRepository : IJellyfinTelevisionRepository
@@ -660,6 +661,36 @@ public class JellyfinTelevisionRepository : IJellyfinTelevisionRepository
@ -183,7 +183,8 @@ public class PlexTelevisionRepository : IPlexTelevisionRepository
@@ -183,7 +183,8 @@ public class PlexTelevisionRepository : IPlexTelevisionRepository
@ -219,6 +220,8 @@ public class PlexTelevisionRepository : IPlexTelevisionRepository
@@ -219,6 +220,8 @@ public class PlexTelevisionRepository : IPlexTelevisionRepository
@ -539,6 +539,13 @@ public class TelevisionRepository : ITelevisionRepository
@@ -539,6 +539,13 @@ public class TelevisionRepository : ITelevisionRepository
@ -70,6 +70,7 @@ public class SynchronizeEmbyLibraryByIdHandler : IRequestHandler<SynchronizeEmby
@@ -70,6 +70,7 @@ public class SynchronizeEmbyLibraryByIdHandler : IRequestHandler<SynchronizeEmby
parameters.Library,
parameters.FFmpegPath,
parameters.FFprobePath,
parameters.DeepScan,
cancellationToken),
LibraryMediaKind.Shows=>
await_embyTelevisionLibraryScanner.ScanLibrary(
@ -78,6 +79,7 @@ public class SynchronizeEmbyLibraryByIdHandler : IRequestHandler<SynchronizeEmby
@@ -78,6 +79,7 @@ public class SynchronizeEmbyLibraryByIdHandler : IRequestHandler<SynchronizeEmby
parameters.Library,
parameters.FFmpegPath,
parameters.FFprobePath,
parameters.DeepScan,
cancellationToken),
_=>Unit.Default
};
@ -139,7 +141,8 @@ public class SynchronizeEmbyLibraryByIdHandler : IRequestHandler<SynchronizeEmby
@@ -139,7 +141,8 @@ public class SynchronizeEmbyLibraryByIdHandler : IRequestHandler<SynchronizeEmby
@ -203,7 +206,8 @@ public class SynchronizeEmbyLibraryByIdHandler : IRequestHandler<SynchronizeEmby
@@ -203,7 +206,8 @@ public class SynchronizeEmbyLibraryByIdHandler : IRequestHandler<SynchronizeEmby
@ -50,6 +50,7 @@ public class EmbyTelevisionLibraryScanner : MediaServerTelevisionLibraryScanner<
@@ -50,6 +50,7 @@ public class EmbyTelevisionLibraryScanner : MediaServerTelevisionLibraryScanner<
EmbyLibrarylibrary,
stringffmpegPath,
stringffprobePath,
booldeepScan,
CancellationTokencancellationToken)
{
List<EmbyPathReplacement>pathReplacements=
@ -70,7 +71,7 @@ public class EmbyTelevisionLibraryScanner : MediaServerTelevisionLibraryScanner<
@@ -70,7 +71,7 @@ public class EmbyTelevisionLibraryScanner : MediaServerTelevisionLibraryScanner<
@ -51,6 +51,7 @@ public class JellyfinTelevisionLibraryScanner : MediaServerTelevisionLibraryScan
@@ -51,6 +51,7 @@ public class JellyfinTelevisionLibraryScanner : MediaServerTelevisionLibraryScan
JellyfinLibrarylibrary,
stringffmpegPath,
stringffprobePath,
booldeepScan,
CancellationTokencancellationToken)
{
List<JellyfinPathReplacement>pathReplacements=
@ -71,7 +72,7 @@ public class JellyfinTelevisionLibraryScanner : MediaServerTelevisionLibraryScan
@@ -71,7 +72,7 @@ public class JellyfinTelevisionLibraryScanner : MediaServerTelevisionLibraryScan
@ -443,8 +443,8 @@ public class LocalMetadataProvider : ILocalMetadataProvider
@@ -443,8 +443,8 @@ public class LocalMetadataProvider : ILocalMetadataProvider
updated=awaitUpdateMetadataCollections(
existing,
metadata,
(_,_)=>Task.FromResult(false),
(_,_)=>Task.FromResult(false),
_televisionRepository.AddGenre,
_televisionRepository.AddTag,
(_,_)=>Task.FromResult(false),
_televisionRepository.AddActor)||updated;
@ -1120,8 +1120,8 @@ public class LocalMetadataProvider : ILocalMetadataProvider
@@ -1120,8 +1120,8 @@ public class LocalMetadataProvider : ILocalMetadataProvider
@ -437,7 +437,7 @@ public abstract class MediaServerTelevisionLibraryScanner<TConnectionParameters,
@@ -437,7 +437,7 @@ public abstract class MediaServerTelevisionLibraryScanner<TConnectionParameters,
@ -89,6 +89,12 @@ public class EpisodeNfoReader : NfoReader<EpisodeNfo>, IEpisodeNfoReader
@@ -89,6 +89,12 @@ public class EpisodeNfoReader : NfoReader<EpisodeNfo>, IEpisodeNfoReader