YouTubeチャンネルのRSSフィードをPHPでパースして出力する

WEB

概要

  • YouTubeチャンネルは、以下のようなURLでRSSフィードを吐いてる。

https://www.youtube.com/feeds/videos.xml?channel_id=【チャンネルID】

  • これをPHPのsimplexml_load_file関数で読み込み、パースして出力する。

サンプル

ソース

<?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>