studio / publisher /publisher.py
Ava2lon's picture
Upload 115 files
59215bb verified
Raw
History Blame Contribute Delete
1.3 kB
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"]
)
# 1. Metadata
metadata = await asyncio.to_thread(generate_metadata, source)
# 2. Hashtags
hashtags = await asyncio.to_thread(generate_hashtags, metadata)
# 3. Thumbnail
thumbnail = await asyncio.to_thread(generate_thumbnail, source)
# 4. Schedule
schedule_time = schedule_post(payload)
# 5. Publish
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