Вот некоторая ссылка, которая предоставляет список субтитров для видео на YouTube в формате xml.
https://www.youtube.com/api/timedtext?lang=en&v=6dlr-1Qk8Uc'
http://video.google.com/timedtext?type=track&v=zenMEj0cAC4&id=0&lang=en'
Но это применимо не ко всем видео. Некоторые видео имеют значок субтитров (cc) внизу видео, и при щелчке появляется этот субтитр, но по этим ссылкам нельзя вернуть данные субтитров.
Затем я проверил данные восстановления при щелчке на значке cc, он возвращает данные всех видео с субтитрами.
Но я не могу понять, как вызвать этот API с помощью узла js.
Вместо использования API данных YouTube - заголовок 1 для получения подписей к видео, вы также можете использовать обратный вызов AJAX для получения подписей.
1 Если вы хотите использовать API данных YouTube для запроса подписей, советую внимательно прочитать документацию .
В этом примере обратный вызов AJAX используется для извлечения подписей из данного видео YouTube.
Используя синтаксический анализатор XML 1017 *, ответ предыдущего обратного вызова AJAX повторяется в цикле for для получения заголовков:
// Ajax callback to the YouTube channel: $.ajax({ type: "GET", url: "http://video.google.com/timedtext?type=track&v=zenMEj0cAC4&id=0&lang=en", crossDomain: true, }).done(function(data) { getCaption(data); }); // Variables. var parser, xmlDoc; var HTML_captions = ""; // Parse the AJAX response and get the captions. function getCaption(data) { try { // Loop the results of the ajax: for (var i = 0; i < data.getElementsByTagName("transcript")[0].childNodes.length; i++) { HTML_captions += data.getElementsByTagName("transcript")[0].childNodes[i].innerHTML + "<br/>"; } // Preparing captions... fillData(); } catch (err) { console.log(err); alert('Error at getCaption function - see console form more details.'); } } // Fill the data "captions" in a HTML "div" control. function fillData() { try { document.getElementById("demo").innerHTML = HTML_captions; } catch (err) { console.log(err); alert('Error at fillData function - see console form more details.'); } }
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script> <div class="infoVideo"> <span>These are the captions of the following YouTube video:</span> <br/> <span>Title: How Turbochargers Work</span> <br/> <span>URL: https://www.youtube.com/watch?v=zenMEj0cAC4</span> </div> <br/> <div id="demo"><i>Loading captions...</i></div>