Youtubeの検索結果から、Video-IDとタイトルを抽出するスクリプトです

 

<?php
$keyword = filter_input(INPUT_GET, 'keyword');
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<section style="text-align:center">
<h1 style="font-size: large">Youtube Search</h1>
<form>
<input type="text" name="keyword" value="<?= $keyword ?? ""; ?>">
<input type="submit">
</form>
</section>
<?php
if (isset($keyword)) {
    $url = 'https://www.youtube.com/results?' . http_build_query(['search_query'=>$keyword]);
    $result = @file_get_contents($url);
    if ($result === false) { die('aborted'); }
    $arr = [];
    while ($i = stripos($result, '<div class="yt-lockup-content">')) {
        $result = substr($result, $i);
        if (($i = stripos($result, '<a href="/watch?v=')) === false) { break; }
        $result = substr($result, $i + strlen('<a href="/watch?v='));
        if (($i = stripos($result, '"')) === false) { break; }
        $id = substr($result, 0, $i);
        if (($i = stripos($result, 'title="')) === false) { break; }
        $result = substr($result, $i + strlen('title="'));
        if (($i = stripos($result, '"')) === false) { break; }
        $arr[$id] = substr($result, 0, $i);
    }
    printf('『%s』の検索結果<br>(%s)<hr>', $keyword, $url);
    foreach ($arr as $id=>$title) {
        printf('<a href="http://www.youtube.com/watch?v=%s" target="_blank">%s</a><br>%s<hr>', $id, $id, $title);
    }
}
?>
</body>
</html>