have manual person image provider download data if not already present
This commit is contained in:
parent
ad52d8b5d9
commit
81c23ed183
|
@ -89,7 +89,6 @@
|
|||
<Compile Include="Music\LastfmArtistProvider.cs" />
|
||||
<Compile Include="Music\LastfmBaseProvider.cs" />
|
||||
<Compile Include="Music\LastfmHelper.cs" />
|
||||
<Compile Include="Music\AlbumDynamicInfoProvider.cs" />
|
||||
<Compile Include="Music\ManualFanartAlbumProvider.cs" />
|
||||
<Compile Include="Music\ManualFanartArtistProvider.cs" />
|
||||
<Compile Include="Music\ManualLastFmImageProvider.cs" />
|
||||
|
|
|
@ -46,7 +46,12 @@ namespace MediaBrowser.Providers.Movies
|
|||
return images.Where(i => i.Type == imageType);
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<RemoteImageInfo>> GetAllImages(BaseItem item, CancellationToken cancellationToken)
|
||||
public Task<IEnumerable<RemoteImageInfo>> GetAllImages(BaseItem item, CancellationToken cancellationToken)
|
||||
{
|
||||
return GetAllImagesInternal(item, true, cancellationToken);
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<RemoteImageInfo>> GetAllImagesInternal(BaseItem item, bool retryOnMissingData, CancellationToken cancellationToken)
|
||||
{
|
||||
var id = item.GetProviderId(MetadataProviders.Tmdb);
|
||||
|
||||
|
@ -70,11 +75,18 @@ namespace MediaBrowser.Providers.Movies
|
|||
{
|
||||
|
||||
}
|
||||
|
||||
if (retryOnMissingData)
|
||||
{
|
||||
await MovieDbPersonProvider.Current.DownloadPersonInfo(id, cancellationToken).ConfigureAwait(false);
|
||||
|
||||
return await GetAllImagesInternal(item, false, cancellationToken).ConfigureAwait(false);
|
||||
}
|
||||
}
|
||||
|
||||
return new List<RemoteImageInfo>();
|
||||
}
|
||||
|
||||
|
||||
private IEnumerable<RemoteImageInfo> GetImages(MovieDbPersonProvider.Images images, string baseImageUrl)
|
||||
{
|
||||
var list = new List<RemoteImageInfo>();
|
||||
|
|
|
@ -1,103 +0,0 @@
|
|||
using MediaBrowser.Controller.Configuration;
|
||||
using MediaBrowser.Controller.Entities;
|
||||
using MediaBrowser.Controller.Entities.Audio;
|
||||
using MediaBrowser.Controller.Providers;
|
||||
using MediaBrowser.Model.Logging;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace MediaBrowser.Providers.Music
|
||||
{
|
||||
/// <summary>
|
||||
/// Class MusicAlbumDynamicInfoProvider
|
||||
/// </summary>
|
||||
public class AlbumDynamicInfoProvider : BaseMetadataProvider, IDynamicInfoProvider
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes a new instance of the <see cref="BaseMetadataProvider" /> class.
|
||||
/// </summary>
|
||||
/// <param name="logManager">The log manager.</param>
|
||||
/// <param name="configurationManager">The configuration manager.</param>
|
||||
public AlbumDynamicInfoProvider(ILogManager logManager, IServerConfigurationManager configurationManager)
|
||||
: base(logManager, configurationManager)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Supportses the specified item.
|
||||
/// </summary>
|
||||
/// <param name="item">The item.</param>
|
||||
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
|
||||
public override bool Supports(BaseItem item)
|
||||
{
|
||||
return item is MusicAlbum;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Needses the refresh internal.
|
||||
/// </summary>
|
||||
/// <param name="item">The item.</param>
|
||||
/// <param name="providerInfo">The provider info.</param>
|
||||
/// <returns><c>true</c> if XXXX, <c>false</c> otherwise</returns>
|
||||
protected override bool NeedsRefreshInternal(BaseItem item, BaseProviderInfo providerInfo)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fetches metadata and returns true or false indicating if any work that requires persistence was done
|
||||
/// </summary>
|
||||
/// <param name="item">The item.</param>
|
||||
/// <param name="force">if set to <c>true</c> [force].</param>
|
||||
/// <param name="cancellationToken">The cancellation token.</param>
|
||||
/// <returns>Task{System.Boolean}.</returns>
|
||||
public override Task<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken)
|
||||
{
|
||||
var album = (MusicAlbum)item;
|
||||
|
||||
var songs = album.RecursiveChildren
|
||||
.OfType<Audio>()
|
||||
.ToList();
|
||||
|
||||
album.AlbumArtist = songs
|
||||
.Select(i => i.AlbumArtist)
|
||||
.FirstOrDefault(i => !string.IsNullOrEmpty(i));
|
||||
|
||||
album.Artists = songs.SelectMany(i => i.Artists)
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.ToList();
|
||||
|
||||
var date = songs.Select(i => i.PremiereDate)
|
||||
.FirstOrDefault(i => i.HasValue);
|
||||
|
||||
if (date.HasValue)
|
||||
{
|
||||
album.PremiereDate = date.Value;
|
||||
album.ProductionYear = date.Value.Year;
|
||||
}
|
||||
else
|
||||
{
|
||||
var year = songs.Select(i => i.ProductionYear ?? 1800).FirstOrDefault(i => i != 1800);
|
||||
|
||||
if (year != 1800)
|
||||
{
|
||||
album.ProductionYear = year;
|
||||
}
|
||||
}
|
||||
|
||||
// Don't save to the db
|
||||
return FalseTaskResult;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets the priority.
|
||||
/// </summary>
|
||||
/// <value>The priority.</value>
|
||||
public override MetadataProviderPriority Priority
|
||||
{
|
||||
get { return MetadataProviderPriority.Last; }
|
||||
}
|
||||
}
|
||||
}
|
|
@ -37,7 +37,7 @@ namespace MediaBrowser.Providers.Music
|
|||
{
|
||||
get
|
||||
{
|
||||
return "1";
|
||||
return "2";
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ namespace MediaBrowser.Providers.Music
|
|||
|
||||
private Guid GetComparisonData(List<Audio> songs)
|
||||
{
|
||||
var albumNames = songs.Select(i => i.AlbumArtist)
|
||||
var albumArtistNames = songs.Select(i => i.AlbumArtist)
|
||||
.Where(i => !string.IsNullOrEmpty(i))
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.ToList();
|
||||
|
@ -78,10 +78,10 @@ namespace MediaBrowser.Providers.Music
|
|||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.ToList();
|
||||
|
||||
albumNames.AddRange(studios);
|
||||
albumNames.AddRange(genres);
|
||||
albumArtistNames.AddRange(studios);
|
||||
albumArtistNames.AddRange(genres);
|
||||
|
||||
return string.Join(string.Empty, albumNames.OrderBy(i => i).ToArray()).GetMD5();
|
||||
return string.Join(string.Empty, albumArtistNames.OrderBy(i => i).ToArray()).GetMD5();
|
||||
}
|
||||
|
||||
public override Task<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken)
|
||||
|
@ -119,7 +119,34 @@ namespace MediaBrowser.Providers.Music
|
|||
album.Genres = songs.SelectMany(i => i.Genres)
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.ToList();
|
||||
}
|
||||
|
||||
album.AlbumArtist = songs
|
||||
.Select(i => i.AlbumArtist)
|
||||
.FirstOrDefault(i => !string.IsNullOrEmpty(i));
|
||||
|
||||
album.Artists = songs.SelectMany(i => i.Artists)
|
||||
.Distinct(StringComparer.OrdinalIgnoreCase)
|
||||
.ToList();
|
||||
|
||||
var date = songs.Select(i => i.PremiereDate)
|
||||
.FirstOrDefault(i => i.HasValue);
|
||||
|
||||
if (date.HasValue)
|
||||
{
|
||||
album.PremiereDate = date.Value;
|
||||
album.ProductionYear = date.Value.Year;
|
||||
}
|
||||
else
|
||||
{
|
||||
var year = songs.Select(i => i.ProductionYear ?? 1800).FirstOrDefault(i => i != 1800);
|
||||
|
||||
if (year != 1800)
|
||||
{
|
||||
album.ProductionYear = year;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
data.FileStamp = GetComparisonData(songs);
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user