Skip to content

This the app that let you download YouTube's thumbnail

Notifications You must be signed in to change notification settings

Pat0sya/Golang-Proxy-Youtube

Repository files navigation

YouTube Thumbnail gRPC Proxy Service

Этот проект предоставляет прокси-сервис gRPC для загрузки превью видео YouTube с поддержкой кэширования. По первому запросу он получает превью с YouTube и сохраняет ее в Redis. При повторных запросах одного и того же видео он отображает кэшированную превью, сокращая время отклика и сокращая количество повторных загрузок.

Включен CLI интрумент, позволяющий пользователям получать превью, предоставляя идентификаторы видео YouTube.

Table of Contents


Функции

  • gRPC Прокси Сервис: Скачивает видео с Youtube через систему gRPC.
  • Кэширование: Кэширование в Redis для повторного использования.
  • CLI Клиент: CLI инструмент для загрузки превью по идентификатору видео с поддержкой асинхронной загрузки.

Требования

  • Go 1.18 или выше
  • Redis сервер (хост по умолчанию: localhost:6379)

Установка

  1. Склонируйте репозиторий:

    git clone https://github.com/Pat0sya/Golang-Proxy-Youtube.git
    cd Golang-Proxy-Server
  2. Установите зависимости:

    go mod tidy
  3. Set up Redis: Удостоверьтесь что Redis установлен и работает на хосте localhost:6379. Этот проект использует Redis в качестве временного хранилищa.

Использование

Запуск сервера

Запустите gRPC сервер для обработки запросов:

go run src/server/main.go

Сервер начнет ждать запросов от клиента на хосте localhost:50051.

Использование клиента

CLI инструмент позволит пользователям запрашивать скачивание превью по их ID.

Синтаксис

go run src/client/main.go [--output-dir=<path>] [--async] <video_id_1> <video_id_2> ...
  • <video_id>: Одно или больше ID видео, которые будут скачены.
  • --output-dir: (Опционально) Указание директории, куда будут скачены превью видео.
  • --async: (Опционально) Флаг для скачивания видео асинхронно.

Примеры

  1. Скачивание одного превью:

    go run src/client/main.go  --output-dir=thumbnails dQw4w9WgXcQ
  2. Скачивание нескольких превью асинхронно:

    go run src/client/main.go --output-dir=thumbnails --async dQw4w9WgXcQ RDFxPcwn1Z5uw

Поведение кэша

Если запрошенное превью уже существует в кеше Redis, клиент получит ее из Redis вместо того, чтобы загружать ее снова, что снижает нагрузку на сервер и повышает скорость.

Остановка сервера

Чтобы остановить сервер, используйте Ctrl+C в терминале, где работает сервер.

Конфигурация

По умолчанию сервис работает на хостах:

  • Redis: localhost:6379
  • gRPC Server: localhost:50051

Для модификации, можете изменить internal/client/client.go или src/server/main.go.


Развертка с помощью Docker - WIP

Этот проект легко развернуть с помощью Docker. Используя Docker Compose, вы можете быстро настроить сервер gRPC вместе с экземпляром Redis для кэширования. Чтобы начать, выполните следующие действия.

Требования

  • Docker и Docker Compose установлены на вашей локальной машине.

Шаги развертки

  1. Склонируйте репозиторий:

    git clone https://github.com/Pat0sya/Golang-Proxy-Youtube.git
    cd Golang-Proxy-Server
  2. Старт сервиса:

    Запустите следующую команду в корневом каталоге проекта, чтобы собрать и запустить сервис:

    docker-compose up --build
    • Эта команда создает образ Docker для сервера gRPC и настраивает контейнер Redis.
    • Сервер gRPC будет прослушивать локальный хост: 50051, а Redis будет доступен на локальном хосте: 6379.
  3. Остановка сервиса:

    Для остановки контейнера, используйте:

    docker-compose down

About

This the app that let you download YouTube's thumbnail

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published