public async Task GetChannelPlaylistNetAsync()
        {
            List <PlaylistPOCO> res = await YouTubeSite.GetChannelPlaylistsNetAsync("UCq9B1wrqZKwucNkjHnUW39A").ConfigureAwait(false);

            Assert.IsTrue(res.Any());
        }
Esempio n. 2
0
        public static async Task SyncChannelPlaylistsAsync(IChannel channel)
        {
            switch (channel.Site)
            {
            case SiteType.YouTube:

                List <PlaylistPOCO> fbres = await YouTubeSite.GetChannelPlaylistsNetAsync(channel.ID).ConfigureAwait(true);

                var pls = new List <IPlaylist>();
                pls.AddRange(fbres.Select(poco => PlaylistFactory.CreatePlaylist(poco, channel.Site)));
                if (pls.Any())
                {
                    List <string> ids = await db.GetChannelItemsIdListDbAsync(channel.ID, 0, 0).ConfigureAwait(false);

                    await db.DeleteChannelPlaylistsAsync(channel.ID).ConfigureAwait(false);

                    channel.ChannelPlaylists.Clear();
                    channel.PlaylistCount = pls.Count;
                    foreach (IPlaylist playlist in pls)
                    {
                        await db.InsertPlaylistAsync(playlist).ConfigureAwait(false);

                        List <string> plv = await YouTubeSite.GetPlaylistItemsIdsListNetAsync(playlist.ID, 0).ConfigureAwait(true);

                        foreach (string id in plv)
                        {
                            if (ids.Contains(id))
                            {
                                await db.UpdatePlaylistAsync(playlist.ID, id, channel.ID).ConfigureAwait(false);

                                if (!playlist.PlItems.Contains(id))
                                {
                                    playlist.PlItems.Add(id);
                                }
                            }
                            else
                            {
                                IVideoItem item = await VideoItemFactory.GetVideoItemNetAsync(id, channel.Site).ConfigureAwait(false);

                                if (item.ParentID != channel.ID)
                                {
                                    continue;
                                }

                                channel.AddNewItem(item);
                                await db.InsertItemAsync(item).ConfigureAwait(false);

                                await db.UpdatePlaylistAsync(playlist.ID, item.ID, channel.ID).ConfigureAwait(false);

                                if (!playlist.PlItems.Contains(id))
                                {
                                    playlist.PlItems.Add(id);
                                }
                            }
                        }
                        channel.ChannelPlaylists.Add(playlist);
                    }
                }
                break;
            }
        }