и что эта обёртка делала бы?
То, что надо автору. Просто видео скачивать через вызов youtube-dl, а не самому велосипедить.
ну я так и делал сначала.
но это ведь такая лютая кривь. Это толком не работает.
Почему?
например, как получить информацию о видео, зная только его ID?
Там есть разные флаги упрощающие парсинг вывода, есть вывод инфы о видео в JSON:
-j, --dump-json ... print JSON information. See the "OUTPUT TEMPLATE" for a description of available keys.
https://github.com/ytdl-org/youtube-dl/blob/master/README.md#embedding-youtube-dl
youtube-dl makes the best effort to be a good command-line program, and thus should be callable from any programming language. If you encounter any problems parsing its output, feel free to create a report.
Ну и уже есть библиотеки-обертки для разных языков. Можно их взять или делать на их основе.
google.com/search?q=youtube-dl+c%23
YouTubeDL ytdl = new YouTubeDL();
var result = await ytdl.ExtractInfoAsync("https://www.youtube.com/watch?v=BaW_jenozKc") // extracts info and downloads
if (result is Video video)
{
Console.WriteLine(video.Title);
}
А если на Питоне делать, то можно сразу сам youtube-dl как библиотеку использовать.
ok, предположим, что обертку написать возможно.
Но это ведь не отменяет возможность возникновения проблемы, с которой, собственно, и началась данная тема.
Тогда в чём разница? C чего вы взяли, что при использовании обёртки такой проблемы не будет?
Ну да, для нее предлагается только куки браузера давать.
Но наверняка других решенных проблем хватает ) Или если вдруг ютуб что-то поменяет и старый алгоритм скачивания перестанет работать, то скорее всего достаточно быстро выйдет обновление, не надо самому разбираться.
У youtube-dl
есть фатальный косяк. На ютубе есть видео, которые, зачем-то, разбиты на чанки. При скачивании таких видео, youtube-dl
иногда начинает сыпать ошибками 404, но всё-равно продолжать скачивать. В результате, у скачанного файла не сходится хэш. Но если скачать это видео заново, то ошибок уже не будет и хэш сойдётся Почему он не может остановиться при ошибках или заново перекачать битый чанк - мне искренне не понятно Я считаю это неприемлемым (даже с учётом гитхабности и я никому ничем не обязан
ности). Особенно для программы, которая существует и активно обновляется, как вы сказали, уже 10 лет Ну это просто позор Что, за 10 лет никто в интернете хэш не додумался проверить И ладно бы когда ты об этом знаешь. Но если ты об этом не знаешь, ты видишь ошибки. Скачал, открыл - видео открылось - доволен. А на самом деле оно в каких-то местах битое, а ты об этом даже не догадываешься. Ну как так-то?
И еще youtube-dl
не может перехватывать стримы. Там есть какая-то команда, которая должна выдавать ссылку на плейлист m3u8
. Она его и выдаёт. Только это нифига не он Если скачать этот файл и переименовать его из .m3u8
в .ts
, то мы получим последний двухсекундный чанк текущего стрима Это что, автор так прикололся или не справился с управлением? Зачем делать функцию, которая не работает?
Еще, до кучи, нельзя скачать начало стрима, который сейчас идет.
А моя программа делает это как Танос с перчаткой и камнями бесконечности.
(тут должна быть пафосная фотка щёлкающего Таноса, но я не нашел нормальную)
Только без перчатки и без камней
Почему этого не мог сделать автор youtube-dl
- не понятно. Там даже никакого API не надо. Всё нужное есть на странице с видео. Просто скачать страницу и распарсить.
По-этому, я никому не рекомендую писать и использовать уже написанные обёртки над youtube-dl
Лучше напишите нормальную программу
Наверно стоит сообщить им о нем ) Issues · ytdl-org/youtube-dl · GitHub
И/или самому разобраться, исправить, отправить pull request.
Справедливости ради, следует отметить, что у 4K video downloader
а раньше тоже был такой косяк. Он выдавал ошибки, но продолжал пытаться скачивать. Рядом со скачанным файлом иногда оставались tmp
-файлы. Это было признаком того, что видео скачалось криво. Но я-то этого не знал! Я открываю видос, смотрю, он открылся. Думаю, ок. И, ничего не подозревая, удаляю эти tmp
-файлы. Это я уже потом посмотрел скачанный стрим и узнал об этом. Хотел перекачать, а его уже удалили. И это в программе, за которую просят 700 рублей! Разработчик, ты чё, ку-ку, или как?! У меня свой бесплатный говнокод, на коленке собранный, работает лучше, чем ваше профессиональное решение за 700 рублей!
В недавних версиях они это, вроде как, пофиксили. Стали качаться те видео, которые раньше не качались. Судя по всему, они где-то прознали про способ со скачиванием и парсингом страницы
Но почему они за 700 рублей не прикрутили куки или, хотя-бы, ручную вставку кода страницы (как у меня) - не ясно. Теперь, из-за капчи, 4K video downloader
тоже не работает.
Слушайте, меня паходу разбанили Такое может быть? Запросы снова пошли!
А чего б нет? Что ютуб хочет, то и делает.
Наверно не навсегда банит, чтобы потом нормальным юзерам с тем же IP не мешать.
Вот, кстати, никогда не понимал бана по IP. Если забанили одного, то забанены будут все.
Бан временный. Обычно есть лимит, количество дневных запросов что-то около 100 в час, 1000 в день и 5 000 в месяц. Ещё есть бан на на VPN когда много разных клиентов с одного IP.
Каптча оставлена для нормальных юзеров если их много за NAT, но там тоже не все так хорошо.
Я уже 4 месяца этой своей программой качаю, а забанили только сейчас. Качать стало очень удобно. Получил список видео канала и просто тыкай по кнопке
Странно только, что банан выписали ночью, а не в момент, когда запросы активно шли
Надо будет в программе счётчик запросов запилить