SkyReels-V3 / app.py
howe's picture
update
5661037
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
)