https://github.com/Pat0sya/Thumbnail_downloader
This the app that let you download YouTube's thumbnail
https://github.com/Pat0sya/Thumbnail_downloader
grpc grpc-go http protobuf redis youtube-thumbnail-downloader
Last synced: 9 months ago
JSON representation
This the app that let you download YouTube's thumbnail
- Host: GitHub
- URL: https://github.com/Pat0sya/Thumbnail_downloader
- Owner: Pat0sya
- Created: 2024-11-02T17:35:38.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-11-28T21:30:00.000Z (over 1 year ago)
- Last Synced: 2025-03-25T14:14:12.194Z (over 1 year ago)
- Topics: grpc, grpc-go, http, protobuf, redis, youtube-thumbnail-downloader
- Language: Go
- Homepage:
- Size: 70.3 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
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. **Склонируйте репозиторий**:
```bash
git clone https://github.com/Pat0sya/Golang-Proxy-Youtube.git
cd Golang-Proxy-Server
```
2. **Установите зависимости**:
```bash
go mod tidy
```
3. **Set up Redis**:
Удостоверьтесь что Redis установлен и работает на хосте `localhost:6379`. Этот проект использует Redis в качестве временного хранилищa.
## Использование
### Запуск сервера
Запустите gRPC сервер для обработки запросов:
```bash
go run src/server/main.go
```
Сервер начнет ждать запросов от клиента на хосте `localhost:50051`.
### Использование клиента
CLI инструмент позволит пользователям запрашивать скачивание превью по их ID.
#### Синтаксис
```bash
go run src/client/main.go [--output-dir=] [--async] ...
```
- **``**: Одно или больше ID видео, которые будут скачены.
- **`--output-dir`**: _(Опционально)_ Указание директории, куда будут скачены превью видео.
- **`--async`**: _(Опционально)_ Флаг для скачивания видео асинхронно.
#### Примеры
1. **Скачивание одного превью**:
```bash
go run src/client/main.go --output-dir=thumbnails dQw4w9WgXcQ
```
2. **Скачивание нескольких превью асинхронно**:
```bash
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. **Склонируйте репозиторий**:
```bash
git clone https://github.com/Pat0sya/Golang-Proxy-Youtube.git
cd Golang-Proxy-Server
```
2. **Старт сервиса**:
Запустите следующую команду в корневом каталоге проекта, чтобы собрать и запустить сервис:
```bash
docker-compose up --build
```
- Эта команда создает образ Docker для сервера gRPC и настраивает контейнер Redis.
- Сервер gRPC будет прослушивать локальный хост: `50051`, а Redis будет доступен на локальном хосте: `6379`.
3. **Остановка сервиса**:
Для остановки контейнера, используйте:
```bash
docker-compose down
```