Exemplo n.º 1
0
    /// <inheritdoc />
    public async Task <IEnumerable <RemoteImageInfo> > GetImages(BaseItem item, CancellationToken cancellationToken)
    {
        if (!item.TryGetProviderId(ImvdbPlugin.ProviderName, out var imvdbId))
        {
            return(Enumerable.Empty <RemoteImageInfo>());
        }

        var imvdbVideo = await _imvdbClient.GetVideoIdResultAsync(imvdbId, cancellationToken)
                         .ConfigureAwait(false);

        if (string.IsNullOrEmpty(imvdbVideo?.Image?.Size1))
        {
            return(Enumerable.Empty <RemoteImageInfo>());
        }

        return(new[]
        {
            new RemoteImageInfo
            {
                ProviderName = ImvdbPlugin.ProviderName,
                Url = imvdbVideo.Image.Size1,
                Type = ImageType.Primary
            }
        });
    }
Exemplo n.º 2
0
    /// <inheritdoc />
    public async Task<MetadataResult<MusicVideo>> GetMetadata(MusicVideoInfo info, CancellationToken cancellationToken)
    {
        _logger.LogDebug("Get metadata result for {Name}", info.Name);
        var imvdbId = info.GetProviderId(ImvdbPlugin.ProviderName);
        var result = new MetadataResult<MusicVideo>
        {
            HasMetadata = false
        };

        // IMVDb id not provided, find first result.
        if (string.IsNullOrEmpty(imvdbId))
        {
            var searchResults = await GetSearchResults(info, cancellationToken)
                .ConfigureAwait(false);
            searchResults.FirstOrDefault()?.TryGetProviderId(ImvdbPlugin.ProviderName, out imvdbId);
        }

        // No results found, return without populating metadata.
        if (string.IsNullOrEmpty(imvdbId))
        {
            return result;
        }

        // do lookup here by imvdb id
        var releaseResult = await _imvdbClient.GetVideoIdResultAsync(imvdbId, cancellationToken)
            .ConfigureAwait(false);
        if (releaseResult != null)
        {
            result.HasMetadata = true;
            // set properties from data
            result.Item = new MusicVideo
            {
                Name = releaseResult.SongTitle,
                ProductionYear = releaseResult.Year,
                Artists = releaseResult.Artists.Select(i => i.Name).ToArray(),
                ImageInfos = new[]
                {
                    new ItemImageInfo
                    {
                        Path = releaseResult.Image?.Size1
                    }
                }
            };

            foreach (var director in releaseResult.Directors)
            {
                result.AddPerson(new PersonInfo
                {
                    Name = director.Name,
                    ProviderIds = new Dictionary<string, string>
                    {
                        { ImvdbPlugin.ProviderName, director.Id.ToString(CultureInfo.InvariantCulture) },
                        { ImvdbPlugin.ProviderName + "_slug", director.Url },
                    },
                    Type = director.Position
                });
            }

            result.Item.SetProviderId(ImvdbPlugin.ProviderName, imvdbId);

            if (!string.IsNullOrEmpty(releaseResult.Url))
            {
                result.Item.SetProviderId(ImvdbPlugin.ProviderName + "_slug", releaseResult.Url);
            }
        }

        return result;
    }