#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:
Несколько моментов,
-
Оказывается, загрузка видео с YouTube противоречит их политике, поэтому, если вы пытаетесь опубликовать расширение или что-то подобное, оно, скорее всего, будет удалено.
-
YouTube довольно регулярно меняет свой сайт, поэтому любой учебник, который вы можете просмотреть, вероятно, устарел. Я проверил тот элемент, на который вы ссылаетесь в своем коде, и это просто пустой объект, из-за чего вы получаете undefined при попытке запустить функцию map.
-
Если вы все еще заинтересованы в создании этого инструмента, я бы посоветовал взглянуть на это репозиторий GitHub. Это выглядит как довольно надежное решение для выполнения того, что вы пытаетесь сделать, и они предоставляют API, чтобы вы могли обернуть его расширением или чем угодноhttps://github.com/fent/node-ytdl-core
Комментарии:
1. Ах, хорошо, так вы говорите, что они, возможно, изменили эту политику, и теперь это намного сложнее выполнить?
2. Я не пытаюсь опубликовать это, я просто хочу сделать это как учебный проект