public void NavigatedTo() { WatchedItems.Clear(); WatchedItems.AddRange(_watchedItemsManager.Entries.Select(entry => { var vmType = entry.Domain == CrawlerDomain.Yahoo ? typeof(WatchedItemViewModel <YahooItem>) : typeof(WatchedItemViewModel); var vm = _lifetimeScope.TypedResolve <WatchedItemViewModel>(vmType, entry); vm.IsLoading = true; return(vm); })); _watchedItemsManager.StartAggregatingWatchedItemsData(); }
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"; }
/// <summary> /// Sync / Add to History / Add items to watched history /// http://docs.trakt.apiary.io/#reference/sync/add-to-history /// Add items to a user's watch history. Send a WatchedAt UTC datetime to mark items as watched in the past. /// </summary> /// <param name="watchedItems">Watched items</param> /// <returns>Number of items added</returns> public Task <AddToWatchedHistoryResult> AddToWatchedHistoryAsync(WatchedItems watchedItems) => ExecutePostRequestAsync <AddToWatchedHistoryResult>("sync/history", watchedItems);
private void GetNext() { //await Task.Run(() => //{ if (!WatchedItems.Any() || CurrentPlaylist == null || CurrentPlaylist.PlaylistItems == null || !CurrentPlaylist.PlaylistItems.Any()) { return; } if (IsConnected && CurrentPlaylist != null) { if (CurrentPlaylistItem == null) { CurrentPlaylistItem = CurrentPlaylist.PlaylistItems.First(); } if (!WatchedItems.Contains(CurrentPlaylistItem.Snippet.ResourceId.VideoId)) { WatchedItems.Add(CurrentPlaylistItem.Snippet.ResourceId.VideoId); } var startIndex = CurrentPlaylist.PlaylistItems.IndexOf(CurrentPlaylistItem); var foundUnwatched = false; if (PlayRandomly) { List <int> arrayOfIds = new List <int>(CurrentPlaylist.PlaylistItems.Count); for (int i = 0; i < CurrentPlaylist.PlaylistItems.Count; i++) { arrayOfIds.Add(i); } var rand = new Random((int)DateTime.Now.ToFileTimeUtc()); while (arrayOfIds.Any()) { var id = rand.Next(0, arrayOfIds.Count); if (!WatchedItems.Contains(CurrentPlaylist.PlaylistItems[id].Snippet.ResourceId.VideoId)) { foundUnwatched = true; CurrentPlaylistItem = CurrentPlaylist.PlaylistItems[id]; break; } else { arrayOfIds.Remove(id); } } } else { for (var i = startIndex + 1; i < CurrentPlaylist.PlaylistItems.Count; i++) { if (!WatchedItems.Contains(CurrentPlaylist.PlaylistItems[i].Snippet.ResourceId.VideoId)) { foundUnwatched = true; CurrentPlaylistItem = CurrentPlaylist.PlaylistItems[i]; break; } } if (!foundUnwatched) { for (var i = 0; i < startIndex - 1; i++) { if (!WatchedItems.Contains(CurrentPlaylist.PlaylistItems[i].Snippet.ResourceId.VideoId)) { foundUnwatched = true; CurrentPlaylistItem = CurrentPlaylist.PlaylistItems[i]; break; } } } } Status = !foundUnwatched ? "Cannot find unwatched video" : "Enjoy!"; } //}); }