YouTube Data API を使わなくとも最新の動画は RSS で取得できる。
リンク先とサムネイル、視聴回数、公開日(更新日)を取得可能である。
RSSはチャンネルのトップページのソースコードを覗けば URL がわかる。
表示されているユーザー ID とは異なる ID が URL にあるので、ソースコード から取得した方が確実である。
ただしライセンス的にOKかは不明なので、以下のコードは使用注意。
$CHANNEL_ID = '〜〜〜';
$MAX_RESULTS = 4;
$url = "https://www.youtube.com/feeds/videos.xml?channel_id=" . $CHANNEL_ID;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$rss = curl_exec($ch);
curl_close($ch);
$videos = array();
if ($rss) {
$rss = preg_replace("/<([^>]+?):(.+?)>/", "<$1_$2>", $rss);
$rss = simplexml_load_string($rss, 'SimpleXMLElement');
$count = 0;
foreach ($rss->entry as $value) {
if ($count >= $MAX_RESULTS) {
break;
}
$count++;
$videoId = htmlspecialchars($value->yt_videoId);
$link = 'https://www.youtube.com/watch?v=' . $videoId;
$src = 'https://www.youtube.com/embed/' . $videoId;
$title = htmlspecialchars($value->title);
$publishedDate = date('Y.m.d', strtotime($value->published));
$thumbnail = 'https://i.ytimg.com/vi/' . $videoId . '/mqdefault.jpg';
$videos[] = array(
'videoId' => $videoId,
'link' => $link,
'src' => $src,
'title' => $title,
'publishedDate' => $publishedDate,
'thumbnail' => $thumbnail
);
}
}
noteはこんな感じ。
<?php
$AUTHOR_ID = '〜〜〜';
$rss = simplexml_load_file('https://note.com/' . $AUTHOR_ID . '/rss');
$array = array();
$count = 0;
foreach($rss ->channel ->item as $item) :
++$count;
if ($count <= 3) :
$title = $item->title;
$time = date("Y-m-d H:m:s" , strtotime($item ->pubDate ));
$date = date("Y年m月d日" , strtotime($item ->pubDate ));
$link = $item->link;
?>
<li><a href="<?php echo $link; ?>" target="_blank"><p><?php echo $title; ?></p><time datetime="<?php echo $time; ?>"><?php echo $date; ?></time></a></li>
<?php endif; endforeach; ?>
コードスタイルが違うのはご愛敬。