Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
YouTube API を使ってみた
Search
wai-doi
October 29, 2021
Programming
0
61
YouTube API を使ってみた
wai-doi
October 29, 2021
Tweet
Share
More Decks by wai-doi
See All by wai-doi
無料で将棋を楽しめるサービス5選
yusukedoi
0
51
Other Decks in Programming
See All in Programming
リバースエンジニアリング新時代へ! GhidraとClaude DesktopをMCPで繋ぐ/findy202507
tkmru
4
1.6k
0から始めるモジュラーモノリス-クリーンなモノリスを目指して
sushi0120
0
210
脱Riverpod?fqueryで考える、TanStack Queryライクなアーキテクチャの可能性
ostk0069
0
570
[Codecon - 2025] Como não odiar seus testes
camilacampos
0
100
副作用と戦う PHP リファクタリング ─ ドメインイベントでビジネスロジックを解きほぐす
kajitack
3
500
Claude Code派?Gemini CLI派? みんなで比較LT会!_20250716
junholee
1
760
11年かかって やっとVibe Codingに 時代が追いつきましたね
yimajo
0
220
SQLアンチパターン第2版 データベースプログラミングで陥りがちな失敗とその対策 / Intro to SQL Antipatterns 2nd
twada
PRO
35
10k
バイブコーディングの正体——AIエージェントはソフトウェア開発を変えるか?
stakaya
3
260
Google I/O Extended Incheon 2025 ~ What's new in Android development tools
pluu
1
210
202507_ADKで始めるエージェント開発の基本 〜デモを通じて紹介〜(奥田りさ)The Basics of Agent Development with ADK — A Demo-Focused Introduction
risatube
PRO
5
1.3k
Streamlitで実現できるようになったこと、実現してくれたこと
ayumu_yamaguchi
2
240
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
83
9.1k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.3k
Making the Leap to Tech Lead
cromwellryan
134
9.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Thoughts on Productivity
jonyablonski
69
4.8k
Building an army of robots
kneath
306
45k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
19k
Transcript
YouTube API を使ってみた @wai_doi 2021/10/29 技術交流会 1
自己紹介 • 名前 ◦ 土居裕典(@wai_doi) • 経歴 ◦ 新卒3年目 •
趣味 ◦ 将棋 ◦ YouTobe ◦ スマホゲーム 2
YouTube APIで解決したいこと 3
クラッシュロワイヤル とは • 通称 クラロワ • リアルタイム対戦型の新感覚カードゲーム • 8枚のカードでデッキを組む •
世界中のプレイヤーと対戦 4
Stats Royale チャンネル • クラロワの上位プレイヤー の試合がアップされている チャンネル • ひとつの動画にひとつの試 合
• 1日50本以上アップされて いる https://www.youtube.com/channel/UC698QxCg2KVVWh4G6NQLX_w 5
観たい動画のいつもの探し方 チャンネルのアップロード済み動 画の一覧から探す 6
特定カードが使われる動画だけを観たい! ゴーレム サムネイル画像に写っているカードで 観たい動画をいつも選んでいる ( 面倒😥) 7
特定カードが使われる動画だけを観たい! ゴーレム サムネイル画像に写っているカードで 観たい動画をいつも選んでいる ( 面倒😥) 8 観たい動画を簡単にカードで検索で きるようにしたい!!
それぞれの動画の概要欄を見ると... 9 使われるデッキとカードが 載っている !!😀
YouTube APIを使って アプリケーション開発をしてみた 10
Stats Royaleの動画検索Railsアプリケーションの構想 • Stats Royale がアップロードした動画を対象に • YouTube APIを使って動画ごとの概要欄のテキストを取得する •
概要欄のテキストからその動画で使われるデッキとカードを抜き出す • 動画、デッキ、カードを関連付けてデータベースに持っておく • 指定したカードで検索して、そのカードが使われる動画だけを一覧で表示する 11
設計したデータモデル 動画 デッキ カード ✳ 2 ✳ 8 12
YouTube API で利用できるリソース • アクティビティ • チャンネル • 再生リストの項目 •
再生リスト • 検索 • サブカテゴリ • サムネイル • 動画カテゴリ • 動画 • ... https://developers.google.cn/youtube/v3/docs?hl=ja 13
YouTube APIの制限 • 10000 Queries / 日 • Query =
リクエスト回数 * コスト • list が一番コストが安い • insert, updateがコストが高い https://ichiro-kun.com/post/2452/ 14
googleapis/google-api-ruby-client を利用した https://github.com/googleapis/google-api-ruby-client 15
YouTube APIを使った処理フロー 1. チャンネルIDで channels.list を叩く 2. チャンネル情報を取得し、アップロードされた動画の playlist IDを抽出する
3. playlist ID で playlistItems.list を叩く 4. 動画の情報を取得し、Video IDや概要欄のテキストなどを抽出する 16
1. チャンネルIDで channels.list を叩く • チャンネルIDはチャンネルURLの末尾にある チャンネルID 17
channels.list のレスポンス https://developers.google.com/youtube/v3/docs/channels/list itemsの中 18
1. チャンネルIDで channels.list を叩く idパラメータ (チャンネルID) part パラメータ (items の中で欲しいkeyを与える)
19
2. チャンネル情報を取得し、アップロードされた動画の playlist IDを抽出する チャンネルがアップロードした 動画の playlist ID を抽出 20
playlistItems.list のレスポンス https://developers.google.com/youtube/v3/docs/playlistItems/list itemsの中 21
3. playlist ID で playlistItems.list を叩く part パラメータ (items の中で欲しいkeyを与える)
playlistID パラメータ (再生リストのID) pageTokenパラメータ (ページの指定) 次のページのトークンを抽出 22
4.動画の情報を取得し、Video IDや概要欄のテキストなど を抽出する 概要欄のカードの文字列を抽出する 23
以降の処理は割愛します 概要欄のデッキとカードを抽出する • 抽出した情報をDBに保存する • 動画を一覧表示 • 動画の個別のページで埋め込み動画が観られる • 詳細はリポジトリ
https://github.com/wai-doi/clash-royale-youtube-searcher 24
アプリケーションの画面 25 動画個別ページ 動画一覧ページ
デモ https://clash-royale-youtube-searcher.herokuapp.com/ 26
今後追加してみたい機能 • 複数のカードで検索できるようにしたい • あるカード VS あるカードの対戦で検索できるようにしたい 27
ご清聴ありがとうございました! 28