Загрузить файлы в «/»
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