Утром зашёл на coub.com и увидел баннер с печальной новостью :
Проект Сoub закрывается 1 апреля 2022 года. Успейте скачать свои видео.
Не успев продрать глаза, быстренько написал скрипт для скачивания всех моих кубов разом..
Скрипт из файла urls.txt по ссылке скачивает исходник страницы, ищет ссылки и скачивает отдельно музыку и отдельно видео (в максимальном качестве), а потом объединяет их (зацикливает видео, пока звучит аудиодорожка).
Создаём файл download_coubs.bat и копируем в него код:
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
Для работы нужны три файла:
файл sed.exe из UnxUpdates.zip скачать тут
файл ffmpeg.exe из
ffmpeg-release-essentials.7z
скачать тут
Всё скачиваем, копируем их из архивов и кладём в тот же каталог со скриптом.
Создаем в каталоге со скриптом файл urls.txt со списком адресов (каждая ссылка на отдельной строке)
например:
https://coub.com/view/316jkd
https://coub.com/view/316fme
Запускаем скрипт. Ждём.
Скрипт из файла urls.txt по ссылке скачивает исходник страницы, ищет ссылки и скачивает отдельно музыку и отдельно видео (в максимальном качестве), а потом объединяет их (зацикливает видео, пока звучит аудиодорожка).
Пардон за код, если не нравится, я не виноват.
Линуксоидам переделать код на bash думаю никаких трудов не составит...
Комментарии (17)
vvovas
21.03.2022 11:51Глупый вопрос, наверное, но я не силен в скриптах: обработка ошибок есть какая-то?
Я пока свои кубы скачивал, натыкался и на отсутствие куба как такового и на отсутствие аудиодорожки (вырезана из-за dmca)
P.S. сегодня, кстати, плашки про закрытие сервиса у меня почему-то нет.
klevunin
21.03.2022 11:56+2Жалко. Честно говоря проект с коротким видео роликами на которых красивая нарезка и музыка намного приятней смотреть чем кривлянья всяких блогеров. Отдали бы проект в Open source. Может кто-то и поднял был. Разработчики вроде его продали год или два назад. Видимо не в те руки продали.
akakoychenko
21.03.2022 12:09Походу, отдать в опенсорс не так просто, как кажется. Если проект финансировали по остаточному принципу и не видели в нем будущего, то, скорее всего, там тысячи заплаток без документации и невоспроизводимая конфигурация, то бишь, оно как-то работает, но, банально, развернуть копию на другом хостинге уже вызов. В таком случае и выкладывать особо нечего.
DWM
22.03.2022 18:19Сейчас reCoub энтузиастами создается, есть Discord и Telegram с новостями по проекту. Планируют открыться с 22 до 24 марта.
Насколько я знаю, у coub-а были проблемы с окупаемостью, но это не точно.
FluD
21.03.2022 12:16Нуже хабр, запилите аналог!
всегда использовал кубы как поиск для музыки и поднятие настроение
anteo
21.03.2022 12:35reCoub team (@recoubteam) уже занимаются созданием клона (recoub.com) Можно подписаться на их канал в телеграме.
Я не отношусь к этой команде, просто надеюсь у них всё получится, и coub мы не потеряем насовсем
Sanctuary_s
21.03.2022 12:27Писал для себя. Можно подправить под Coub'ы: https://github.com/farag2/Utilities/blob/master/youtubedl.ps1
andreymal
21.03.2022 14:38Зацикливание выполняет транскодирование и тем самым убивает качество. Я считаю, что правильнее скачивать отдельные mp3 и mp4 без зацикливания, а зацикливать уже на уровне плеера (попытаться написать свой html5-плеер или типа того)
Pompei
21.03.2022 17:28Первое апреля... ничего не напоминает?
DWM
22.03.2022 18:25На ютубе один человек в комментариях также обратил на это внимание.
Я могу ошибаться, но вроде шутки про первое апреля шутят 1-го апреля, а не заранее.
А может быть разрабы coub-а пытаются привлечь внимание к проекту, и он поменяется сам. По идее, нужны прямые руки и аудитория у проекта, чтобы его обновить. И бизнес-идея.
Maxim_Q
21.03.2022 19:16Вот есть скрипт на питоне для скачки целых каналов:
https://github.com/HelpSeeker/CoubDownloader/
Стабильно работает только консольная версия coub.py, версия с графическим интерфейсом немного глючная и не скачивает некоторые кубы если указать в имени файла %title%.
вот пример полной коммандной строки для скачки канала с имненем chanel_name. Папка download_folder должна быть в текущей директории.
python.exe coub.py -c chanel_name --bestvideo --max-video high -p .\download_folder -o "%title% %id%"
Demixoid
21.03.2022 20:18У меня скрипт не заработал. Может, я что не так сделал при копировании, но поехали некоторые переносы плюс смутила куча лишних штук (типа > nul и лишних кавычек), без которых как будто бы все работает. Пришлось изменить регулярки, некоторые пути и параметры вызовов. Заодно освоил sed, как-то он мне раньше не попадался, буду как batch-regexp процессор использовать:).
Выкладываю свою подчищеную версию, которая в итоге успешно мне всё скачала. Я тоже не слишком-то ее вылизывал- просто привел в рабочее состояние.
Особенности:
Итоговые коубы выкладываются в подпапку Coubs.
Имя коуба равно его короткому id. Не в курсе, как было изначально, но посчитал, что уж в ID не будет всяких символов, которые неприемлемы в имени файла. При необходимости можно спарсить что-то другое из кода страницы.
После генерации коуба удаляются не только временные текстовики без расширения, но и mp3-mp4, из которых складывается merged.
В папке скрипта я расположил curl.exe, sed.exe, curl-ca-bundle.crt, ffmpeg.exe. Создал папку Coubs (на всякий), urls.txt со ссылками и, собственно, bat с этим скриптом.
Проц эти пироги грузят плотнячком, так что если ссылок много- идите чай пить:).
Рад, если кому-то этот вариант поможет. И спасибо автору за оригинальную затравку:).
chcp 65001 echo %~dp0 mkdir Coubs off cls SetLocal EnableExtensions EnableDelayedExpansion rem берем ссылки из файла urls.txt For /F "usebackq tokens=* delims=" %%i In ("urls.txt") Do ( Set url=%%i :curl rem скачиваем страницу куба curl !url! > coub_source if NOT %errorlevel% == 0 GOTO curl rem берем код с ссылками sed --text -n "/abuses/p" "coub_source" > coub_abuses rem находим ссылку на mp3 sed --text -r -e "s/.*audio.*url...(.*?high.mp3).*/\1/" coub_abuses > coub_mp3 rem находим ссылку на mp4 sed --text -r -e "s/.*higher....url...(.*?huge.mp4).*/\1/" coub_abuses > coub_mp4 rem находим ссылку на url sed --text -r -e "s/.*Simple...permalink...(......).*/\1/" coub_abuses > coub_name 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 !mp3url! > !titleurl!.mp3 echo Downloading "!mp4url!" !titleurl!.mp4 curl !mp4url! > !titleurl!.mp4 echo Merging video+audio ffmpeg -stream_loop -1 -i !titleurl!.mp4 -i !titleurl!.mp3 -shortest -map 0:v:0 -map 1:a:0 -y %~dp0\Coubs\!titleurl!_merged.mp4 rem удаляем временные файлы del /F /A coub_source del /F /A coub_abuses del /F /A coub_mp3 del /F /A coub_mp4 del /F /A coub_name del /F /A !titleurl!.mp4 del /F /A !titleurl!.mp3 ) pause
S-trace
23.03.2022 00:17У меня этой плашки о закрытии сейчас не видно (хотя раньше я её видел), да и на джое проскакивала информация о том, что вроде как (по непроверенной информации) нашёлся покупатель, и сервис продлжит жить.
Конечно, стОит забэкапить любимые коубы, но есть надежда что сервис продолжит жить, а не породит кучу трупоссылок по всем интернетам.
qark
Чуть проще будет с yt-dlp. Он и ссылки на mp3/mp4 найдёт, и смёржит, и мусор уберёт.
PS ffmpeg всё равно нужен для объединения, только вызывается автоматически.