Chrunos commited on
Commit
3a0aed9
·
verified ·
1 Parent(s): 4cb6890

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -11
app.py CHANGED
@@ -36,9 +36,14 @@ app.add_middleware(
36
  driver_pool = []
37
  executor = ThreadPoolExecutor(max_workers=2)
38
 
39
- class ThreadsResponse(BaseModel):
40
  url: str
41
- media_urls: List[str]
 
 
 
 
 
42
  media_count: int
43
  post_text: Optional[str] = None
44
  author: Optional[str] = None
@@ -276,15 +281,24 @@ async def extract_media(url: str = Query(..., description="Threads post URL")):
276
  loop = asyncio.get_event_loop()
277
  extracted_data = await loop.run_in_executor(executor, extract_media_sync, url)
278
 
279
- return ThreadsResponse(
280
- url=url,
281
- media_urls=extracted_data["media_urls"],
282
- media_count=len(extracted_data["media_urls"]),
283
- post_text=extracted_data["post_text"],
284
- author=extracted_data["author"],
285
- success=True,
286
- processing_time=extracted_data.get("processing_time")
287
- )
 
 
 
 
 
 
 
 
 
288
 
289
  except HTTPException:
290
  raise
 
36
  driver_pool = []
37
  executor = ThreadPoolExecutor(max_workers=2)
38
 
39
+ class MediaItem(BaseModel):
40
  url: str
41
+
42
+ class ThreadsResponse(BaseModel):
43
+ post_url: str
44
+ media_urls: Optional[List[str]] = None
45
+ url: Optional[str] = None
46
+ picker: Optional[List[MediaItem]] = None
47
  media_count: int
48
  post_text: Optional[str] = None
49
  author: Optional[str] = None
 
281
  loop = asyncio.get_event_loop()
282
  extracted_data = await loop.run_in_executor(executor, extract_media_sync, url)
283
 
284
+ media_urls = extracted_data["media_urls"]
285
+ media_count = len(media_urls)
286
+
287
+ response_data = {
288
+ "post_url": url,
289
+ "media_count": media_count,
290
+ "post_text": extracted_data["post_text"],
291
+ "author": extracted_data["author"],
292
+ "success": True,
293
+ "processing_time": extracted_data.get("processing_time")
294
+ }
295
+
296
+ if media_count == 1:
297
+ response_data["url"] = media_urls[0]
298
+ else:
299
+ response_data["picker"] = [{"url": url} for url in media_urls]
300
+
301
+ return ThreadsResponse(**response_data)
302
 
303
  except HTTPException:
304
  raise