import logging import os import sys import gradio as gr from gradio.processing_utils import PUBLIC_HOSTNAME_WHITELIST PUBLIC_HOSTNAME_WHITELIST.append("aigame-skyreels.oss-accelerate.aliyuncs.com") PUBLIC_HOSTNAME_WHITELIST.append("aigame-skyreels.oss-cn-shanghai.aliyuncs.com") PUBLIC_HOSTNAME_WHITELIST.append("skyreels-infer-dev.oss-cn-shenzhen.aliyuncs.com") def _setup_logging() -> None: """Configure logging to output to console with detailed format.""" log_format = "%(asctime)s | %(levelname)-8s | %(name)s:%(lineno)d | %(message)s" logging.basicConfig( level=logging.INFO, format=log_format, datefmt="%Y-%m-%d %H:%M:%S", handlers=[logging.StreamHandler()], ) # Initialize logging at module load _setup_logging() def _ensure_import_paths() -> None: # Make sure the current directory is on sys.path so `pages` can be imported current_dir = os.path.dirname(os.path.abspath(__file__)) if current_dir not in sys.path: sys.path.append(current_dir) def create_app() -> gr.Blocks: _ensure_import_paths() # Delayed import to ensure sys.path is prepared from pages import page_map with gr.Blocks(title="SkyReels") as demo: # State to store current logged in username current_user = gr.State(value="default_user") with gr.Row(): gr.Markdown("## SkyReels") gr.Markdown("Use the tabs below to select a feature page.") gr.Markdown("For API access, please refer to APIFree (https://www.apifree.ai/home ) or https://platform.skyreels.ai/") with gr.Tabs(): video_extension_pages = ["video_shot_extend", "video_shot_switching"] video_extension_pages_set = set(video_extension_pages) categorized_pages = video_extension_pages_set activate_pages = [ "video_shot_extend", "video_shot_switching", "audio2video_single", "multimodel", ] other_pages = [p for p in activate_pages if p not in categorized_pages] # Render other pages for page_name in other_pages: if page_name in page_map: page_map[page_name]().render(current_user) with gr.Tab(label="Video Extension"): with gr.Tabs(): for page_name in video_extension_pages: if page_name in activate_pages and page_name in page_map: page_map[page_name]().render(current_user) return demo if __name__ == "__main__": app = create_app() # ssr_mode=False disables Server-Side Rendering which can cause connection issues in Spaces app.queue(max_size=64).launch( server_name="0.0.0.0", server_port=7860, ssr_mode=False )