studio / publisher /platform_dispatcher.py
Ava2lon's picture
Upload 170 files
345855e verified
Raw
History Blame Contribute Delete
1.49 kB
from importlib import import_module
import logging
logger = logging.getLogger("platform-dispatcher")
def _safe_import(module_path, fn_name):
try:
module = import_module(module_path)
return getattr(module, fn_name)
except Exception as e:
logger.warning(f"[Dispatcher] Missing {module_path}: {str(e)}")
return None
# lazy-loaded publishers (prevents boot crash)
def dispatch_publish(video_path=None, payload=None, variants=None):
payload = payload or {}
results = {}
youtube = _safe_import("publisher.platforms.youtube", "publish_youtube")
tiktok = _safe_import("publisher.platforms.tiktok", "publish_tiktok")
reels = _safe_import("publisher.platforms.reels", "publish_reels")
shorts = _safe_import("publisher.platforms.shorts", "publish_shorts")
facebook = _safe_import("publisher.platforms.facebook", "publish_facebook")
async def run():
if youtube:
results["youtube"] = await youtube({"video_path": video_path, **payload})
if tiktok:
results["tiktok"] = await tiktok({"video_path": video_path, **payload})
if reels:
results["reels"] = await reels({"video_path": video_path, **payload})
if shorts:
results["shorts"] = await shorts({"video_path": video_path, **payload})
if facebook:
results["facebook"] = await facebook({"video_path": video_path, **payload})
return results
return run()