普通に YouTube APIのライブラリを使用して作ってみましたこんな感じです。
using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; using Google.GData.YouTube; using Google.GData.Client; using Google.YouTube; using Google.GData.Extensions.MediaRss; public class YtSearchYtLib { Feed<Video> videoFeed = null; YouTubeRequest request = null; string applicationName = null; string developerKey = null; public YtSearchYtLib() { } public YtSearchYtLib(string applicationName, string developerKey) { this.applicationName = applicationName; this.developerKey = developerKey; } public Feed<Video> searchFirst(string queryKeyword) { Feed<Video> retp = null; YouTubeRequestSettings settings = new YouTubeRequestSettings(applicationName, developerKey); request = new YouTubeRequest(settings); YouTubeQuery query = new YouTubeQuery(YouTubeQuery.DefaultVideoUri); query.OrderBy = "published"; query.Query = queryKeyword; query.SafeSearch = YouTubeQuery.SafeSearchValues.None; videoFeed = request.Get<Video>(query); if (videoFeed != null && videoFeed.Entries.Count() > 0) { retp = videoFeed; } return retp; } public Feed<Video> searchNext() { Feed<Video> retp = null; videoFeed = request.Get<Video>(videoFeed, FeedRequestType.Next); if (videoFeed != null && videoFeed.Entries.Count() > 0) { retp = videoFeed; } return retp; } }
使い方はこんな感じです。
public void YtSearchYtLib_search() { Feed<Video> ytEntries = null; YtSearchYtLib ytSearch = new YtSearchYtLib(); for (ytEntries = ytSearch.searchFirst("生田衣梨奈"); ytEntries != null; ytEntries = ytSearch.searchNext()) { foreach (Video ytEntry in ytEntries.Entries) { Debug.WriteLine(ytEntry.Title + ":" + ytEntry.Id); Console.WriteLine("Media:"); foreach (Google.GData.YouTube.MediaContent mediaContent in ytEntry.Contents) { Console.WriteLine("\tMedia Location: " + mediaContent.Url); Console.WriteLine("\tMedia Type: " + mediaContent.Format); Console.WriteLine("\tDuration: " + mediaContent.Duration); } } } }
こっちのほうがいろいろ情報が見れますね。 これから詳しく YouTube API のライブラリを調査してみようと思います。