| 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 |
|
|
|
|
| |
|
|
| 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() |