| import asyncio |
| import requests |
|
|
| from .metadata_engine import generate_metadata |
| from .hashtags import generate_hashtags |
| from .thumbnail import generate_thumbnail |
| from .scheduler_engine import schedule_post |
| from .router import publish_all |
|
|
|
|
| async def run_publisher(payload: dict): |
|
|
| source = payload["source"] |
| webhook = payload.get("webhook") |
| platforms = payload.get( |
| "platforms", |
| ["tiktok", "reels", "shorts", "facebook"] |
| ) |
|
|
| |
| metadata = await asyncio.to_thread(generate_metadata, source) |
|
|
| |
| hashtags = await asyncio.to_thread(generate_hashtags, metadata) |
|
|
| |
| thumbnail = await asyncio.to_thread(generate_thumbnail, source) |
|
|
| |
| schedule_time = schedule_post(payload) |
|
|
| |
| results = await publish_all( |
| source=source, |
| platforms=platforms, |
| metadata=metadata, |
| hashtags=hashtags, |
| thumbnail=thumbnail, |
| schedule_time=schedule_time, |
| ) |
|
|
| response = { |
| "status": "completed", |
| "metadata": metadata, |
| "hashtags": hashtags, |
| "thumbnail": thumbnail, |
| "results": results, |
| } |
|
|
| if webhook: |
| await asyncio.to_thread(requests.post, webhook, json=response, timeout=10) |
|
|
| return response |
|
|