Avatar r50 a6ce93fe35b158fd29ba0e8681c918c22117160e9586a56eee4ffbc20df9bda1
Бэкенд golang, python разработ

gRPC сервис для скачивания превью с Youtube/Rutube

Добавлено 14 дек 2024 в 06:06
Создал сервис для загрузки превью видео с поддержкой CLI и сервера на gRPC. Основной функционал: скачивание превью с видеохостингов, управление директориями сохранения и асинхронная загрузка для повышения производительности.

Технологический стек:
  • Язык: Go 1.23.
  • Хранилище: Redis.
  • CLI: Cobra.
  • Контейнеризация: Docker.
Основные функции:
  1. gRPC-сервер:
    • Обрабатывает запросы на загрузку превью.
    • Использует Redis для кеширования частых запросов.
    • Возможность запуска сервера через Docker с помощью команды make start-server.
  2. CLI-утилита:
    • Поддерживает интерактивный режим и команды для скачивания, изменения директории вывода и получения справки.
    • Команда get [URLs...] загружает превью с переданных ссылок, поддерживая флаг --async для асинхронной загрузки.
    • Команда output [outputDirectory] меняет папку сохранения; путь можно указать через конфиг (./config/cli/local.yaml).
    • Предусмотрена защита от блокирующих ошибок, например, при недоступности YouTube.
Пример использования: Особенности:
  • Реализована базовая обработка ошибок. Например, если первая ссылка — YouTube, сервер прекратит обработку, но флаг --async позволяет избежать этого, загружая доступные видео.
  • Хранение превью по умолчанию: ./downloads.
  • Возможность настройки через YAML-конфиг.
Тестирование: Написаны юнит-тесты для ключевых компонентов: загрузчика файлов и извлечения ID из URL. Запуск тестов: make unit-test
9bfb5c7b98