2017-02-05 14 views
0

Я пытаюсь написать сценарий Greasemonkey, чтобы извлечь описание видео Youtube и вставить его на другой сайт, который использует встроенные видео.Возможно ли получить описание видео с YouTube без аутентификации через API?

Единственный способ, которым я нашел это, - использовать API для вызова всех данных для видео. Я думаю, что это сложный способ сделать это, поэтому я хочу создать сценарий, который не требует аутентификации и может очистить описание.

Есть ли способ сделать это?

ответ

0

https://www.youtube.com/get_video_info Используйте сервис, который возвращает URLSearchParams -совместимого & -разделенного строку различных параметров видео, включая title.

function getYoutubeVideoTitle(id, callback) { 
    GM_xmlhttpRequest({ 
     method: 'GET', 
     url: 'https://www.youtube.com/get_video_info?video_id=' + id, 
     onload: function(r) { 
      var encoded = (r.responseText.match(/(^|&)title=(.*?)(&|$)/) || [])[2] || ''; 
      callback(decodeURIComponent(encoded.replace(/\+/g, ' '))); 
     } 
    }); 
} 

getYoutubeVideoTitle('jE51HWPz1l8', function(title) { 
    console.log(title); 
}); 

Specsavers котла Реклама - 2017

Чтобы получить все параметры в объекте разделить ответ на & и разделить каждый элемент с помощью =, как ключ/значение:

function getYoutubeVideoData(id, callback) { 
    GM_xmlhttpRequest({ 
     method: 'GET', 
     url: 'https://www.youtube.com/get_video_info?video_id=' + id, 
     onload: function(response) { 
      var data = {}; 
      response.responseText.split('&').forEach(function(param) { 
       param = param.split('='); 
       data[param[0]] = decodeURIComponent(param[1].replace(/\+/g, ' ')); 
      }); 
      callback(data); 
     } 
    } 
} 

Примечания.

В современных браузерах URLSearchParams обеспечивает гораздо более удобный доступ:

 onload: (r) => callback(new URLSearchParams(r.responseText).get('title')); 

 onload: (r) => { 
      var data = {}; 
      for (var entry of new URLSearchParams(r.responseText).entries()) 
       data[entry[0]] = entry[1]; 
      callback(data); 
     } 

код не принимает на себя никаких дубликатов ключей в ответ, это верно для get_video_info службы.

Чтобы получить видео ссылки для загрузки и получения дополнительной информации в ответ на изменение запроса URL:

GM_xmlhttpRequest({ 
     method: 'GET', 
     url: 'https://www.youtube.com/get_video_info?video_id=' + id + 
      '&hl=en_US&html5=1&el=embedded&eurl=' + encodeURIComponent(location.href), 
+0

Используя URLSearchParams, я затем использовать Greasemonkey позиционировать ответ, где я хочу его на веб-странице, как обычно? –

+0

URLSearchParams - это просто удобство, которое улучшает ручное разделение строк, оно не связано ни с чем другим. – wOxxOm

 Смежные вопросы

  • Нет связанных вопросов^_^