コード例 #1
0
 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();
 }
コード例 #2
0
        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";
        }
コード例 #3
0
 /// <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);
コード例 #4
0
        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!";
            }
            //});
        }