Исправить страницу FastAPI Integration

2026-05-27 14:58:02 +00:00
parent d298f3e7d9
commit 7e4883dcff
+16 -16
@@ -16,20 +16,20 @@ from yt_shorts_downloader.exceptions import YtShortsDownloaderError
app = FastAPI() app = FastAPI()
+@app.get('/download') @app.get('/download')
+def download_short(url: str) -> Response: def download_short(url: str) -> Response:
+ try: try:
+ video = download(url, 'cookies.txt') video = download(url, 'cookies.txt')
+ except YtShortsDownloaderError as exc: except YtShortsDownloaderError as exc:
+ raise HTTPException(status_code=400, detail=str(exc)) from exc raise HTTPException(status_code=400, detail=str(exc)) from exc
+
+ return Response( return Response(
+ content=video.content, content=video.content,
+ media_type=video.media_type, media_type=video.media_type,
+ headers={ headers={
+ 'Content-Disposition': f'attachment; filename="{video.filename}"', 'Content-Disposition': f'attachment; filename="{video.filename}"',
+ }, },
+ ) )
``` ```
## Что важно учитывать ## Что важно учитывать
@@ -43,5 +43,5 @@ app = FastAPI()
- валидируйте входной URL на уровне API-контракта - валидируйте входной URL на уровне API-контракта
- добавьте rate limiting на endpoint скачивания - добавьте rate limiting на endpoint скачивания
- логируйте текст `str(exc)` для диагностики ошибок авторизации и yt-dlp - логируйте `str(exc)` для диагностики ошибок авторизации и yt-dlp
- храните cookie-файл вне публичных директорий и вне docker image layer history, если это возможно - храните cookie-файл вне публичных директорий и вне истории docker image layers, если это возможно