Linux: yt-dlp в Slackware

Преамбула

Сломался даунлоадер с Ютуба yt-dlp, который я пользовал в качестве альтернативы youtube-dl, поскольку youtube-dl медленный. Но ютубовские уроды опять что-то поменяли и старая версия yt-dlp перестала работать. Решил обновить.

Обновление Python до версии 3.9

Новой версии yt-dlp нужна и новая версия Python. У меня стояла 3.7, а нужна 3.9.

1. Сносим старую версию (название пакета у вас может быть другим, у меня был python3-3.7.2-i586-1_SBo):

removepkg python3-3.7.2-i586-1_SBo

2. Качаем SlackBuild и исходники от Alien
3. Кладем их в отдельный каталог и делаем пакет:

./python3.SlackBuild Python-3.9.5.tar.xz

4. Устанавливаем пакет:

installpkg python3-3.9.5-i586-1alien.txz

Копии:
Слакбилд и исходники (RAR)
Готовый пакет (TXZ)

Устанавливаем новую версию yt-dlp

1. Сносим старый пакет, если есть (название пакета ниже может быть другим):

removepkg yt-dlp

2. Делаем временный каталог:

cd /tmp
mkdir yt-dlp2024

3. Создаем в нем каталог bin:

cd yt-dlp2024
mkdir bin

4. Качаем в bin с GitHub готовую версию yt-dlp:

Ссылка на страницу установки
Ссылка на бинарник для Linux

5. Устанавливаем скачанному файлу права на исполнение:

chmod 755 yt-dlp

6. Создаем пакет:

cd ..
makepkg ../yt-dlp2024.txz

7. В каталоге /tmp будет создан пакет yt-dlp2024.txz, нужно его установить:

cd ..
installpkg yt-dlp2024.txz

Копия готового пакета (TXZ)

Устранение ошибки ERROR: ‘latin-1’ codec can’t encode character

При первом использовании нового yt-dlp возникла ошибка:

[youtube] Extracting URL: https://www.youtube.com/watch?v=3zyZ-Ya7FJE
[youtube] 3zyZ-Ya7FJE: Downloading webpage
[youtube] 3zyZ-Ya7FJE: Downloading ios player API JSON
[youtube] 3zyZ-Ya7FJE: Downloading android player API JSON
WARNING: [youtube] Skipping player responses from android clients (got player responses for video "aQvGIIdgFDM" instead of "3zyZ-Ya7FJE")
[youtube] 3zyZ-Ya7FJE: Downloading m3u8 information
[info] 3zyZ-Ya7FJE: Downloading 1 format(s): 137+251
ERROR: 'latin-1' codec can't encode character '\u29f8' in position 6: ordinal not in range(256)

Ну все, пиздец, подумал я, настала та самая жопа, когда ебался пол ночи, а звуки для новых сэмплов так и не скачаю, а друзья неделю пилили, что из «жужжалки» UVB-76 (это такая всем известная номерная радиостанция), я себе семплов нужных и нарежу, а тут такой облом. Пошел в ресторацию, выпил хорошего немецкого пива под сосисочки, и решение нагуглилось!

При вышеуказанной ошибке yt-dlp надо запускать с параметром --restrict-filenames:

yt-dlp --restrict-filenames <url>

где

<url> — адрес видео, которое хотим скачать, например:

yt-dlp --restrict-filenames https://www.youtube.com/watch?v=3zyZ-Ya7FJE

Все! Качается:
[youtube] Extracting URL: https://www.youtube.com/watch?v=3zyZ-Ya7FJE
[youtube] 3zyZ-Ya7FJE: Downloading webpage
[youtube] 3zyZ-Ya7FJE: Downloading ios player API JSON
[youtube] 3zyZ-Ya7FJE: Downloading android player API JSON
WARNING: [youtube] Skipping player responses from android clients (got player responses for video "aQvGIIdgFDM" instead of "3zyZ-Ya7FJE")
[youtube] 3zyZ-Ya7FJE: Downloading m3u8 information
[info] 3zyZ-Ya7FJE: Downloading 1 format(s): 137+251
[download] Destination: UVB-76_The_buzzer_4625_kHz_USB_Live-[3zyZ-Ya7FJE].f137.mp4
[download] 16.6% of 260.26MiB at 252.20KiB/s ETA 14:41

Решение нашел здесь

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *