今回はPHPを使ってYoutubeからRSS情報を取得して、iframeの埋め込み形式で出力する方法を紹介します。
通常は埋め込みたいYouTube動画を選択して、ツールメニューの「共有」から「動画の埋め込み」のコードをコピーペーストで貼り付けますよね。
この作業を自動で行い、最新のYouTube動画をWebページに貼り付けよう!
…という魂胆です。
まずは実際の挙動をご確認ください。
サンプルでは最近よく見るユーチューバーの「佐賀よかでしょう。」様のチャンネルを紹介しています。
毎日更新されているのでサンプルとして使うのにも最適です。
YouTubeチャンネルのRSSフィードのURL
最初にYouTubeチャンネルのRSSを取得する必要があります。
YouTubeにはRSSのアイコンなどがないのでURLの確認が難しいのですが、下記のようにユーザー名やチャンネルIDを指定してRSSフィードを取得できます。
#チャンネルIDを指定してRSSを取得 https://www.youtube.com/feeds/videos.xml?channel_id=チャンネルID #ユーザー名を指定してRSSを取得 https://www.youtube.com/feeds/videos.xml?user=ユーザ名
チャンネルIDまたはユーザー名はURLから判別することができます。
たとえばサンプルで紹介した「佐賀よかでしょう。」様の場合、チャンネルのURLは次のようになっています。
https://www.youtube.com/channel/UCD7-Ocp4InwPKzwiq_U-Abg
このURLの「channel」の後ろの部分がチャンネルIDになります。
つまり。
https://www.youtube.com/feeds/videos.xml?channel_id=UCD7-Ocp4InwPKzwiq_U-Abg
にアクセスするとRSSフィードを取得できるワケです。
参考コード
RSSフィードが取得できたら、あとはPHPを駆使してiframe埋め込み形式で出力します。
<?php $url = "https://www.youtube.com/feeds/videos.xml?channel_id=XXXXX"; // または // $url = "https://www.youtube.com/feeds/videos.xml?user=XXXXX"; $rss = file_get_contents($url); $rss = preg_replace("/<([^>]+?):(.+?)>/", "<$1_$2>", $rss); $rss = simplexml_load_string($rss,'SimpleXMLElement'); echo '<ul>'; foreach($rss->entry as $value) { echo '<li>'; echo '<div class="youtube-box"><iframe src="https://www.youtube.com/embed/' . htmlspecialchars($value->yt_videoId) . '" frameborder="0"></iframe></div>'; echo '<p><a href="https://www.youtube.com/watch?v=' . htmlspecialchars($value->yt_videoId) . '" target="_blank">' . htmlspecialchars($value->title) . '</a></p>'; echo '</li>'; } echo '</ul>'; ?>
- 変数 $url にRSSフィードURLを格納
- file_get_contents() で文字列に変換して読み込む
- preg_replace() で文字列を置換
- simplexml_load_string() で文字列をオブジェクトに代入
- 配列に変換して動画情報を変数に格納
- foreachでループを回し、iframeタグなどに動画ID、動画タイトルを出力
といった流れになっています。