たきこみの丸太

暇だった。

ブログ表示確認

Youtubeの動画一覧を取得するためのプログラム

VisualStudio c#.net を使用。

        /// <summary>
        /// 配信完了Live情報を取得する
        /// </summary>
        /// <param name="channelId"></param>
        /// <param name="maxCount"></param>
        /// <returns></returns>
        public SearchListResponse SearchCompletedLiveFromChannel(string channelId, int maxCount)
        {
            List<string> requestTypeList = new List<string>();
            requestTypeList.Add("id");
            requestTypeList.Add("snippet");
            
            //これは取れない。取りたいなら、_youtubeService.Videos.List("statistics");でリクエスト投げる必要がある。
            //requestTypeList.Add("statistics");

            var searchListRequest = _youtubeService.Search.List(requestTypeList);
            searchListRequest.ChannelId = channelId;
            searchListRequest.Type = "video";
            searchListRequest.EventType = SearchResource.ListRequest.EventTypeEnum.Completed;
            searchListRequest.MaxResults = maxCount;
            searchListRequest.Order = SearchResource.ListRequest.OrderEnum.Date;

            return searchListRequest.Execute();
        }

        /// <summary>
        /// ビデオ情報リストを取得する
        /// </summary>
        /// <param name="channelId">チャンネルid</param>
        /// <param name="maxCount">個数</param>
        /// <returns></returns>
        public List<DtoVideo> GetDtoVideoList(string channelId, int maxCount)
        {
            List<DtoVideo> result = new List<DtoVideo>();

            var resultResponse = SearchCompletedLiveFromChannel(channelId, maxCount);

            foreach (var item in resultResponse.Items)
            {
                DtoVideo video = new DtoVideo();
                video.VideoId = item.Id.VideoId;
                video.Name = item.Snippet.Title;
                video.Uploaded_date = DateTime.Parse(item.Snippet.PublishedAt);
                video.ChannnelId = item.Snippet.ChannelId;
                video.ThumbnailUrl = GetThumbnailUrl(item.Snippet.Thumbnails);

                result.Add(video);
            }

            return result;
        }

        /// <summary>
        /// サムネイルURLを取得する
        /// </summary>
        /// <param name="thumbnailDetails"></param>
        /// <returns></returns>
        public static string GetThumbnailUrl(ThumbnailDetails thumbnailDetails)
        {
            string result = thumbnailDetails.Default__.Url;

            //半分ぐらいnullだったから、画質の良さそうな名前のものを取得する。

            if (thumbnailDetails.Maxres != null)
            {
                result = thumbnailDetails.Maxres.Url;
            }
            else if (thumbnailDetails.High != null)
            {
                result = thumbnailDetails.High.Url;
            }
            else if(thumbnailDetails.Medium != null)
            {
                result = thumbnailDetails.Medium.Url;
            }
            else if(thumbnailDetails.Standard != null)
            {
                result = thumbnailDetails.Standard.Url;
            }

            return result;
        }

コードハイライト表示で、c#は対応してないっぽいので、javascriptのハイライトを指定してみたらそれっぽくなった。