Добавить страницу FastAPI Integration в wiki

2026-05-27 14:57:23 +00:00
parent 7b472b7db9
commit d298f3e7d9
+47
@@ -0,0 +1,47 @@
# Интеграция с FastAPI
## Когда использовать
Эта библиотека удобна для API-сервисов, потому что функция `download` возвращает MP4-байты в памяти, а не только путь к файлу.
## Базовый пример
```python
from fastapi import FastAPI, HTTPException
from fastapi.responses import Response
from yt_shorts_downloader import download
from yt_shorts_downloader.exceptions import YtShortsDownloaderError
app = FastAPI()
+@app.get('/download')
+def download_short(url: str) -> Response:
+ try:
+ video = download(url, 'cookies.txt')
+ except YtShortsDownloaderError as exc:
+ raise HTTPException(status_code=400, detail=str(exc)) from exc
+
+ return Response(
+ content=video.content,
+ media_type=video.media_type,
+ headers={
+ 'Content-Disposition': f'attachment; filename="{video.filename}"',
+ },
+ )
```
## Что важно учитывать
- `download` создаёт временную директорию и сам читает итоговый MP4 в память
- для больших видео нужно учитывать объём RAM на воркере
- ошибки библиотеки лучше конвертировать в понятные HTTP-ответы
- cookie-файл должен быть недоступен извне и не должен попадать в репозиторий
## Рекомендации для production
- валидируйте входной URL на уровне API-контракта
- добавьте rate limiting на endpoint скачивания
- логируйте текст `str(exc)` для диагностики ошибок авторизации и yt-dlp
- храните cookie-файл вне публичных директорий и вне docker image layer history, если это возможно