""" 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 metadata (required by registry) 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 # Initialize FactCreator with available clients nvidia_client = None cloudflare_client = None pexels_client = None # Reuse NVIDIA client from story_reels if available 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}") # Reuse Cloudflare client from story_reels if available 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}") # Initialize Pexels client 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}") # Create FactCreator instance creator = FactCreator( config=config, nvidia_client=nvidia_client, cloudflare_client=cloudflare_client, pexels_client=pexels_client ) # Set the global fact_creator in router import modules.fact_image.router as router_module router_module.fact_creator = creator # Register router app.include_router(router) logger.info(f"Fact Image module registered at {MODULE_PREFIX}") return True