public VideoInformationLoadedEventArgs(YouTubeVideo video) { this.Video = video; }
public List <YouTubeVideo> LoadURLVideos(SYMMSettings settings, List <YouTubeVideo> videos = null, string nextPageToken = null) { if (settings.UrlSpecs.IsPlaylist && settings.DownloadMode == Mode.All) { string playlistID = Regex.Split(settings.DownloadURL, @"list=")[1]; if (playlistID.Contains("&")) { playlistID = playlistID.Split('&')[0]; } // Load Uploaded Playlist PlaylistItemsResource.ListRequest playlistVideosReq = YouTubeService.PlaylistItems.List("snippet,id"); playlistVideosReq.PlaylistId = playlistID; playlistVideosReq.PageToken = nextPageToken; playlistVideosReq.MaxResults = 50; PlaylistItemListResponse playlistVideosRes = playlistVideosReq.Execute(); // Finnaly grab the video IDs if (videos == null) { videos = new List <YouTubeVideo>(); } // Populate video list foreach (PlaylistItem videoItem in playlistVideosRes.Items) { try { YouTubeVideo loadedVideo = new YouTubeVideo(videoItem.Snippet.Title, videoItem.Snippet.ResourceId.VideoId, videoItem.Snippet.Description, videoItem.Snippet.PublishedAt, videoItem.Snippet.Thumbnails.Default__.Url, videoItem.Snippet.ChannelTitle, videoItem.Snippet.Position); videos.Add(loadedVideo); if (OnVideoInformationLoaded != null) { OnVideoInformationLoaded(this, new VideoInformationLoadedEventArgs(loadedVideo)); } } catch (NullReferenceException) { Console.WriteLine("Skipped one deleted video"); } } // Check if we have more to grab if (!string.IsNullOrEmpty(playlistVideosRes.NextPageToken)) { videos = LoadURLVideos(settings, videos, playlistVideosRes.NextPageToken); } if (OnAllVideoInformationLoaded != null) { OnAllVideoInformationLoaded(this, new AllVideoInformationLoadedEventArgs(videos)); } return(videos); } else if (settings.UrlSpecs.ContainsVideo) { string watchID = Regex.Split(Regex.Split(settings.DownloadURL, @"v=")[1], "&")[0]; VideosResource.ListRequest videoListReq = YouTubeService.Videos.List("snippet, id"); videoListReq.Id = watchID; VideoListResponse videoListResp = videoListReq.Execute(); if (videos == null) { videos = new List <YouTubeVideo>(); } Video videoItem = videoListResp.Items[0]; YouTubeVideo loadedVideo = new YouTubeVideo(videoItem.Snippet.Title, videoItem.Id, videoItem.Snippet.Description, videoItem.Snippet.PublishedAt, videoItem.Snippet.Thumbnails.Default__.Url, videoItem.Snippet.ChannelTitle, 0); videos.Add(loadedVideo); if (OnVideoInformationLoaded != null) { OnVideoInformationLoaded(this, new VideoInformationLoadedEventArgs(loadedVideo)); } if (OnAllVideoInformationLoaded != null) { OnAllVideoInformationLoaded(this, new AllVideoInformationLoadedEventArgs(videos)); } return(videos); } else { throw new ArgumentException("The URL specified is not a valid youtube playlist or watch url"); } }