/// <summary> /// Gets the linked children. /// </summary> /// <returns>IEnumerable{BaseItem}.</returns> public IEnumerable <Video> GetAlternateVersions() { var filesWithinSameDirectory = LocalAlternateVersionIds .Select(i => LibraryManager.GetItemById(i)) .Where(i => i != null) .OfType <Video>(); return(filesWithinSameDirectory.Concat(GetLinkedAlternateVersions()) .OrderBy(i => i.SortName)); }
public override async Task UpdateToRepository(ItemUpdateType updateReason, CancellationToken cancellationToken) { await base.UpdateToRepository(updateReason, cancellationToken).ConfigureAwait(false); foreach (var item in LocalAlternateVersionIds.Select(i => LibraryManager.GetItemById(i))) { item.ImageInfos = ImageInfos; item.Overview = Overview; item.ProductionYear = ProductionYear; item.PremiereDate = PremiereDate; item.CommunityRating = CommunityRating; item.OfficialRating = OfficialRating; item.Genres = Genres; item.ProviderIds = ProviderIds; await item.UpdateToRepository(ItemUpdateType.MetadataDownload, cancellationToken).ConfigureAwait(false); } }
private async Task <bool> RefreshAlternateVersionsWithinSameDirectory(MetadataRefreshOptions options, IEnumerable <FileSystemInfo> fileSystemChildren, CancellationToken cancellationToken) { var newItems = HasLocalAlternateVersions ? LoadAlternateVersionsWithinSameDirectory(fileSystemChildren, options.DirectoryService).ToList() : new List <Video>(); var newItemIds = newItems.Select(i => i.Id).ToList(); var itemsChanged = !LocalAlternateVersionIds.SequenceEqual(newItemIds); var tasks = newItems.Select(i => RefreshAlternateVersion(options, i, cancellationToken)); await Task.WhenAll(tasks).ConfigureAwait(false); LocalAlternateVersionIds = newItemIds; return(itemsChanged); }