SATOXのシテオク日記

~ふもっふ、ふもふも~

YouTube APIで遊んでみた

ふとYouTube APIで遊んでみたくなり、気がついたらライブ配信のコメントを取得してコメントを音声合成で再生する、という謎アプリ(.NETのフォームアプリ)ができあがってました(笑)。

f:id:satox:20190724234644j:plain

YouTube API 実験アプリ(コメント音声合成再生付き)

コードを貼り付けようと思ったんですが、はてなブログで見たまま編集をしてるとコードハイライトされた内容を貼り付けられるスマートな機能がなくてちょっとひどい。

やったことを簡単に書きますと

  1. NuGetでGoogle API/YouTube.v3参照を追加。
  2. YouTubeServiceオブジェクトを作ってAPI KEYを設定。
  3. Vedeo.Listに"LiveStreamingDetails"を設定してListRequest作成。
  4. ListRequestにVIIDEO IDを指定。(URLのv=??のID)
  5. ListRequest.Execute()を実行するとビデオリスト取得。
  6. ビデオリストオブジェクトからLiveChatId取得。
  7. YouTubeServiceのLiveChatMessagesのList()で"snippet,authorDetails"指定実行。
  8. ListRequestのExecute()でコメントリストを取得。
  9. 以降はListRequest.PageTokenに次ページトークンを入力して次コメント取得。

音声合成生成は簡単。

  1. NuGetでSpeechLib参照追加。
  2. SpVoiceオブジェクトを作成。
  3. Speech.Speak(text)で発話。

YouTubeコメント側は非同期で取得して共有オブジェクトに追加し続け、音声合成再生側もスレッドで共有オブジェクトにコメントが追加されたら取り出して再生するようにしました。

珍しく文字だけで説明しましたが、ソースを貼り付けた方が早いですね……。(今時はGitHubにでも入れとけばいいのか、Omini7Appみたいに。)