tubedrop — drop ссылку, получи файл
Приложение для macOS в два клика: ссылка на YouTube → чистый файл на Mac. Локальный веб-UI поверх yt-dlp, честная HD-разлочка без сомнительных сайтов-конвертеров. Open source, MIT.
- Python
- yt-dlp
- ffmpeg
- macOS
- Claude Code
- Open Source
tubedrop: личная боль, закрытая за вечер
Мне просто нужно было сохранить видео с YouTube. Любой конвертер-сайт встречал одинаково: попапы, редиректы, фейковые кнопки «Download», 360p в потолок, и в половине случаев в итоге ничего.
Поэтому я собрал себе маленькое приложение под macOS. Вставил ссылку, выбрал качество, нажал download. Файл оказывается на твоём Mac. Без сайта, без аккаунта, без рекламы.
Открыть на GitHub
Проблема
Скачать видео с YouTube должно быть тривиально. На практике открытый веб делает это мучительным намеренно:
- Сайты-конвертеры — это adware-ловушки. Каждый «бесплатный YouTube downloader» — это лабиринт из фейковых кнопок и редиректов, спроектированный так, чтобы ты кликнул на что угодно, кроме самого файла.
- Они режут качество. Анонимные веб-тулы регулярно упираются в 360p, потому что форматы получше YouTube отдаёт только залогиненным клиентам.
- Хорошие инструменты — только из терминала.
yt-dlp+ffmpeg— золотой стандарт, и он бесплатный, но это командная строка с флагами. Такое не отдашь другу, которому просто нужно видео.
kaifcodec/ytconverter уже сделал сложную часть: аккуратно склеил yt-dlp и ffmpeg. Но это всё ещё CLI с промптами. tubedrop — недостающий слой сверху: UI, чтобы было два клика вместо десяти нажатий, и штука, которой я не стесняюсь поделиться с не-программистом.
Что он делает
Весь продукт — это одно локальное окно, без дашборда и лабиринта настроек. Открываешь, и сценарий очевиден:
- Вставил ссылку, получил превью. Бросаешь URL (или просто перетаскиваешь его в любое место окна), и tubedrop подтягивает название, канал, длительность и обложку: видно, что схватил именно то.
- Выбираешь ровно то качество, что нужно. Настоящая лесенка форматов, от
bestи ниже до 4K / 1440p / 1080p / 720p, с живой оценкой размера рядом, чтобы не гадать, во сколько мегабайт обойдётся загрузка. - Видео или аудио. Один тумблер переключает MP4-видео в MP3-рип, удобно для подкастов и музыки.
- Куда сохранять, выбираешь сам. Чипы быстрого выбора:
Downloads,Desktop,Movies,Musicили отдельная папкаtubedrop, плюс нативный пикер папок. - Субтитры в один тап. Опциональный
.srtна всех доступных языках.
Приложение работает как локальный сервер на твоей же машине. Файлы никогда не покидают Mac, и между тобой и видео нет третьей стороны.
Честная HD-разлочка
Единственная по-настоящему хитрая часть скачивания с YouTube: иногда он прячет всё выше 360p от анонимных тулов. Честное решение — прочитать YouTube-куки браузера, в котором ты уже залогинен; это поднимает потолок до 720p / 1080p / 4K.
Загвоздка в том, что «пусть приложение прочитает куки твоего браузера» — это ровно та фраза, от которой должно становиться подозрительно. Поэтому tubedrop прямо проговаривает, что он делает и чего не делает:
- Куки читает локально
yt-dlp. Они никогда не покидают Mac. - Обращается только к
youtube.com. Куки не видит ни один другой сайт. - Это разово и обратимо. Твой выбор — одна строчка в
.tubedrop.config; чипhd · safariв шапке отключает его в любой момент.
Пет-проект всё равно зарабатывает или теряет доверие на таких деталях. Лучше я переобъясню единственную пугающе звучащую фичу, чем выкачу её молча.
Установка: реально два клика
Вторая половина «делюсь с не-программистом» — это установка. Без Homebrew, без sudo, без хирургии над глобальным Python.
- Скачал zip, распаковал куда угодно.
- Дважды кликнул
install.command.
Примерно за 30 секунд установщик:
- использует системный Python, если он 3.10+, иначе скачивает self-contained Python 3.12 (~30 МБ), и ад с версиями просто не наступает;
- кладёт статический бинарь
ffmpegв папку проекта; - ставит
yt-dlpв локальное виртуальное окружение; - добавляет ярлык
Tubedropна рабочий стол.
Всё остаётся внутри папки. Удаление — это rm -rf: стёр папку, и его нет, без хвостов. Кнопка Quit в углу окна гасит локальный сервер чисто, так что зомби-процессов на портах не остаётся.
Как я это собрал
Это был vibe-coding с Claude Code: я описывал, что хочу, а потом гонял итерации по UI, установщику и cookie-флоу. Сам код не претендует на инженерный шедевр, он претендует на полезность. Интересная работа была в продуктовых решениях: где быть мнением (одно окно, очевидный сценарий), где быть громким (сделка с HD-разлочкой) и как сделать установку достаточно скучной, чтобы её осилил кто угодно.
Два принципа, которых держался:
- Отдаю кредит ядру.
yt-dlp,ffmpegи особенно kaifcodec/ytconverter делают тяжёлую работу; в README это сказано прямо. Я оборачиваю хорошие инструменты в лучший UX, а не переклеиваю чужую работу на себя. - Закрываю собственные боли быстро и в открытую. Когда натыкаюсь на хороший CLI без UX-обвязки, оборачиваю его так, чтобы пользоваться мог не только я, и выкладываю результат в open source.
Лицензия MIT, полный исходник лежит на GitHub. Бери, форкай, шли PR.
Для личного использования. Уважайте условия использования YouTube.