File size: 2,671 Bytes
9834af3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2f5a914
9834af3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
"""
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