Ejemplo n.º 1
0
        private async Task RefreshArtist(RefreshItem request, MusicArtist item)
        {
            var cancellationToken = CancellationToken.None;

            var albums = _libraryManager.RootFolder
                         .RecursiveChildren
                         .OfType <MusicAlbum>()
                         .Where(i => i.HasArtist(item.Name))
                         .ToList();

            var musicArtists = albums
                               .Select(i => i.Parent)
                               .OfType <MusicArtist>()
                               .ToList();

            var options = GetRefreshOptions(request);

            var musicArtistRefreshTasks = musicArtists.Select(i => i.ValidateChildren(new Progress <double>(), cancellationToken, options, true));

            await Task.WhenAll(musicArtistRefreshTasks).ConfigureAwait(false);

            try
            {
                await item.RefreshMetadata(options, CancellationToken.None).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                Logger.ErrorException("Error refreshing library", ex);
            }
        }
Ejemplo n.º 2
0
        private async Task RefreshArtist(MusicArtist item, MetadataRefreshOptions options, CancellationToken cancellationToken)
        {
            var albums = _libraryManager
                         .GetItemList(new InternalItemsQuery
            {
                IncludeItemTypes = new[] { nameof(MusicAlbum) },
                ArtistIds        = new[] { item.Id },
                DtoOptions       = new DtoOptions(false)
                {
                    EnableImages = false
                }
            })
                         .OfType <MusicAlbum>();

            var musicArtists = albums
                               .Select(i => i.MusicArtist)
                               .Where(i => i != null);

            var musicArtistRefreshTasks = musicArtists.Select(i => i.ValidateChildren(new SimpleProgress <double>(), cancellationToken, options, true));

            await Task.WhenAll(musicArtistRefreshTasks).ConfigureAwait(false);

            try
            {
                await item.RefreshMetadata(options, cancellationToken).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Error refreshing library");
            }
        }
Ejemplo n.º 3
0
        private async Task RefreshArtist(MusicArtist item, MetadataRefreshOptions options)
        {
            var cancellationToken = CancellationToken.None;

            var albums = _libraryManagerFactory()
                         .GetItemList(new InternalItemsQuery
            {
                IncludeItemTypes = new[] { typeof(MusicAlbum).Name },
                ArtistIds        = new[] { item.Id.ToString("N") }
            })
                         .OfType <MusicAlbum>()
                         .ToList();

            var musicArtists = albums
                               .Select(i => i.MusicArtist)
                               .Where(i => i != null)
                               .ToList();

            var musicArtistRefreshTasks = musicArtists.Select(i => i.ValidateChildren(new Progress <double>(), cancellationToken, options, true));

            await Task.WhenAll(musicArtistRefreshTasks).ConfigureAwait(false);

            try
            {
                await item.RefreshMetadata(options, CancellationToken.None).ConfigureAwait(false);
            }
            catch (Exception ex)
            {
                _logger.ErrorException("Error refreshing library", ex);
            }
        }