※この方法は Youtube の Feed と Google Feed API を使用します。
2015年11月現在は使用できますが今後使用できなくなる可能性はあります。
チャンネルIDを調べる
チャンネルのFeedを取得するには、そのチャンネルIDをあらかじめ調べる必要があります。
Youtubeのチャンネルページを表示すると下記のようなURLになっていると思います。
https://www.youtube.com/channel/xxxxxxxxxxxx
「channel/」に続く文字列がチャンネルIDになります。
他にもログインした状態で「アカウントの詳細設定」を開くことでも確認できます。
詳細は下記をご覧ください。
YouTube ユーザー ID とチャンネル ID – YouTube ヘルプ
Feed情報を取得する
チャンネルのFeedを取得するURLは下記になります。
https://www.youtube.com/feeds/videos.xml?channel_id=xxxxxxxxxxxx
channel_id= の部分に先ほど調べたチャンネルIDを入れてください。
jQueryで表示する(サムネイル+リンク)
Feed(XML)で表示できたしあとは楽勝じゃんと思いきやそうでもありません。
JSは基本的にhttpsだと(?)取得できない仕組みになっているようです。
そこで Google Feed API の出番です。
とはいってもそれもあまり難しいことではありません。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script>
$(function() {
$.getJSON(
'http://ajax.googleapis.com/ajax/services/feed/load?callback=?',
{
//xxxxxxxを表示したいチャンネルidに置き換えてください。
q: 'https://www.youtube.com/feeds/videos.xml?channel_id=xxxxxxxxxxxxxxxx',
v: '1.0',
num: 10 //取得数
},
function (data) {
$.each(data.responseData.feed.entries, function(i, item){
$('#youtube ul').append('<li><a href="'+ item.link + '">' +
item.title + '<br><img src="' +
item.mediaGroups[0].contents[0].thumbnails[0].url + '"></a></li>');
});
}
);
});
</script>
あとはHTMLで入れ物を作りましょう。
<div id="youtube"><ul></ul></div>
jQueryで表示する(動画埋め込みバージョン)
動画を埋め込んで再生させたい場合はこうです。
function (data) {
$.each(data.responseData.feed.entries, function(i, item){
$('#youtube ul').append('<li><iframe width="'+ item.mediaGroups[0].contents[0].width +'" height="'+ item.mediaGroups[0].contents[0].height +'" src="'+
item.mediaGroups[0].contents[0].url + '" frameborder="0" allowfullscreen></iframe></li>');
});
}
PHPで表示
PHPみたいなサーバースクリプトならGoogle Feed通さなくても大丈夫なようです。
<?php
$url = "https://www.youtube.com/feeds/videos.xml?channel_id=xxxxxxxxxxxxxxxxxxxxxxx";
$rss = file_get_contents($url);
$rss = preg_replace("/<([^>]+?):(.+?)>/", "<$1_$2>", $rss);
$rss = simplexml_load_string($rss,'SimpleXMLElement',LIBXML_NOCDATA);
foreach($rss->entry as $value): ?>
<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>
<?php endforeach; ?>
参考:RSS(XML)の名前空間やCDATAの値を取得する方法
以上です。
いろいろ細かいことしたいときはAPIのバージョン3をちゃんとに使ったほうがいいと思います。


