Browse Source

clien up old music video/artist artwork

pull/2778/head
Jason Dove 7 months ago
parent
commit
37a405e4e4
No known key found for this signature in database
  1. 12
      ErsatzTV.Core/Metadata/FallbackMetadataProvider.cs
  2. 8
      ErsatzTV.Scanner/Core/Metadata/LocalMetadataProvider.cs
  3. 2
      ErsatzTV.Scanner/Core/Metadata/MovieFolderScanner.cs
  4. 27
      ErsatzTV.Scanner/Core/Metadata/MusicVideoFolderScanner.cs
  5. 2
      ErsatzTV.Scanner/Core/Metadata/OtherVideoFolderScanner.cs

12
ErsatzTV.Core/Metadata/FallbackMetadataProvider.cs

@ -57,7 +57,11 @@ public partial class FallbackMetadataProvider(IClient client) : IFallbackMetadat @@ -57,7 +57,11 @@ public partial class FallbackMetadataProvider(IClient client) : IFallbackMetadat
{
string fileName = Path.GetFileName(artistFolder);
return new ArtistMetadata
{ MetadataKind = MetadataKind.Fallback, Title = fileName ?? artistFolder };
{
MetadataKind = MetadataKind.Fallback,
Title = fileName ?? artistFolder,
Artwork = []
};
}
public List<EpisodeMetadata> GetFallbackMetadata(Episode episode)
@ -112,7 +116,8 @@ public partial class FallbackMetadataProvider(IClient client) : IFallbackMetadat @@ -112,7 +116,8 @@ public partial class FallbackMetadataProvider(IClient client) : IFallbackMetadat
var metadata = new MusicVideoMetadata
{
MetadataKind = MetadataKind.Fallback,
Title = fileName ?? path
Title = fileName ?? path,
Artwork = []
};
return GetMusicVideoMetadata(fileName, metadata);
@ -148,7 +153,8 @@ public partial class FallbackMetadataProvider(IClient client) : IFallbackMetadat @@ -148,7 +153,8 @@ public partial class FallbackMetadataProvider(IClient client) : IFallbackMetadat
{
MetadataKind = MetadataKind.Fallback,
Title = fileName ?? path,
Song = song
Song = song,
Artwork = []
};
return GetSongMetadata(path, metadata);

8
ErsatzTV.Scanner/Core/Metadata/LocalMetadataProvider.cs

@ -335,7 +335,8 @@ public class LocalMetadataProvider : ILocalMetadataProvider @@ -335,7 +335,8 @@ public class LocalMetadataProvider : ILocalMetadataProvider
Genres = nfo.Genres.Map(g => new Genre { Name = g }).ToList(),
Tags = nfo.Tags.Map(t => new Tag { Name = t }).ToList(),
Studios = nfo.Studios.Map(s => new Studio { Name = s }).ToList(),
Directors = nfo.Directors.Map(s => new Director { Name = s }).ToList()
Directors = nfo.Directors.Map(s => new Director { Name = s }).ToList(),
Artwork = []
};
}
@ -949,7 +950,7 @@ public class LocalMetadataProvider : ILocalMetadataProvider @@ -949,7 +950,7 @@ public class LocalMetadataProvider : ILocalMetadataProvider
? SortTitle.GetSortTitle(metadata.Title)
: metadata.SortTitle;
metadata.ArtistId = artist.Id;
artist.ArtistMetadata = new List<ArtistMetadata> { metadata };
artist.ArtistMetadata = [metadata];
return await _metadataRepository.Add(metadata);
}
@ -1355,7 +1356,8 @@ public class LocalMetadataProvider : ILocalMetadataProvider @@ -1355,7 +1356,8 @@ public class LocalMetadataProvider : ILocalMetadataProvider
Biography = nfo.Biography,
Genres = nfo.Genres.Map(g => new Genre { Name = g }).ToList(),
Styles = nfo.Styles.Map(s => new Style { Name = s }).ToList(),
Moods = nfo.Moods.Map(m => new Mood { Name = m }).ToList()
Moods = nfo.Moods.Map(m => new Mood { Name = m }).ToList(),
Artwork = []
};
}

2
ErsatzTV.Scanner/Core/Metadata/MovieFolderScanner.cs

@ -314,7 +314,7 @@ public class MovieFolderScanner : LocalFolderScanner, IMovieFolderScanner @@ -314,7 +314,7 @@ public class MovieFolderScanner : LocalFolderScanner, IMovieFolderScanner
try
{
Movie movie = result.Item;
foreach (var metadata in movie.MovieMetadata.HeadOrNone())
foreach (MovieMetadata metadata in movie.MovieMetadata.HeadOrNone())
{
Option<string> maybeArtwork = LocateArtwork(movie, artworkKind);
foreach (string posterFile in maybeArtwork)

27
ErsatzTV.Scanner/Core/Metadata/MusicVideoFolderScanner.cs

@ -23,6 +23,7 @@ public class MusicVideoFolderScanner : LocalFolderScanner, IMusicVideoFolderScan @@ -23,6 +23,7 @@ public class MusicVideoFolderScanner : LocalFolderScanner, IMusicVideoFolderScan
private readonly IClient _client;
private readonly ILibraryRepository _libraryRepository;
private readonly ILocalChaptersProvider _localChaptersProvider;
private readonly IMetadataRepository _metadataRepository;
private readonly IScannerProxy _scannerProxy;
private readonly IFileSystem _fileSystem;
private readonly ILocalFileSystem _localFileSystem;
@ -66,6 +67,7 @@ public class MusicVideoFolderScanner : LocalFolderScanner, IMusicVideoFolderScan @@ -66,6 +67,7 @@ public class MusicVideoFolderScanner : LocalFolderScanner, IMusicVideoFolderScan
_localMetadataProvider = localMetadataProvider;
_localSubtitlesProvider = localSubtitlesProvider;
_localChaptersProvider = localChaptersProvider;
_metadataRepository = metadataRepository;
_artistRepository = artistRepository;
_musicVideoRepository = musicVideoRepository;
_libraryRepository = libraryRepository;
@ -279,11 +281,19 @@ public class MusicVideoFolderScanner : LocalFolderScanner, IMusicVideoFolderScan @@ -279,11 +281,19 @@ public class MusicVideoFolderScanner : LocalFolderScanner, IMusicVideoFolderScan
try
{
Artist artist = result.Item;
await LocateArtworkForArtist(artistFolder, artworkKind).IfSomeAsync(async artworkFile =>
foreach (ArtistMetadata metadata in artist.ArtistMetadata.HeadOrNone())
{
Option<string> maybeArtwork = LocateArtworkForArtist(artistFolder, artworkKind);
foreach (string artworkFile in maybeArtwork)
{
ArtistMetadata metadata = artist.ArtistMetadata.Head();
await RefreshArtwork(artworkFile, metadata, artworkKind, None, None, cancellationToken);
});
}
if (maybeArtwork.IsNone && metadata.Artwork.Any(a => a.ArtworkKind == artworkKind))
{
await _metadataRepository.RemoveArtworkWithKind(metadata, artworkKind);
}
}
return result;
}
@ -425,7 +435,7 @@ public class MusicVideoFolderScanner : LocalFolderScanner, IMusicVideoFolderScan @@ -425,7 +435,7 @@ public class MusicVideoFolderScanner : LocalFolderScanner, IMusicVideoFolderScan
{
if (!Optional(musicVideo.MusicVideoMetadata).Flatten().Any())
{
musicVideo.MusicVideoMetadata ??= new List<MusicVideoMetadata>();
musicVideo.MusicVideoMetadata ??= [];
string path = musicVideo.MediaVersions.Head().MediaFiles.Head().Path;
_logger.LogDebug("Refreshing {Attribute} for {Path}", "Fallback Metadata", path);
@ -497,13 +507,20 @@ public class MusicVideoFolderScanner : LocalFolderScanner, IMusicVideoFolderScan @@ -497,13 +507,20 @@ public class MusicVideoFolderScanner : LocalFolderScanner, IMusicVideoFolderScan
{
MusicVideo musicVideo = result.Item;
foreach (MusicVideoMetadata metadata in musicVideo.MusicVideoMetadata.HeadOrNone())
{
Option<string> maybeThumbnail = LocateThumbnail(musicVideo);
foreach (string thumbnailFile in maybeThumbnail)
{
MusicVideoMetadata metadata = musicVideo.MusicVideoMetadata.Head();
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;
}
catch (Exception ex)

2
ErsatzTV.Scanner/Core/Metadata/OtherVideoFolderScanner.cs

@ -361,7 +361,7 @@ public class OtherVideoFolderScanner : LocalFolderScanner, IOtherVideoFolderScan @@ -361,7 +361,7 @@ public class OtherVideoFolderScanner : LocalFolderScanner, IOtherVideoFolderScan
{
OtherVideo otherVideo = result.Item;
foreach (var metadata in otherVideo.OtherVideoMetadata.HeadOrNone())
foreach (OtherVideoMetadata metadata in otherVideo.OtherVideoMetadata.HeadOrNone())
{
Option<string> maybeThumbnail = LocateThumbnail(otherVideo);
foreach (string thumbnailFile in maybeThumbnail)

Loading…
Cancel
Save