Загрузить файлы в «/»
This commit is contained in:
111
README.md
Normal file
111
README.md
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
# Бэкенд Ютуб
|
||||||
|
|
||||||
|
Бэкенд для приложения для стриминга и скачивания видео и плейлистов с 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` | Прогресс скачивания плейлиста |
|
||||||
|
|
||||||
|
---
|
||||||
Reference in New Issue
Block a user