Загрузить файлы в «/»

This commit is contained in:
2026-03-22 14:04:03 +00:00
parent 0adee75a39
commit 46e8278276

111
README.md Normal file
View 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` | Прогресс скачивания плейлиста |
---