Данное приложение позволяет скачивать привью видеороликов с видеохостинга Youtube.
Данное приложение использует технологию GRPC для коммуникации клиента и сервера. Для тестирования использовались grpc клиенты - evans, собственный клиент.
В качестве БД для "кэширования" используется postgresql.
- Клоним репозиторий
- Прописываем путь до файла с конфигом в переменную окружения
CONFIG_PATH
- Поднимаем постгрес (например, в докер контейнере)
- Проставляем необходимые переменные в конфиг
- Билдим main.go и запускаем его.
- Профит
git clone https://github.com/denieryd/grpc-youtube-preview-downloader
cd grpc-youtube-preview-downloader
export CONFIG_PATH="configs/config.example.json"
docker run --name thumbnail -e POSTGRES_PASSWORD=pass -p "5432:5432" -d postgres
# here we edit ./configs/config.example.json file
# here we build ./cmd/main.go and run it
go build ./cmd/main.go
./main
Для тестирования нам необходим grpc клиент, я использовал evans. Допустим, вы установили клиент evans, далее протестировать можно следующим образом:
evans ./api/proto/getpreview.proto -p 8080
call GetPreview
# here we input video url to download thumbnail
https://www.youtube.com/watch?v=s-7pyIxz8Qg&ab_channel=MovieclipsClassicTrailers
# here we get response, base64 encoded jpg video preview
{
"image": "/9j/4AAQSkZJRgABAQAAAQABAA....."
}
Был реализован собственный GRPC клиент.
Клиент позволяет указать ссылку на видео и скачать его превью в папку thumbnails_client
.
Он запускается как консольная утилита и позволяет скачать превью видео, указав на него ссылку с ютуба.
Также утилита имеет флаг -async, который позволяет указать несколько урлов и скачать превью параллельно.
go build ./cmd/grpcclient.go
./grpcclient -async true url1 url2 url3 ...
OR
./grpcclient url1
- Нормальные тесты (сделал чисто для вида парочку)
- Завернуть все в докер
- Добавить CI/CD, который запускает тесты, форматирует код, шиппит код на сервер с помощью джобы и т.д.