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>

Comments

  • スパム対策のため、コメント本文にURLが含まれている場合は「承認待ち」となり、すぐに投稿が反映されません。ご了承ください。
  • 公序良俗に反する内容、個人が特定できる情報、スパム投稿と思われるコメント等については、予告なく編集・削除する場合があります。