aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Music/AlbumMetadataService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/Music/AlbumMetadataService.cs')
-rw-r--r--MediaBrowser.Providers/Music/AlbumMetadataService.cs49
1 files changed, 32 insertions, 17 deletions
diff --git a/MediaBrowser.Providers/Music/AlbumMetadataService.cs b/MediaBrowser.Providers/Music/AlbumMetadataService.cs
index 2af3667d0..7c193b4d5 100644
--- a/MediaBrowser.Providers/Music/AlbumMetadataService.cs
+++ b/MediaBrowser.Providers/Music/AlbumMetadataService.cs
@@ -1,12 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
using Jellyfin.Data.Enums;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.IO;
using MediaBrowser.Controller.Library;
+using MediaBrowser.Controller.Persistence;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.IO;
@@ -29,14 +32,16 @@ public class AlbumMetadataService : MetadataService<MusicAlbum, AlbumInfo>
/// <param name="fileSystem">Instance of the <see cref="IFileSystem"/> interface.</param>
/// <param name="libraryManager">Instance of the <see cref="ILibraryManager"/> interface.</param>
/// <param name="externalDataManager">Instance of the <see cref="IExternalDataManager"/> interface.</param>
+ /// <param name="itemRepository">Instance of the <see cref="IItemRepository"/> interface.</param>
public AlbumMetadataService(
IServerConfigurationManager serverConfigurationManager,
ILogger<AlbumMetadataService> logger,
IProviderManager providerManager,
IFileSystem fileSystem,
ILibraryManager libraryManager,
- IExternalDataManager externalDataManager)
- : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager)
+ IExternalDataManager externalDataManager,
+ IItemRepository itemRepository)
+ : base(serverConfigurationManager, logger, providerManager, fileSystem, libraryManager, externalDataManager, itemRepository)
{
}
@@ -54,6 +59,16 @@ public class AlbumMetadataService : MetadataService<MusicAlbum, AlbumInfo>
=> item.GetRecursiveChildren(i => i is Audio);
/// <inheritdoc />
+ protected override Task AfterMetadataRefresh(MusicAlbum item, MetadataRefreshOptions refreshOptions, CancellationToken cancellationToken)
+ {
+ base.AfterMetadataRefresh(item, refreshOptions, cancellationToken);
+
+ SetPeople(item);
+
+ return Task.CompletedTask;
+ }
+
+ /// <inheritdoc />
protected override ItemUpdateType UpdateMetadataFromChildren(MusicAlbum item, IReadOnlyList<BaseItem> children, bool isFullRefresh, ItemUpdateType currentUpdateType)
{
var updateType = base.UpdateMetadataFromChildren(item, children, isFullRefresh, currentUpdateType);
@@ -83,7 +98,6 @@ public class AlbumMetadataService : MetadataService<MusicAlbum, AlbumInfo>
updateType |= SetArtistsFromSongs(item, songs);
updateType |= SetAlbumArtistFromSongs(item, songs);
updateType |= SetAlbumFromSongs(item, songs);
- updateType |= SetPeople(item);
}
return updateType;
@@ -178,37 +192,38 @@ public class AlbumMetadataService : MetadataService<MusicAlbum, AlbumInfo>
}
}
- private ItemUpdateType SetPeople(MusicAlbum item)
+ private void SetPeople(MusicAlbum item)
{
- var updateType = ItemUpdateType.None;
-
if (item.AlbumArtists.Any() || item.Artists.Any())
{
var people = new List<PersonInfo>();
foreach (var albumArtist in item.AlbumArtists)
{
- PeopleHelper.AddPerson(people, new PersonInfo
+ if (!string.IsNullOrWhiteSpace(albumArtist))
{
- Name = albumArtist.Trim(),
- Type = PersonKind.AlbumArtist
- });
+ PeopleHelper.AddPerson(people, new PersonInfo
+ {
+ Name = albumArtist,
+ Type = PersonKind.AlbumArtist
+ });
+ }
}
foreach (var artist in item.Artists)
{
- PeopleHelper.AddPerson(people, new PersonInfo
+ if (!string.IsNullOrWhiteSpace(artist))
{
- Name = artist.Trim(),
- Type = PersonKind.Artist
- });
+ PeopleHelper.AddPerson(people, new PersonInfo
+ {
+ Name = artist,
+ Type = PersonKind.Artist
+ });
+ }
}
LibraryManager.UpdatePeople(item, people);
- updateType |= ItemUpdateType.MetadataEdit;
}
-
- return updateType;
}
/// <inheritdoc />