Утром зашёл на coub.com и увидел баннер с печальной новостью :
Проект Сoub закрывается 1 апреля 2022 года. Успейте скачать свои видео.
Не успев продрать глаза, быстренько написал скрипт для скачивания всех моих кубов разом..
Скрипт из файла urls.txt по ссылке скачивает исходник страницы, ищет ссылки и скачивает отдельно музыку и отдельно видео (в максимальном качестве), а потом объединяет их (зацикливает видео пока звучит аудиодорожка).
Создаём файл download_coubs.bat и копируем в него код:
@echo off
cls
SetLocal EnableExtensions EnableDelayedExpansion
rem берем ссылки из файла urls.txt
For /F "Delims=" %%i In (urls.txt) Do (
Set url=%%i
echo !url!
:curl
rem скачиваем страницу куба
curl.exe -# -k "!url!" > "coub_source" 2>nul
if NOT %errorlevel% == 0 GOTO curl
rem берем код с ссылками
sed.exe --text -n "/abuses/p" "coub_source" >"coub_abuses" 2>nul
rem находим ссылку на mp3
sed.exe --text --text -e "s/.*high....url...(.high.mp3)./\1/" "coub_abuses">"coub_mp3" 2>nul
rem находим ссылку на mp4
sed.exe --text --text -e "s/.*higher....url...(.huge.mp4)./\1/" "coub_abuses">"coub_mp4" 2>nul
rem находим ссылку на url
sed.exe --text --text -e "s/.Simple...permalink...(.)","title.visibility_type./\1/" "coub_abuses">"coub_name" 2>nul
rem строчки из файлов вставляем в переменные
For /F "usebackq tokens=* delims=" %%i In ("coub_mp3") Do Set mp3url=%%i
For /F "usebackq tokens=* delims=" %%i In ("coub_mp4") Do Set mp4url=%%i
For /F "usebackq tokens=* delims=" %%i In ("coub_name") Do Set titleurl=%%i
echo Downloading "!mp3url!" !titleurl!.mp3
curl.exe -# -k "!mp3url!" > "!titleurl!.mp3" 2>nul
echo Downloading "!mp4url!" !titleurl!.mp4
curl.exe -# -k "!mp4url!" > "!titleurl!.mp4" 2>nul
echo Merging video+audio
ffmpeg -stream_loop -1 -i !titleurl!.mp4 -i !titleurl!.mp3 -shortest -map 0:v:0 -map 1:a:0 -y !titleurl!_merged.mp4
rem удаляем временные файлы
del /F /A "coub_source" 2>nul
del /F /A "coub_abuses" 2>nul
del /F /A "coub_mp3" 2>nul
del /F /A "coub_mp4" 2>nul
del /F /A "coub_name" 2>nul
)
pause
exit
Для работы нужны три файла
файл curl.exe скачать тут - https://curl.se/windows/
файл sed.exe из UnxUpdates.zip скачать тут - http://unxutils.sourceforge.net/
файл ffmpeg.exe из ffmpeg-release-essentials.7z скачать тут - https://www.gyan.dev/ffmpeg/builds/
Всё скачиваем, копируем их из архивов и кладём в тот же каталог со скриптом.
Создаем в каталоге со скриптом файл urls.txt со списком адресов (каждая ссылка на отдельной строке)
например:
https://coub.com/view/316jkd
https://coub.com/view/316fme
Запускаем скрипт. Ждём.
Скрипт из файла urls.txt по ссылке скачивает исходник страницы, ищет ссылки и скачивает отдельно музыку и отдельно видео (в максимальном качестве), а потом объединяет их (зацикливает видео пока звучит аудиодорожка).
пардон за код, если не нравится, я не виноват..
Линуксоидам, переделать код на bash думаю никаких трудов не составит...