private async Task <IList <ContentInfo> > GetContentsOfDayAsync(DateInfo date, int startFrom, int count, ContentsSet contentsSet) { DebugUtil.Log(() => "Loading ContentsOfDay: " + date.Title + " from " + startFrom); var contents = await AvContentApi.GetContentListAsync(new ContentListTarget { Sorting = SortMode.Ascending, Grouping = ContentGroupingMode.Date, Uri = date.Uri, Types = ContentsSetToTypes(contentsSet), StartIndex = startFrom, MaxContents = count }).ConfigureAwait(false); return(contents.Where(content => content.ImageContent?.OriginalContents?.Count > 0) .Select(content => { var contentInfo = new RemoteApiContentInfo { Name = RemoveExtension(content.ImageContent.OriginalContents[0].FileName), LargeUrl = content.ImageContent.LargeImageUrl, ThumbnailUrl = content.ImageContent.ThumbnailUrl, MimeType = ContentKindToMimeType(content.ContentKind), Uri = content.Uri, CreatedTime = content.CreatedTime, Protected = content.IsProtected == TextBoolean.True, RemotePlaybackAvailable = (content.RemotePlayTypes?.Contains(RemotePlayMode.SimpleStreaming) ?? false), GroupName = date.Title, }; if (content.ContentKind == ContentKind.StillImage) { foreach (var original in content.ImageContent.OriginalContents) { if (original.Type == ImageType.Jpeg) { contentInfo.OriginalUrl = original.Url; break; } } } else if (content.ContentKind == ContentKind.MovieMp4 || content.ContentKind == ContentKind.MovieXavcS) { foreach (var original in content.ImageContent.OriginalContents) { contentInfo.OriginalUrl = original.Url; break; } } return contentInfo; }) .ToList <ContentInfo>()); }
private async Task <int> GetContentsOfDaySeparatelyAsync(DateInfo date, ContentsSet contentsSet, CancellationTokenSource cancel, int sum) { DebugUtil.Log(() => "Loading: " + date.Title); var count = await AvContentApi.GetContentCountAsync(new CountingTarget { Grouping = ContentGroupingMode.Date, Uri = date.Uri, Types = ContentsSetToTypes(contentsSet), }).ConfigureAwait(false); DebugUtil.Log(() => count.NumOfContents + " contents exist."); var loops = count.NumOfContents / CONTENT_LOOP_STEP + (count.NumOfContents % CONTENT_LOOP_STEP == 0 ? 0 : 1); var loaded = 0; for (var i = 0; i < loops; i++) { if (loaded + sum > MAX_AUTO_LOAD_THUMBNAILS) { break; } var contents = await GetContentsOfDayAsync(date, i *CONTENT_LOOP_STEP, CONTENT_LOOP_STEP, contentsSet).ConfigureAwait(false); if (cancel?.IsCancellationRequested ?? false) { DebugUtil.Log("Loading task cancelled"); OnCancelled(); break; } loaded += contents.Count; DebugUtil.Log(() => contents.Count + " contents fetched"); OnPartLoaded(contents.Select(content => new Thumbnail(content, Udn)).ToList()); } if (loaded < count.NumOfContents) { var remaining = new RemainingContentsHolder(date, Udn, loaded, count.NumOfContents - loaded); var list = new List <Thumbnail>(); list.Add(remaining); OnPartLoaded(list); } return(loaded); }