Пример #1
0
        /// <summary>
        /// Checks if this instance has an id for the given provider.
        /// </summary>
        /// <param name="instance">The instance.</param>
        /// <param name="name">The of the provider name.</param>
        /// <returns><c>true</c> if a provider id with the given name was found; otherwise <c>false</c>.</returns>
        public static bool HasProviderId(this IHasProviderIds instance, string name)
        {
            if (instance == null)
            {
                throw new ArgumentNullException(nameof(instance));
            }

            return(instance.TryGetProviderId(name, out _));
        }
Пример #2
0
 /// <summary>
 /// Gets a provider id.
 /// </summary>
 /// <param name="instance">The instance.</param>
 /// <param name="name">The name.</param>
 /// <returns>System.String.</returns>
 public static string?GetProviderId(this IHasProviderIds instance, string name)
 {
     instance.TryGetProviderId(name, out string?id);
     return(id);
 }
Пример #3
0
 /// <summary>
 /// Gets a provider id.
 /// </summary>
 /// <param name="instance">The instance.</param>
 /// <param name="provider">The provider.</param>
 /// <param name="id">The provider id.</param>
 /// <returns><c>true</c> if a provider id with the given name was found; otherwise <c>false</c>.</returns>
 public static bool TryGetProviderId(this IHasProviderIds instance, MetadataProvider provider, [NotNullWhen(true)] out string?id)
 {
     return(instance.TryGetProviderId(provider.ToString(), out id));
 }
Пример #4
0
        private static ArtworkDto?GetMatch(Type itemType, IHasProviderIds providerIds, IReadOnlyList <ArtworkDto> artworkDtos)
        {
            foreach (var artworkDto in artworkDtos)
            {
                if (artworkDto.Providers == null)
                {
                    // No providers, skip.
                    // TODO match on name
                    continue;
                }

                if (providerIds.TryGetProviderId("AniList", out var providerId) &&
                    string.Equals(providerId, artworkDto.Providers.Anilist, StringComparison.OrdinalIgnoreCase))
                {
                    return(artworkDto);
                }

                if (providerIds.TryGetProviderId(MetadataProvider.Imdb, out providerId) &&
                    string.Equals(providerId, artworkDto.Providers.Imdb, StringComparison.OrdinalIgnoreCase))
                {
                    return(artworkDto);
                }

                if (providerIds.TryGetProviderId(MetadataProvider.Tmdb, out providerId) &&
                    string.Equals(providerId, artworkDto.Providers.Tmdb, StringComparison.OrdinalIgnoreCase))
                {
                    return(artworkDto);
                }

                if (providerIds.TryGetProviderId(MetadataProvider.Tvdb, out providerId) &&
                    string.Equals(providerId, artworkDto.Providers.Tvdb, StringComparison.OrdinalIgnoreCase))
                {
                    return(artworkDto);
                }

                if ((itemType == typeof(Audio) || itemType == typeof(MusicAlbum)) &&
                    providerIds.TryGetProviderId(MetadataProvider.MusicBrainzReleaseGroup, out providerId) &&
                    string.Equals(providerId, artworkDto.Providers.Musicbrainz, StringComparison.OrdinalIgnoreCase))
                {
                    return(artworkDto);
                }

                if (itemType == typeof(Audio) &&
                    providerIds.TryGetProviderId(MetadataProvider.MusicBrainzAlbumArtist, out providerId) &&
                    string.Equals(providerId, artworkDto.Providers.Musicbrainz, StringComparison.OrdinalIgnoreCase))
                {
                    return(artworkDto);
                }

                if ((itemType == typeof(MusicAlbum) || itemType == typeof(Audio)) &&
                    providerIds.TryGetProviderId(MetadataProvider.MusicBrainzAlbum, out providerId) &&
                    string.Equals(providerId, artworkDto.Providers.Musicbrainz, StringComparison.OrdinalIgnoreCase))
                {
                    return(artworkDto);
                }

                if (itemType == typeof(MusicArtist) &&
                    providerIds.TryGetProviderId(MetadataProvider.MusicBrainzArtist, out providerId) &&
                    string.Equals(providerId, artworkDto.Providers.Musicbrainz, StringComparison.OrdinalIgnoreCase))
                {
                    return(artworkDto);
                }

                if (itemType == typeof(Audio) &&
                    providerIds.TryGetProviderId(MetadataProvider.MusicBrainzTrack, out providerId) &&
                    string.Equals(providerId, artworkDto.Providers.Musicbrainz, StringComparison.OrdinalIgnoreCase))
                {
                    return(artworkDto);
                }
            }

            return(null);
        }