Quantcast
Channel: Node.jsタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8697

YouTubeチャンネルにアップロードされた動画を埋め込みHTML形式で取得してみた

$
0
0

はじめに

YouTube Data API を使って、YouTubeチャンネルにアップロードされた動画を埋め込みHTML形式で取得してみました。

JavaScriptのYoutube用ライブラリもいくつかあるみたいですが、
今回はURLを直打ちする形で実装しました。

GET URLやJSONの仕様は下記を参照しました。
https://developers.google.com/youtube/v3/docs

環境は下記になります。
macOS Catalina 10.15.6
Node.js v14.8.0
(Node.js Library)request 6.14.7

コードと実行結果

コードは下記になります。

youtube.js
constrequest=require('request');constURL_YOUTUBE_API='https://www.googleapis.com/youtube/v3/';constYOUTUBE_APP_KEY=process.env.YOTUBE_APP_KEY;constMY_YOUTUBE_CHANNEL_ID=process.env.YOUTUBE_CHANNEL_ID;constURL_YOUTUBE_CHANNELS=URL_YOUTUBE_API+'channels?key='+YOUTUBE_APP_KEY+'&part=snippet,statistics,contentDetails&id='+MY_YOUTUBE_CHANNEL_ID;constURL_YOUTUBE_PLAYLISTITEMS=URL_YOUTUBE_API+'playlistItems?key='+YOUTUBE_APP_KEY+'&part=snippet,contentDetails&playlistId=';constURL_YOUTUBE_VIDEOS=URL_YOUTUBE_API+'videos?key='+YOUTUBE_APP_KEY+'&part=player&id=';varget_yotube_options_base={url:'',method:'GET',json:true};varhtml_data=[];varget_youtube_options_1=get_yotube_options_base;get_youtube_options_1.url=URL_YOUTUBE_CHANNELS;request(get_youtube_options_1,function(error,response,ch_info){varplaylistId=ch_info.items[0].contentDetails.relatedPlaylists.uploads;varget_youtube_options_2=get_yotube_options_base;get_youtube_options_2.url=URL_YOUTUBE_PLAYLISTITEMS+playlistId;request(get_youtube_options_2,function(error,response,playlist_info){varvideoId_list=[];playlist_info.items.forEach(item=>{videoId_list.push(item.snippet.resourceId.videoId);});varget_youtube_options_3=get_yotube_options_base;get_youtube_options_3.url=URL_YOUTUBE_VIDEOS+videoId_list.join(',');request(get_youtube_options_3,function(error,response,video_info){video_info.items.forEach(item=>{html_data.push(item.player.embedHtml);});console.log(html_data);});});});

実行結果は下記になります。
「XXXXXXXXXXXXX」の部分は自分の情報に書き換えてください。

% export YOTUBE_APP_KEY=XXXXXXXXXXXXX
% export YOUTUBE_CHANNEL_ID=XXXXXXXXXXXXX
% node youtube.js
[
  '<iframe width="480" height="270" src="//www.youtube.com/embed/uRML4cHJKsE" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>',
  '<iframe width="480" height="270" src="//www.youtube.com/embed/BuHrzydYE2s" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>'
]

コードの説明

YouTubeに対して3回HTTPリクエストをする形になってます。

(1回目) チャンネルIDから再生リストIDを取得 => URL:「URL_YOUTUBE_CHANNELS」
(2回目) 再生リストIDから動画IDを取得 => URL:「URL_YOUTUBE_PLAYLISTITEMS」
(3回目) 動画IDから埋め込みHTMLを取得 => URL:「URL_YOUTUBE_VIDEOS」

事前準備が必要です。
・App Keyについては、
「Google APIs Console」というサイトで発行しておきます。

・YouTube Channel IDはIDを取得したいチャンネルのページに行って、ソースを表示=>「CHANNEL_ID」で文字列検索すると出て来ます。

下記の画像で言うと「UCD0it6kq_2HBn3uMACiX_3A」の部分です。
スクリーンショット 2020-09-06 0.55.16.png

以上です。


Viewing all articles
Browse latest Browse all 8697

Trending Articles