YouTubeチャンネルのRSSフィードをPHPでパースして出力する
概要
- YouTubeチャンネルは、以下のようなURLでRSSフィードを吐いてる。
https://www.youtube.com/feeds/videos.xml?channel_id=【チャンネルID】
- これをPHPのsimplexml_load_file関数で読み込み、パースして出力する。
サンプル
- https://hi3103.net/study/1905-ytrss/
- 今回は動画IDとタイトルを取得し、リスト形式のリンクを出力してみた。
ソース
<?php
//フィードのURLをセット
$feed='https://www.youtube.com/feeds/videos.xml?channel_id=【チャンネルID】';
//フィードを読み込み
$xml = simplexml_load_file($feed);
//配列に変換
$obj = get_object_vars($xml);
//動画情報を変数に格納
$obj_entry = $obj["entry"];
//動画のトータル件数を取得
$total = count($obj_entry);
//動画が存在するかどうかチェック
if( $total != 0 ){
//リストの開始タグを出力
echo '<ul>';
//for文でブン回す
for ($i=0; $i < $total; $i++) {
foreach ($obj_entry[$i] as $key => $value) {
if( in_array($key, array('id','title')) ){//キーがidかtitleの場合
if( $key=='id'){
//動画IDを変数に格納(yt:video:XXXXという形式なので手前の文字列を置換処理も挟む)
$video_id = str_replace('yt:video:', '', $value[0]);
}elseif( $key=='title' ){
//動画タイトルを変数に格納
$video_title = $value[0];
}
}else{
continue;//残りの処理をスキップ
}
}
//リスト形式で出力
echo '<li>';
echo '<a href="https://www.youtube.com/watch?v='.$video_id.'">';//動画IDを使ってURLを組み立て
echo $video_title;//動画タイトル
echo '</a>';
echo '</li>';
}
//リストの終了タグを出力
echo '</ul>';
}
?>
チャンネルIDの調べ方
https://www.youtube.com/channel/UC5KFTO7XAn69XY7jFWcGguA
というURLの場合、channelより後の部分
UC5KFTO7XAn69XY7jFWcGguA
がIDにあたる。
出力する件数を指定する場合
for文の終了条件になっている $total の部分を数字に置き換える。
for ($i=0; $i < 5; $i++) {
動画IDの組み合わせ使用例
動画URL
https://www.youtube.com/watch?v=【動画ID】
https://youtu.be/【動画ID】
最大サイズのサムネイル画像
http://img.youtube.com/vi/【動画ID】/maxresdefault.jpg
※参考:YoutubeサムネイルURL取得|ちょっと便利なツール・ジェネレーター置き場
iframe埋め込みタグ
<iframe width="560" height="315" src="https://www.youtube.com/embed/【動画ID】" frameborder="0"></iframe>