YouTubeチャンネルの最新動画を1件だけ表示させる
PHPで最新動画を取得する
表示はiframeです。
「xxx..」の部分を取得したいチャンネルIDに書き換えて下さい。
<?php
$user = "xxxxxxxxxxxxxxxxxxxxxxxx";
$url = "https://www.youtube.com/feeds/videos.xml?channel_id=" .$user;
$rss = file_get_contents($url);
$rss = preg_replace("/<([^>]+?):(.+?)>/", "<$1_$2>", $rss);
$rss = simplexml_load_string($rss,'SimpleXMLElement',LIBXML_NOCDATA);
foreach($rss->entry as $value){
if ($value === 0) {
} else {
break;
}
}
?>
<iframe width="480" height="360" src="https://www.youtube.com/embed/<?php echo htmlspecialchars($value->yt_videoId, ENT_QUOTES, 'UTF-8') ?>" frameborder="0" allowfullscreen></iframe>
もしSSLのエラーが出たら
Warning: file_get_contents(): SSL operation failed with code 1.
PHPのバージョンによって、上記のような文言でSSLエラーが出ることがあります。
その場合は下記を記述すればうまくいきました。
<?php
$arrContextOptions=array(
"ssl"=>array(
"verify_peer"=>false,
"verify_peer_name"=>false,
),);
$user = "xxxxxxxxxxxxxxxxxxxxxxxx";
$url = "https://www.youtube.com/feeds/videos.xml?channel_id=" .$user;
$rss = file_get_contents($url, false, stream_context_create($arrContextOptions));
$rss = preg_replace("/<([^>]+?):(.+?)>/", "<$1_$2>", $rss);
$rss = simplexml_load_string($rss,'SimpleXMLElement',LIBXML_NOCDATA);
foreach($rss->entry as $value){
if ($value === 0) {
} else {
break;
}
}
?>
<iframe width="480" height="360" src="https://www.youtube.com/embed/<?php echo htmlspecialchars($value->yt_videoId, ENT_QUOTES, 'UTF-8') ?>" frameborder="0" allowfullscreen></iframe>
YouTubeのiframeをレスポンシブにしたかったら
<div class="youtube">
<iframe width="560" height="315" src="URL" frameborder="0" allowfullscreen></iframe>
</div>
.youtube{
width: 100%;
position: relative;
padding-top: 56.25%;
}
.youtube iframe{
position: absolute;
top: 0;
left: 0;
width: 100% !important;
height: 100% !important;
}
デモ
作業中によく聞くBOILER ROOMのYouTubeのチャンネルから最新1件をレスポンシブで出してみました。
ちなみに作業中はビート早い方が絶対早く進みますよ!(主観)
参考記事
下記の記事を参考にさせて頂きました。
- jQueryでYoutubeの指定したチャンネルの最新動画を表示する方法(お手軽版)
- http://www.webopixel.net/javascript/1041.html
さいごに
結構使えるところはありそうです。
ぜひ参考にして下さい。