Назад к блогу

uci — одна команда, которая скачивает всё

uci — одна команда, которая скачивает всё

Сколько инструментов нужно, чтобы сохранить что-то из интернета? yt-dlp для видео, wget для файлов, gallery-dl для альбомов, «сохранить как» для статей — и у каждого свой синтаксис, свои ключи и своё место в закладках. Мы собрали всё это в один маленький бинарь: uci (Universal Content Intake). Даёте ему ссылку — он сам понимает, что на той стороне, и скачивает.

Как это выглядит

uci https://youtube.com/watch?v=...     # видео в 1080p
uci https://example.com/report.pdf      # документ
uci https://instagram.com/p/...         # галерея картинок
uci https://habr.com/ru/articles/...    # статья в чистом Markdown

Тип определяется автоматически: известные видеоплатформы (YouTube, TikTok, VK, Vimeo, Rutube и другие), расширение файла в URL, ссылки на Google Drive, а для всего остального — пробинг ответа сервера по Content-Type. HTML-страница превращается в статью через readability и сохраняется в Markdown. Тип можно задать и принудительно: --type video|document|image|images|article|webpage.

Результат складывается в папку загрузок (на Linux находится и локализованная «Загрузки»), а рядом с файлом кладётся короткий *.info.md — источник, автор, исходная ссылка. Через месяц не придётся гадать, откуда взялся этот PDF.

Установка за две команды

# 1. скачать бинарь под свою ОС:
#    https://github.com/sarnas-it/uci/releases
# 2. поставить движки:
uci doctor --yes

doctor — наша любимая часть. Он проверяет окружение и сам скачивает и ставит всё, что нужно для полной мощности: yt-dlp, ffmpeg, deno, gallery-dl — без sudo, прямо в ~/.local/bin. Если чего-то поставить не может (например, нет pip или npm), честно говорит об этом и показывает ручную команду, а не падает молча. Без ffmpeg видео всё равно скачивается — просто одиночным форматом, без склейки дорожек.

Что ещё умеет

  • --quality 720p|1080p|4k|highest — качество видео; маленький исходник не апскейлится;
  • --to ~/docs — куда сохранять;
  • альбомы и галереи картинок — через gallery-dl;
  • снимки страниц целиком — через SingleFile и Chrome;
  • флаги можно писать и после ссылки: uci <ссылка> --to ~/docs.

Технически

uci — самостоятельная реализация на Go, вдохновлённая проектом YIAN6557/universal-content-intake. Мы переписали ядро-загрузчик на Go, сделали его по-настоящему кроссплатформенным (Linux, macOS и Windows — один статический бинарь, без Python и Docker) и научили ставить свои же зависимости. Автомониторинг авторов, субтитры и облачная часть оригинала не портированы — это чистый загрузчик.

Код открытый: github.com/sarnas-it/uci. Issues и пул-реквесты приветствуются.

Похожее