Update app.py
Browse files
app.py
CHANGED
@@ -36,9 +36,14 @@ app.add_middleware(
|
|
36 |
driver_pool = []
|
37 |
executor = ThreadPoolExecutor(max_workers=2)
|
38 |
|
39 |
-
class
|
40 |
url: str
|
41 |
-
|
|
|
|
|
|
|
|
|
|
|
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 |
-
|
280 |
-
|
281 |
-
|
282 |
-
|
283 |
-
|
284 |
-
|
285 |
-
|
286 |
-
|
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
|