Быстро и просто качаем видео с YouTube и еще примерно 1000 популярных сайтов

  • Автор темы Автор темы WebBot
  • Дата начала Дата начала

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 825
Реакции
1 414
Баллы
113
Всем привет, решил запилить вторую статью в этом конкурсе =) в раж вошел =)

;-)
В этот раз хочу рассказать как можно легко и непринужденно качать видео с многих (даже очень многих) популярных мировых видеосервисов таких как YouTube, Vimeo, VK, Odnoklassniki, Xvideos и многих многих других.

Зачем их качать каждый решит для себя сам, в наш век быстрого интернета видеоконтент нужен очень много для чего (для наполнения собственных сообществ в соцсетях, для видеоспама, для рекламы, монтажа и еще кучи всего).

Ладно, не буду ходить вокруг да около. Эта статья посвящена одной замечательной консольной утилите, которая почему то в нашем зенносообществе пока еще не особо известна, но ее возможности в связке с зеннопостером могут съэкономить вам целую кучу времени (а иногда и денег).

Итак, встречайте - youtube-dl - это кроссплатформенная консольная утилита с открытым исходным кодом на Python, которая умеет качать видео с самых популярных сайтов в интернете. И пускай название не вводит вас в заблуждение, просто посмотрите на полный список поддерживаемых сайтов с которых можно качать видео. Их там порядка 1000+. Впечатляет, не правла ли? Там есть все популярные видеосайты мира, куча известных телекомпаний, соцсети и многие другие.

Официальный сайт: https://www.youtube-dl.org/
Последняя сборка для Windows всегда доступна тут: https://www.youtube-dl.org/downloads/latest/youtube-dl.exe

Нам, зенноводам, эта утилита инетерсна именно тем, что мы можем ее запускать из ZennoPoster-а, подставляя нужные нам параметры командной строки.
Для простого скачивания видео с различных сайтов будет достаточно стандартного кубика "Запуск программы", однако youtube-dl умеет не только качать, с ее помощью мы можем получать информацию о том или ином видео в форамате JSON (а для ютуба еще кучу всякой информации - о плэйлистах, их содержимом и тд) и вот для этих целей стандартный кубик нам не подойдет т.к запись STD OUT (того что выводится на экран) в переменную работает пока что мягко говоря не айс (может в новых версиях уже поправили, но у меня на 5.33 нормально не работает).

Так же нужно отметить что для нормальной работы youtube-dl потребуется еще одна популярная консольная утилита - ffmpeg т.к зачастую youtube-dl нужно перекодировать результат или склеить видео и звук ( если вы не в курсе, то тот же ютуб наиная с 1080p отдает видео и аудио отдельно, а не единым файлом ... именно поэтому в большинстве сервисов по скачиванию видео с ютуба вы можете скачать видео со звуком только в 720p, а все что выше уже по отдельности ).

Ладно, утомил наверное уже вас большим количеством букв, давайте перейдем к практическим примерам использования youtube-dl в ZennoPoster.

Демонстрационный пример подразумевает что в директории шаблона лежит так же youtube-dl и ffmpeg

Для начала будем использовать стандартный кубик запуска внешних программ.


Запустив кубик с такими параметрами в директорию шаблона скачается видео с ютаба в самом лучшем доступном качестве и с самым лучшим доступным аудио.

1 - качаем видео с youtube.png


Тут нужно понимать, что расширение у конечного файла может быть разным ... мы же качаем все в лучшем качестве и зачастую все это качается по отдельности (видео и аудио) и youtube-dl сам решит в каком контейнере это лучше совместить для лучшего качества. То есть на выходе может получиться mp4 или mkv например. Так же обратите внимание на таймаут, мы все-таки не картинки качаем а видео, соответственно он должен быть большим!

Если мы хотим что бы у скаченного с ютуба видео точно был формат MP4, тогда можно это явно указать

2 - качаем видео с youtube (задаем формат).png


Качаем видео с нашего любимого ВК. Не знаю можно ли тут выбирать качество (почти уверен что можно), но в макcимальном это делается вот так

3 - качаем видео с VK.png


Не забываем и про одноклассников ( я их хоть и не перевариваю, но видео-контента там тоже очень много ... качать не перекачать)

4 - качаем видео с OK.png


Ну и конечно все это дело не обойдется без манящей клубнички с крeпнейшего прон-сайта мира :-)

5 - качаем видео с xvideos.png


Хотел было еще пронхаб сделать для вас, но видимо он верстку изменил на днях и ютуб-дл его сейчас не осилил, хотя он поддерживается и я сам с него качал для адалт сайтов. Но не беспокойтесь, youtube-dl ОЧЕНЬ часто обновляется, сами понимаете что с таким количеством поддерживаемых сайтов всегда найдется тот кто что-то поменял ;-)

Ладно, думаю общий принцип простого скачивания вы уже поняли. Давайте перейдем к не менее интерсным штукам, которые позволяет нам сделать youtube-dl .... здесь мы уже перейдем от стандартного кубика запуска программ к C# коду т.к нам нужно будет получать вывод на экран, а у стандартного кубика с этим есть проблемы.

Получаем информация о конкретном видео с ютуба в JSON
6 - парсинг инфы о видео с YouTube.png


заглянув после выполнения этого кода в окно переменных и перйдя на вкладку JSON увидим просто КУЧУ информации об этом видео ... тут есть все - назвние, описание, количество лайков и дизлайков, заставка, тэги и категория, кодеки, прямые ссылки на скачку в разном качестве ... в общеv любителям покопаться будет чем заняться ;-)

1.gif


Давайте еще какой-нибудь примерчик рассмотрим. Например получим информацию о всех видео в плэйлисте из первого видеоконкурса шаблонов на зеннолабе (https://www.youtube.com/playlist?list=PLU9NTYia8FliXxgseUqvH6bsyRRZNt2mV)

8 - получение json о видео из плэйлиста YouTube.png


в результате в переменной result у вас будут построчные JSON-данные каждого видео из плэйлиста

9.png


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

Что еще хотел добавить. Наверное у некоторых из вас возник вопрос как получить название скаченного файла. Тут если несколько путей.
1) Можно вообще не качать с помощью youtube-dl , а получать JSON, брать оттуда нужную ссылку и просто качать зеннопостером. А можно воспользоваться опцией -o и задать полнуй путь сохранения (указывается вместе с названием файла) если мы точно знаем формат выходного видео.... иначе же можно каждого видео создать временную папку со случайным именем в которую и будем его качать ... в результате единственный фал что там есть и будет вашим ;-)

Вот пример как это сделать:

10.png


Ну и шаблон с этими всеми примерами прикладываю, там каждый кубик это отдельный пример ... напоминаю что в папке с шаблоном должен быть youtube-dl и ffmpeg
 
Номер конкурса статей
  1. Двенадцатый конкурс статей
Тема статьи
  1. Другое

Вложения

  • ydl.xmlz
    ydl.xmlz
    25,7 KB · Просмотры: 1 016
Последнее редактирование:
норм прога, какраз с ОК видео стянуть нужно)
 
  • Спасибо
Реакции: WebBot
Спасибо. Радует продуктивность и креативность автора - WebBot.
 
  • Спасибо
Реакции: WebBot
Ух, вот это оч хорошо, заодно в кишки загляну.... python - штука хорошая)
 
  • Спасибо
Реакции: WebBot
объективненько...
нет других вариантов чтобы получить:

Название :
Продолжительность :
Пользователь :
Дата публикации :
Просмотры :
Понравилось :
Не понравилось:
Описание...

?
Вкладку json проверяли?
 
  • Спасибо
Реакции: WebBot и Анатолий
Еще полезная команда про которую забыл написать в статье - скачка только аудио (mp3) из ютуб-видео, периодически ее юзаю

Код:
Развернуть Свернуть Копировать
youtube-dl.exe -x --audio-format mp3 https://www.youtube.com/watch?v=XUXJeCfAkKs

А вообще там конечно еще сотни (если не тысячи) всяких полезных команд (особенно касающихся ютуба)... так что кому интересно поэкспериментировать, рекомендую почтить официальную документацию
 
Еще полезная команда про которую забыл написать в статье - скачка только аудио (mp3) из ютуб-видео, периодически ее юзаю

Код:
Развернуть Свернуть Копировать
youtube-dl.exe -x --audio-format mp3 https://www.youtube.com/watch?v=XUXJeCfAkKs

А вообще там конечно еще сотни (если не тысячи) всяких полезных команд (особенно касающихся ютуба)... так что кому интересно поэкспериментировать, рекомендую почтить официальную документацию
комменты бы спарсить...
 
А как быть с видео которые сигментами идёт?
 
А как работать с сайтами типа этих
Тут видео сигментами идёт и целую ссылку редко удается спарсить
 
А как работать с сайтами типа этих
Тут видео сигментами идёт и целую ссылку редко удается спарсить
так то это не парсер сайтов, а качалка, которая вряд ли поддерживает конкретно этот сайт.
тут работа по ссылкам на конкретные ролики.
 
Так я не парс ссылок,я спрашиваю про то что как с подобного сайта скачатт
 
Вот вот,а как же их собрать?
 
@slava1975
youtube-dl поддерживает только сайты имеющиеся в этом списке . Указанного выше сайта в нем нет т.ч если только самому разбираться каким образом на указанном выше сайте можно получить прямую ссылку на видео (или куски видео и потом с помощью того же ffmpeg их клеить)
 
Вот вот,а как же их собрать?
по классам вовсе комменты, я не особо шарю в этих плеерах, но с данного сайта вряд ли что получится скачать.
набор файлов, которые собираются в кучу скриптом...
блокнотом откройте файл, скачайте содержимое любой ссылки и посмотрите через медиаплеер - ролики по несколько секунд.
ищите сайты с нормальными роликами.
 

Вложения

  • index.txt
    index.txt
    38,3 KB · Просмотры: 541
@slava1975
зашел на указанный вами сайт, тыркнул в случайное видео и открыл в браузере код страницы
ShareX_2019-12-12_16-44-39.png
там прямые ссылку на файлы m3u8 для каждой серии, а внутри них ссылки на кусочки видео в формате ts .... соответственно нужно качать m3u8, качать все кусочки в формате ts и склеивать их с помощью ffmpeg
 
самодельный плеер, чтобы не дать вам скачать ролики, а так же размещать любую рекламу в своих видео. толково.
 
Добавлю-ка я вам мыслей.
Берем сервак или виртуал самый дешевый, но позволяющий выполнить youtube-dl.
Берем урлы xvideos на инетересующие страницы с хардкором. Отбираете. Они ссылки на видео каждые 3 часа (вроде) меняют.
Берете прямые руки, и пишите код, который при каждом обращении с конкретные параметрами на вашей стороне запускает youtube-dl с данными урла соответствующей страницы xvideos.
Получаете урл. Суете в свой плеер.
????
Профит!!!
 
  • Спасибо
Реакции: WebBot
Добавлю-ка я вам мыслей.
Берем сервак или виртуал самый дешевый, но позволяющий выполнить youtube-dl.
Берем урлы xvideos на инетересующие страницы с хардкором. Отбираете. Они ссылки на видео каждые 3 часа (вроде) меняют.
Берете прямые руки, и пишите код, который при каждом обращении с конкретные параметрами на вашей стороне запускает youtube-dl с данными урла соответствующей страницы xvideos.
Получаете урл. Суете в свой плеер.
????
Профит!!!
Да, запросто можно сделать свой мега-пронсайт беря прямые ссылки для своего плеера с крупных мировых пронсайтов. Хотя, нужно сначала посмотреть как там отдается видео и аудио, может так же как на ютубе по отдельности, тогда шаманить придется ж)
 
Да хорошая утилька, главное что она умеет сама прямую ссыль получать в отличии от wget.exe
Ого го, даже отлично качает онлаин трансляции, ваще респект тебе дружище.
 
  • Спасибо
Реакции: WebBot
Сейчас в телеграм написал человек, интересовался можно ли сделать шаблон для выкачивания MP3 из указанных им альбомов на Яндекс Музыка (там дальше с этими mp3 еще кое-что делать нужно, но здесь не об этом) .... в общем сразу вспомнил про youtube-dl и решил проверить - отлично выкачивает с ЯМ, как отдельные треки так и целые альбомы или плейлисты. Вот считай сразу шаблон на 90% готов ж) В общем в 100500 раз убеждаюсь в полезности этой штуки.

+ кроме выкачивания так же с помощью -j можно получать информацию в формате JSON, где есть прямая ссылка на скачку, название артиста и трека, длительность, thumbnail, размер файла и другая инфа. В общем сказка ;)

JSON:
Развернуть Свернуть Копировать
{"genre": "electronics", "album": "Chilled House 2018", "album_artist": "\u0441\u0431\u043e\u0440\u043d\u0438\u043a", "_filename": "Mr. Chillout - Crockett\u00b4s Theme-38339585.mp3", "playlist_index": null, "thumbnail": "http://avatars.yandex.net/get-music-content/149669/43d0c52f.a.4898100-1/orig", "ext": "mp3", "extractor": "yandexmusic:track", "format": "0 - unknown", "format_id": "0", "protocol": "http", "abr": 192, "webpage_url": "https://music.yandex.ru/album/4898100/track/38339585", "thumbnails": [{"id": "0", "url": "http://avatars.yandex.net/get-music-content/149669/43d0c52f.a.4898100-1/orig"}], "artist": "Mr. Chillout", "track_number": 2, "duration": 217.89, "requested_subtitles": null, "playlist": null, "disc_number": 1, "title": "Mr. Chillout - Crockett\u00b4s Theme", "acodec": "mp3", "filesize": 5229922, "webpage_url_basename": "38339585", "id": "38339585", "http_headers": {"Accept-Encoding": "gzip, deflate", "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "Accept-Language": "en-us,en;q=0.5", "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.7", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3733.0 Safari/537.36"}, "fulltitle": "Mr. Chillout - Crockett\u00b4s Theme", "extractor_key": "YandexMusicTrack", "url": "http://s94vla.storage.yandex.net/get-mp3/3a26b03a7ee62e08fbc4589476b034e6/000599babf913b8a/rmusic/U2FsdGVkX18xT65kdCB_JjNqCMhkd2A2a4uEXB3YXogEEIvEK8W0pMWlHKqNFjBXHWpqSaqcHfr6eY3PDoKqR7oha6QiQ6uEuiOGbLefFss/692554aad494e0a4adb1a326bfb73f357b5021d3ea06e57119e2b8c43e3ca334?track-id=57348376 ", "display_id": "38339585", "track": "Crockett\u00b4s Theme", "release_year": 2017}
 
  • Спасибо
Реакции: Colter и inilim

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)