This commit is contained in:
Hossein 2025-08-07 02:57:10 +03:30
parent 4583e08ca5
commit 48b28e8ff9

View File

@ -3,7 +3,7 @@ from sqlalchemy.orm import Session
from database import InstagramAccount, InstagramPost from database import InstagramAccount, InstagramPost
from utils.instagram_client import get_logged_in_client from utils.instagram_client import get_logged_in_client
from utils.s3_uploader import upload_media_from_url from utils.s3_uploader import upload_media_from_url
from schemas import ScrapeRequest, ScrapedPost, MediaItem from schemas import ScrapeRequest, ScrapedPost
from typing import List from typing import List
from datetime import datetime from datetime import datetime
@ -43,7 +43,7 @@ def scrape_and_store(db: Session, req: ScrapeRequest) -> List[ScrapedPost]:
media_items = [] media_items = []
try: try:
# Carousel # Handle carousel
if post.media_type == 8 and hasattr(post, "resources"): if post.media_type == 8 and hasattr(post, "resources"):
for res in post.resources: for res in post.resources:
media_url = res.video_url if res.media_type == 2 else res.thumbnail_url media_url = res.video_url if res.media_type == 2 else res.thumbnail_url
@ -52,11 +52,10 @@ def scrape_and_store(db: Session, req: ScrapeRequest) -> List[ScrapedPost]:
try: try:
local_url = upload_media_from_url(media_url, str(req.seller_id), f"{post_id}/") local_url = upload_media_from_url(media_url, str(req.seller_id), f"{post_id}/")
if local_url: if local_url:
media_items.append(MediaItem( media_items.append({
media_type="video" if res.media_type == 2 else "image", "media_type": "video" if res.media_type == 2 else "image",
media_url=media_url, "url": local_url
local_media=local_url })
))
except Exception as e: except Exception as e:
print(f"⚠️ Error uploading media: {e}") print(f"⚠️ Error uploading media: {e}")
continue continue
@ -67,11 +66,10 @@ def scrape_and_store(db: Session, req: ScrapeRequest) -> List[ScrapedPost]:
try: try:
local_url = upload_media_from_url(media_url, str(req.seller_id), f"{post_id}/") local_url = upload_media_from_url(media_url, str(req.seller_id), f"{post_id}/")
if local_url: if local_url:
media_items.append(MediaItem( media_items.append({
media_type="video" if post.media_type == 2 else "image", "media_type": "video" if post.media_type == 2 else "image",
media_url=media_url, "url": local_url
local_media=local_url })
))
except Exception as e: except Exception as e:
print(f"⚠️ Error uploading media: {e}") print(f"⚠️ Error uploading media: {e}")
continue continue
@ -103,7 +101,7 @@ def scrape_and_store(db: Session, req: ScrapeRequest) -> List[ScrapedPost]:
media_type="carousel" if post.media_type == 8 else ("video" if post.media_type == 2 else "image"), media_type="carousel" if post.media_type == 8 else ("video" if post.media_type == 2 else "image"),
caption=post.caption_text or "", caption=post.caption_text or "",
thumbnail_url=final_thumbnail, thumbnail_url=final_thumbnail,
local_media=[m.dict() for m in media_items], local_media=media_items,
created_at=post.taken_at or datetime.utcnow(), created_at=post.taken_at or datetime.utcnow(),
) )
db.add(post_entry) db.add(post_entry)