| """ |
| Fact Image Module |
| Generate short videos with fact text overlay on AI-generated images |
| """ |
| import logging |
| from fastapi import FastAPI |
|
|
| logger = logging.getLogger(__name__) |
|
|
| |
| MODULE_NAME = "fact_image" |
| MODULE_PREFIX = "/api/fact-image" |
| MODULE_DESCRIPTION = "Generate fact videos with text overlay on AI-generated images" |
|
|
|
|
| def register(app: FastAPI, config): |
| """ |
| Register the Fact Image module. |
| Called by ModuleRegistry.register_all() |
| """ |
| from .router import router, fact_creator as router_fact_creator |
| from .services.fact_creator import FactCreator |
| |
| |
| nvidia_client = None |
| cloudflare_client = None |
| pexels_client = None |
| |
| |
| try: |
| from modules.story_reels.services.nvidia_client import NvidiaClient |
| import os |
| nvidia_key = os.getenv("NVIDIA_API_KEY") |
| if nvidia_key: |
| nvidia_client = NvidiaClient(nvidia_key) |
| logger.info("Fact Image: NVIDIA client initialized") |
| except Exception as e: |
| logger.debug(f"NVIDIA client not available: {e}") |
| |
| |
| try: |
| from modules.story_reels.services.cloudflare_client import CloudflareClient |
| import os |
| cf_account = os.getenv("CLOUDFLARE_ACCOUNT_ID") |
| cf_token = os.getenv("CLOUDFLARE_API_TOKEN") |
| if cf_account and cf_token: |
| cloudflare_client = CloudflareClient(cf_account, cf_token) |
| logger.info("Fact Image: Cloudflare client initialized") |
| except Exception as e: |
| logger.debug(f"Cloudflare client not available: {e}") |
| |
| |
| try: |
| from modules.video_creator.services.libraries.pexels_client import PexelsClient |
| import os |
| pexels_key = os.getenv("PEXELS_API_KEY") |
| if pexels_key: |
| pexels_client = PexelsClient(pexels_key) |
| logger.info("Fact Image: Pexels client initialized") |
| except Exception as e: |
| logger.debug(f"Pexels client not available: {e}") |
| |
| |
| creator = FactCreator( |
| config=config, |
| nvidia_client=nvidia_client, |
| cloudflare_client=cloudflare_client, |
| pexels_client=pexels_client |
| ) |
| |
| |
| import modules.fact_image.router as router_module |
| router_module.fact_creator = creator |
| |
| |
| app.include_router(router) |
| |
| logger.info(f"Fact Image module registered at {MODULE_PREFIX}") |
| return True |
|
|