Как я могу получить URL-адреса YouTube программно?

#javascript

#javascript

Вопрос:

Я пытаюсь получить URL-адрес YouTube программно и пытаюсь создать кнопку загрузки на YouTube. Я следую учебному проекту, в котором говорится использовать

 'ytplayer.config.args.url_encoded_fmt_stream.map.split(",");'
  

Я запускаю это непосредственно в консоли и пытался запустить это через свой проект, но я продолжаю получать

 VM765:1 Uncaught TypeError: Cannot read property 'map' of undefined
at <anonymous>:1:45'
  

В паре сообщений на stack overflow говорится об использовании этой же строки, но я не уверен, почему это не работает.

manifest.json

 "name" : "Simple Youtube Downloader", 
"description" : "Download youtube videos simpler than before. ",
"version" : "0.1",
"author" : "Nick Germaine",
"web_accessible_resources" : ["src/youtubedl.js"],
"manifest_version" : 2,
"content_scripts" : [
    {
        "matches" : ["https://www.youtube.com/watch*"],
        "js" : ["src/loader.js"]
    }
]
  

loader.js

 s = document.createElement("script");
s.src = chrome.extension.getURL("src/youtubedl.js");

s.onload = function(){
    this.remove();
}

document.head.appendChild(s);
  

youtubedl.js

 var videoUrls = window.ytplayer.config.args.loaderUrl.map.split(',');



console.log("our extension has loaded", videoUrls)
  

Комментарии:

1. Youtube — довольно сложное приложение, и, возможно, с момента создания руководства, которому вы следуете, многое изменилось. Если вам нужна дополнительная помощь, было бы полезно получить более подробную информацию о том, что вы пытаетесь сделать, и больший объем соответствующего кода.

2. Я пытаюсь получить прямой URL-адрес с YouTube, чтобы я мог создать кнопку загрузки на странице YouTube при просмотре видео. Я продолжу и добавлю еще несколько своих файлов

Ответ №1:

ошибка указывает на то, что url_encoded_fmt_stream не определено. возможно, вы сможете получить дополнительную помощь по этому вопросу, если опубликуете полный пример кода.

Ответ №2:

Несколько моментов,

  1. Оказывается, загрузка видео с YouTube противоречит их политике, поэтому, если вы пытаетесь опубликовать расширение или что-то подобное, оно, скорее всего, будет удалено.

  2. YouTube довольно регулярно меняет свой сайт, поэтому любой учебник, который вы можете просмотреть, вероятно, устарел. Я проверил тот элемент, на который вы ссылаетесь в своем коде, и это просто пустой объект, из-за чего вы получаете undefined при попытке запустить функцию map.

  3. Если вы все еще заинтересованы в создании этого инструмента, я бы посоветовал взглянуть на это репозиторий GitHub. Это выглядит как довольно надежное решение для выполнения того, что вы пытаетесь сделать, и они предоставляют API, чтобы вы могли обернуть его расширением или чем угодноhttps://github.com/fent/node-ytdl-core

Комментарии:

1. Ах, хорошо, так вы говорите, что они, возможно, изменили эту политику, и теперь это намного сложнее выполнить?

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