public async Task CheckIntersectionWithWatchedVideos() { var manager = new YInfoRetriever(); var fileProvaider = new JsonFileAuthProvider(); fileProvaider.SetParams(@"D://client_secrets.json"); await manager.Authorize(fileProvaider); var sub = await manager.GetSubscriptions(); if (!sub.Any()) { return; } var channel = sub.First(); var plList = await manager.GetPlayLists(channel.Snippet.ResourceId.ChannelId); if (!plList.Any()) { return; } var pl = plList.First(); var items = await manager.GetPlayListItems(pl.Id, CancellationToken.None); var me = await manager.GetOwnChannel(); var watched = await manager.GetPlayListItems(me.ContentDetails.RelatedPlaylists.WatchHistory, CancellationToken.None); var someItersection = watched.Select(w => w.Snippet.ResourceId.VideoId).Intersect(items.Select(i => i.Snippet.ResourceId.VideoId)); foreach (var item in someItersection) { Debug.Print(item); } Assert.IsTrue(someItersection.Any()); Assert.IsNotNull(someItersection); }
private async Task GetWatched() { //Contract.Assert(youRetriever != null && youRetriever.IsAuthorized); Status = "Getting watched videos"; if (youRetriever == null || !youRetriever.IsAuthorized) { Status = "Yor arent authorized! Please, press Connect first"; return; } var yourChannel = await youRetriever.GetOwnChannel(); ThreadPool.QueueUserWorkItem(async(a) => { var watched = await youRetriever.GetPlayListItems(yourChannel.ContentDetails.RelatedPlaylists.WatchHistory, CancellationToken.None, ReportProgress); WatchedItems.Clear(); WatchedItems.AddRange(watched.Select(w => w.Snippet.ResourceId.VideoId)); }); Status = "Watched history updated"; }