Загрузка данных


from fastapi import FastAPI
import json
import os
from datetime import datetime
import uuid

app = FastAPI()

# Пути к папкам (будут смонтированы через Docker volume)
DOWNLOADS_DIR = "/data/downloads"
TASKS_DIR = "/data/tasks"

@app.get("/")
def health():
    return {"status": "API работает"}

@app.post("/download")
def download_video(url: str, quality: str = "best"):
    """
    Создаёт задачу для воркера
    url: ссылка на видео YouTube
    quality: требуемое качество (720p, 1080p, best и т.д.)
    """
    
    # Проверяем структуру папок
    if not os.path.exists(DOWNLOADS_DIR):
        os.makedirs(DOWNLOADS_DIR)
    if not os.path.exists(TASKS_DIR):
        os.makedirs(TASKS_DIR)
    
    # TODO: здесь будет проверка через info_checker
    # А пока просто создаём task
    
    task_id = str(uuid.uuid4())[:8]
    task = {
        "task_id": task_id,
        "url": url,
        "quality": quality,
        "status": "pending",
        "created_at": datetime.now().isoformat()
    }
    
    # Пишем task в JSON
    task_file = os.path.join(TASKS_DIR, f"{task_id}.json")
    with open(task_file, "w") as f:
        json.dump(task, f, indent=2)
    
    return {"task_id": task_id, "status": "pending"}

@app.get("/task/{task_id}")
def get_task_status(task_id: str):
    """Проверяет статус задачи"""
    task_file = os.path.join(TASKS_DIR, f"{task_id}.json")
    
    if not os.path.exists(task_file):
        return {"error": "Задача не найдена"}
    
    with open(task_file, "r") as f:
        task = json.load(f)
    
    return task

if __name__ == "__main__":
    import uvicorn
    uvicorn.run(app, host="0.0.0.0", port=8000)