Получить YouTube live_stats одновременных зрителей с канала вместо конкретного видео живого события

Я знаю, что можно получить количество одновременных зрителей для конкретного события YouTube в прямом эфире по этой ссылке: https://www.youtube.com/live_stats?v= {видеоид}

Мне было интересно, можно ли получить live_stats для канала или плейлиста вместо конкретного живого события.

Я хочу встроить эти данные в веб-страницу, которая будет иметь несколько различных живых событий, происходящих еженедельно. Изменение идентификатора видео для каждого события будет обременительным. Если это не может быть сделано непосредственно, есть ли способ получить идентификатор видео текущего живого события из канала и использовать сценарий java или php для замены идентификатора в ссылке? Пожалуйста, помогите мне разобраться в этом.

1 ответ

  1. Через некоторое время я и сам это понял…

    Я создал PHP скрипт, который извлекает идентификатор видео первого видео в плейлисте и помещает идентификатор в ссылку live stats. Я беру ссылку на живые события и помещаю их в плейлист для удобства использования.

    <?php
    // Retrieves video info from Youtube playlist. Just update [PLAYLIST_ID] and [API_KEY]
    $json_url = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&maxResults=1&playlistId=[PLAYLIST_ID]&fields=items%2Fsnippet%2FresourceId%2FvideoId&key=[API_KEY]";
    $json = file_get_contents($json_url);
    $json=str_replace('},
    
    ]',"}
    
    ]",$json);
    $data = json_decode($json, true);
    
    $videoId = $data['items'][0]['snippet']['resourceId']['videoId'];
    
    $viewers = file_get_contents("https://www.youtube.com/live_stats?v=$videoId");
    echo $viewers;
    ?>
    

    Затем я создал HTML-страницу, где данные динамически обновляются с помощью jQuery.

    <html>
    <body>
    <div id="status" style="color: #666; line-height: 24px; font-size: 19px; font-weight: normal; font: 19px Roboto,arial,sans-serif;"></div>
    <script src="http://code.jquery.com/jquery-1.7.1.min.js" type="text/javascript"></script>
    <script type="text/javascript">
    function update() {
        $.ajax({
            url: 'viewers.php',
            dataType: 'text',
            success: function(data) {
                if (parseInt(data) == 0) {
                    $("#status").css({ display: "none" });
                } else {
                    $("#status").text(parseInt(data) + ' watching now' );
                }
            }
        })
    }
    update();
    var statusIntervalId = window.setInterval(update, 5000);
    </script>
    </body>
    </html>
    

    Вот как далеко я зашел. Теперь мне просто интересно, есть ли лучший способ объединить эти коды вместе, чтобы создать меньше запросов сервера. Каждый запрос jQuery происходит каждые 5 секунд и составляет приблизительно 240 байт. Несмотря на то, что запросы небольшие, они могут замедлить страницу.

    Если вы можете, пожалуйста, помогите мне улучшить мое решение. Заранее спасибо.