示例#1
0
        /// <summary>
        /// Imports playlist items from youtube to redis
        /// </summary>
        /// <param name="playlists"></param>
        /// <returns></returns>
        public async Task ImportPlaylistItems(IEnumerable<PlaylistDto> playlists)
        {
            await Task.Run(() =>
            {
                _eventLog.Log("Importing playlist items");
                var playlistsService = new PlaylistsService();
                var playlistItemsService = new PlaylistItemsService();

                foreach (var playlist in playlists)
                {
                    var items =
                        new PlaylistItemsServiceImporter(_task).GetPlaylistItems(playlist.Id);
                    playlist.PlaylistItemsIds.AddRange(items.OrderByDescending(x => x.PublishedAt).Select(x => x.Id));
                    playlistsService.SetPlaylist(playlist);
                    playlistItemsService.SetPlaylistItems(items);
                }

                _eventLog.Log("Finished importing playlist items");
            }, _taskCancellationToken);
        }
示例#2
0
        private static void PlaylistItemsImport()
        {
            var channelService = new ChannelsService();
            var channelList = channelService.GetChannelList();
            var channels = channelService.GetChannels(channelList.Ids);

            var playlistsService = new PlaylistsService();
            var playlists = playlistsService.GetPlaylists(channels.Select(x => x.Id).ToList()).ToList();

            if (playlists.Any(x => x == null))
                playlists = _syncService.ImportPlaylists(channels).Result.ToList();

            var playlistItemsTask = _syncService.ImportPlaylistItems(playlists);
            var uploadsTask = _syncService.ImportUploadsPlaylistItems(channels);
            Task.WaitAll(new[] {playlistItemsTask, uploadsTask}, _taskService.Token);
        }