예제 #1
0
        static async Task <YouTubeVideoStatistics> GetVideoDetails(string videoId, string title)
        {
            YouTubeVideoStatistics videoDetails = null;

            using (var youtubeService = new YouTubeService(new BaseClientService.Initializer()
            {
                ApiKey = _APIKEY,
            }))
            {
                var searchRequest = youtubeService.Videos.List("statistics");
                searchRequest.Id = videoId;
                var searchResponse = await searchRequest.ExecuteAsync();

                var youTubeVideo = searchResponse.Items.FirstOrDefault();
                if (youTubeVideo != null)
                {
                    videoDetails = new YouTubeVideoStatistics()
                    {
                        VideoId       = videoId,
                        Title         = title.Replace(',', ' '),
                        ViewCount     = youTubeVideo.Statistics.ViewCount ?? 0,
                        LikeCount     = youTubeVideo.Statistics.LikeCount ?? 0,
                        DislikeCount  = youTubeVideo.Statistics.DislikeCount ?? 0,
                        FavoriteCount = youTubeVideo.Statistics.FavoriteCount ?? 0,
                        CommentCount  = youTubeVideo.Statistics.CommentCount ?? 0,
                    };
                }
            }
            return(videoDetails);
        }
예제 #2
0
        static async Task <List <YouTubeVideoStatistics> > GetPlayListVideos(string playlistId)
        {
            var videoList = new List <YouTubeVideoStatistics>();

            using (var youtubeService = new YouTubeService(new BaseClientService.Initializer()
            {
                ApiKey = _APIKEY,
            }))
            {
                var nextPageToken = "";
                while (nextPageToken != null)
                {
                    var searchRequest = youtubeService.PlaylistItems.List("snippet");
                    searchRequest.PlaylistId = playlistId;
                    searchRequest.MaxResults = 50;
                    searchRequest.PageToken  = nextPageToken;
                    var searchResponse = await searchRequest.ExecuteAsync();

                    foreach (var playlistItem in searchResponse.Items)
                    {
                        YouTubeVideoStatistics video = null;
                        if (playlistItem.Snippet.Title != "Private video")
                        {
                            video = await GetVideoDetails(playlistItem.Snippet.ResourceId.VideoId, playlistItem.Snippet.Title);
                        }
                        else
                        {
                            video = new YouTubeVideoStatistics()
                            {
                                Title = playlistItem.Snippet.Title, VideoId = playlistItem.Snippet.ResourceId.VideoId
                            };
                        }

                        Console.WriteLine("- ({1}) {0}", video.Title, video.ViewCount);
                        videoList.Add(video);
                    }
                    nextPageToken = searchResponse.NextPageToken;
                }
            }
            return(videoList);
        }