/// <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); }
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); }