Files
ytplayer/README.md

111 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Бэкенд Ютуб
Бэкенд для приложения для стриминга и скачивания видео и плейлистов с YouTube. Построено на **FastAPI** + **yt-dlp** + **FFmpeg**.
---
## Возможности и особенности
- Стриминг видео без предварительной загрузки
- Скачивание видео в формате MP4
- Выбор качества видео (144p — 4K)
- Можно выбрать субтитры (автоматически сгенерированные, если у ролика нет субтитров)
- Поддержка плейлистов: онлайн-просмотр и скачивание в ZIP-архиве
- Универсальный REST API — подключение любого клиента
- Поддержка нескольких пользователей одновременно, кэширование метаданных.
---
## Требования
- Python 3.12+
- FFmpeg
- Git
---
## Установка и запуск на Linux-сервере
### 1. Клонирование репозитория
```bash
git clone https://git.wizardstech.ru/yuriko.pozhilov/YouTube-app.git
cd ytplayer
python3 -m venv venv
source venv/bin/activate
```
### 2. Установка зависимостей
Запустите `install.sh`. Скрипт последовательно:
- устанавливает все Python-зависимости из `requirements.txt`
- устанавливает FFmpeg через apt
- открывает `.env` для заполнения переменных окружения
- запускает uvicorn для проверки работоспособности
- открывает редактор для проверки конфигурации systemd
```bash
bash install.sh
```
> Во время выполнения скрипт дважды откроет текстовый редактор:
> первый раз — для заполнения `.env`
> второй раз — для проверки конфигурации systemd перед регистрацией службы
### 3. Регистрация и запуск системной службы
После завершения `install.sh` скопируйте конфигурацию и запустите службу через `restart.sh`. Скрипт:
- перезагружает конфигурацию systemd
- регистрирует службу для автозапуска при старте системы
- запускает службу
- выводит текущий статус
```bash
sudo cp systemd.ini /etc/systemd/system/ytplayer.service
bash restart.sh
```
---
## Локальный запуск (для разработки и тестирования)
Используйте `start.sh` — скрипт активирует виртуальное окружение и запускает приложение напрямую через Python без systemd:
```bash
bash start.sh
```
Приложение будет доступно по адресу: `http://localhost:5000`
---
## Управление службой на сервере
| Действие | Команда |
|---|---|
| Запустить / перезапустить | `bash restart.sh` |
| Остановить | `sudo systemctl stop ytplayer` |
| Просмотр логов | `journalctl -u ytplayer -f` |
| Статус службы | `sudo systemctl status ytplayer` |
---
## Автообновление yt-dlp
YouTube регулярно меняет API, поэтому yt-dlp нужно обновлять. Добавьте задачу в cron для автоматического обновления каждую ночь:
```bash
crontab -e
# Добавить строку:
0 3 * * * /home/ubuntu/ytplayer/venv/bin/pip install -U yt-dlp
```
---
## API
| Метод | Эндпоинт | Параметры | Описание |
|---|---|---|---|
| GET | `/info` | `url` | Метаданные видео или плейлиста |
| POST | `/validate` | `{url}` | Проверка доступности ссылки |
| GET | `/stream` | `url`, `format_id` | Стриминг видео |
| GET | `/download` | `url`, `format_id` | Скачивание видео (MP4) |
| GET | `/subtitles` | `url`, `lang`, `auto` | Субтитры в формате VTT |
| GET | `/download/progress` | `url` | Прогресс скачивания |
| GET | `/playlist/info` | `url` | Метаданные плейлиста |
| GET | `/playlist/stream` | `url`, `index`, `format_id` | Стриминг видео из плейлиста |
| GET | `/playlist/download` | `url`, `format_id` | Скачивание плейлиста (ZIP) |
| GET | `/playlist/progress` | `url` | Прогресс скачивания плейлиста |
---