diff --git a/ErsatzTV.Infrastructure/Data/Repositories/RemoteStreamRepository.cs b/ErsatzTV.Infrastructure/Data/Repositories/RemoteStreamRepository.cs index 189fedb95..baa121eea 100644 --- a/ErsatzTV.Infrastructure/Data/Repositories/RemoteStreamRepository.cs +++ b/ErsatzTV.Infrastructure/Data/Repositories/RemoteStreamRepository.cs @@ -25,25 +25,27 @@ public class RemoteStreamRepository( Option maybeExisting = await dbContext.RemoteStreams .AsNoTracking() .Include(i => i.RemoteStreamMetadata) - .ThenInclude(ovm => ovm.Genres) + .ThenInclude(rsm => rsm.Genres) .Include(i => i.RemoteStreamMetadata) - .ThenInclude(ovm => ovm.Tags) + .ThenInclude(rsm => rsm.Tags) .Include(i => i.RemoteStreamMetadata) - .ThenInclude(ovm => ovm.Studios) + .ThenInclude(rsm => rsm.Studios) .Include(i => i.RemoteStreamMetadata) - .ThenInclude(ovm => ovm.Guids) + .ThenInclude(rsm => rsm.Guids) .Include(i => i.RemoteStreamMetadata) - .ThenInclude(ovm => ovm.Actors) + .ThenInclude(rsm => rsm.Actors) .Include(i => i.RemoteStreamMetadata) - .ThenInclude(ovm => ovm.Actors) + .ThenInclude(rsm => rsm.Actors) .ThenInclude(a => a.Artwork) - .Include(ov => ov.LibraryPath) + .Include(i => i.RemoteStreamMetadata) + .ThenInclude(rsm => rsm.Artwork) + .Include(rs => rs.LibraryPath) .ThenInclude(lp => lp.Library) - .Include(ov => ov.MediaVersions) - .ThenInclude(ov => ov.MediaFiles) - .Include(ov => ov.MediaVersions) - .ThenInclude(ov => ov.Streams) - .Include(ov => ov.TraktListItems) + .Include(rs => rs.MediaVersions) + .ThenInclude(mv => mv.MediaFiles) + .Include(rs => rs.MediaVersions) + .ThenInclude(mv => mv.Streams) + .Include(rs => rs.TraktListItems) .ThenInclude(tli => tli.TraktList) .OrderBy(i => i.MediaVersions.First().MediaFiles.First().Path) .SingleOrDefaultAsync(i => i.MediaVersions.First().MediaFiles.First().Path == path, cancellationToken); diff --git a/ErsatzTV.Scanner/Core/Metadata/RemoteStreamFolderScanner.cs b/ErsatzTV.Scanner/Core/Metadata/RemoteStreamFolderScanner.cs index af34351d7..f32fecf48 100644 --- a/ErsatzTV.Scanner/Core/Metadata/RemoteStreamFolderScanner.cs +++ b/ErsatzTV.Scanner/Core/Metadata/RemoteStreamFolderScanner.cs @@ -28,6 +28,7 @@ public class RemoteStreamFolderScanner : LocalFolderScanner, IRemoteStreamFolder private readonly IFileSystem _fileSystem; private readonly ILocalFileSystem _localFileSystem; private readonly ILocalMetadataProvider _localMetadataProvider; + private readonly IMetadataRepository _metadataRepository; private readonly ILogger _logger; private readonly IMediaItemRepository _mediaItemRepository; private readonly IRemoteStreamRepository _remoteStreamRepository; @@ -61,6 +62,7 @@ public class RemoteStreamFolderScanner : LocalFolderScanner, IRemoteStreamFolder _fileSystem = fileSystem; _localFileSystem = localFileSystem; _localMetadataProvider = localMetadataProvider; + _metadataRepository = metadataRepository; _remoteStreamRepository = remoteStreamRepository; _libraryRepository = libraryRepository; _mediaItemRepository = mediaItemRepository; @@ -386,11 +388,18 @@ public class RemoteStreamFolderScanner : LocalFolderScanner, IRemoteStreamFolder { RemoteStream remoteStream = result.Item; - Option maybeThumbnail = LocateThumbnail(remoteStream); - foreach (string thumbnailFile in maybeThumbnail) + foreach (RemoteStreamMetadata metadata in remoteStream.RemoteStreamMetadata.HeadOrNone()) { - RemoteStreamMetadata metadata = remoteStream.RemoteStreamMetadata.Head(); - await RefreshArtwork(thumbnailFile, metadata, ArtworkKind.Thumbnail, None, None, cancellationToken); + Option maybeThumbnail = LocateThumbnail(remoteStream); + foreach (string thumbnailFile in maybeThumbnail) + { + await RefreshArtwork(thumbnailFile, metadata, ArtworkKind.Thumbnail, None, None, cancellationToken); + } + + if (maybeThumbnail.IsNone && metadata.Artwork.Any(a => a.ArtworkKind is ArtworkKind.Thumbnail)) + { + await _metadataRepository.RemoveArtworkWithKind(metadata, ArtworkKind.Thumbnail); + } } return result;