C#でYouTubeの動画の情報を取得します。キーワードや日時を指定し、評価や再生数の高い順に並べてcvsファイルで出力させてみましょう。

YouTube APIを利用するには「APIキー」が必須です。APIキーを持っていない方は取得しておきましょう。以下のサイトの説明がわかりやすいです。「YouTube Data API v3」を利用します。

googleアカウントの取得方法とYouTube APIの設定 | DIYプログラミング

https://www.googleapis.com/youtube/v3/search

必須パラメータ part

string
APIレスポンスに含める 1 つまたは複数の search リソースのプロパティをカンマ区切りリストの形式で指定します。このパラメータに指定できる part 名は id と snippet です。

動画の情報を集めたいとすればあるキーワードで検索して再生回数が多い動画ではないでしょうか? あと特定の期間において再生数が多い動画というのは調査対象になるのではないでしょうか?

必須パラメータ partのほかにもいろいろありますが、ここで使うのは以下のものです。

q

string
検索クエリを指定します。

order

date リソースを作成日の新しい順に並べます。
rating リソースを評価の高い順に並べます。
relevance リソースを検索クエリの関連性が高い順に並べます。このパラメータのデフォルト値です。
title リソースをタイトルのアルファベット順に並べます。
videoCount アップロード動画の番号順(降順)にチャンネルを並べます。
viewCount リソースを再生回数の多い順に並べます。

maxResults

unsigned integer
maxResults パラメータには、結果セットとして返されるアイテムの最大数を指定します。0 以上 50 以下の値を指定できます。デフォルト値は 5 です。

type

string
type パラメータは、検索クエリの対象を特定のタイプのリソースのみに制限します。値はカンマで区切られたリソースのタイプのリストです。channel、playlist、videoを指定できます。デフォルト値は video,channel,playlist です。

publishedAfter
publishedBefore

datetime
publishedAfterは指定した日時より後に作成されたリソースのみ、publishedBeforeは指定した日時より前に作成されたリソースのみが API レスポンスに含まれるように指定します。この値は RFC 3339 形式の date-time 値です(1970-01-01T00:00:00Z)。

ということで

https://www.googleapis.com/youtube/v3/search?
q=<検索したい文字列>
&key=<取得したキー>
&part=snippet
&order=viewCount
&maxResults=<何件取得するか>
&type=video
&publishedAfter=<開始日時>
&publishedBefore=<終了日時>

をすべてつなぎ合わせたものを使えばデータを取得できることがわかります。実際の再生回数はここでは取得できないので、この処理で取得したデータをつかって調べることになります。

以下のようなコードでVideoIdを取得する方法を考えます。

キーワードと日時、何の順で何件取得するか。これを決めればGetResponseTextメソッドでレスポンスを取得することができます。

ではVideoIdから動画の情報を得るにはどうすればいいでしょうか?

https://www.googleapis.com/youtube/v3/videos

snippet
タイトル、説明、カテゴリなどの動画の基本的な情報

statistics
動画に関する統計情報

ここでは以下をつなぎ合わせてデータを取得します。

https://www.googleapis.com/youtube/v3/videos?
&key=<取得したキー>

&part=snippet,statistics
&id=<VideoId>
&fields=
items/snippet/title, // 動画のタイトル
items/snippet/description, // 動画の概要
items/snippet/publishedAt, // 動画がアップロードされた日時
items/snippet/channelTitle, // チャンネルのタイトル
items/statistics/viewCount, // 視聴回数
items/statistics/likeCount // 「高く評価」の数
&prettyPrint=true

チェックボックスで取得するかどうかを変更できるようにします。

[取得]ボタンがクリックされたら・・・