TASK:lookbook上传

This commit is contained in:
shahaibo
2024-10-21 16:57:57 +08:00
parent fdaf6a72f3
commit 7f9caf9d0e
2 changed files with 93 additions and 39 deletions

View File

@@ -4,52 +4,31 @@ import shutil
from typing import List
import tqdm
from fastapi import UploadFile, File, APIRouter
from app.service.lookbooks.service import create_image_batch_requests
from fastapi import UploadFile, File, APIRouter, BackgroundTasks
from app.service.lookbooks.service import create_image_batch_requests, process_lookbook_task # 引入服务逻辑
logger = logging.getLogger()
router = APIRouter()
@router.post("/process_lookbooks/")
async def process_lookbooks(files: List[UploadFile] = File(...)):
@router.post("/process-lookbooks/")
async def process_lookbooks(
background_tasks: BackgroundTasks,
files: List[UploadFile] = File(...),
tag: str = Form(...),
year: str = Form(...)
):
lookbook_dir = "service/lookbooks/temp_lookbooks"
os.makedirs(lookbook_dir, exist_ok=True)
lookbook_list = []
for file in files:
file_path = os.path.join(lookbook_dir, file.filename)
with open(file_path, "wb") as f:
shutil.copyfileobj(file.file, f)
async with aiofiles.open(file_path, "wb") as f:
await f.write(await file.read())
lookbook_list.append(file_path)
image_list = []
for look_book_path in tqdm.tqdm(lookbook_list):
lookbook_name = os.path.splitext(os.path.basename(look_book_path))[0]
output_dir = os.path.join("app/service/lookbooks/fashion_documents/lookbook/images", lookbook_name)
os.makedirs(output_dir, exist_ok=True)
if not os.listdir(output_dir):
from unstructured.partition.pdf import partition_pdf
partition_pdf(
filename=look_book_path,
extract_images_in_pdf=True,
infer_table_structure=False,
chunking_strategy="by_title",
max_characters=4000,
new_after_n_chars=3800,
combine_text_under_n_chars=2000,
extract_image_block_output_dir=output_dir,
)
else:
current_images = os.listdir(output_dir)
image_list.extend([os.path.join(output_dir, x) for x in current_images])
# 将任务放入后台异步执行
background_tasks.add_task(process_lookbook_task, lookbook_list, tag, year)
image_description_results_file = create_image_batch_requests(image_list, "app/service/lookbooks/fashion_documents/lookbook/results")
shutil.rmtree(lookbook_dir)
if image_description_results_file:
return {"message": "Lookbooks processed successfully", "result_file": image_description_results_file}
else:
return {"message": "No new images to process"}
return {"message": "Lookbooks are being processed in the background."}