Spaces:
Build error
Build error
| import argparse | |
| import os | |
| import time | |
| import gradio as gr | |
| import roop | |
| import roop.metadata | |
| import roop.utilities as util | |
| import roop.globals | |
| import ui.globals as uii | |
| from ui.tabs.faceswap_tab import faceswap_tab | |
| from ui.tabs.livecam_tab import livecam_tab | |
| from ui.tabs.facemgr_tab import facemgr_tab | |
| from ui.tabs.extras_tab import extras_tab | |
| from ui.tabs.settings_tab import settings_tab | |
| # কিছু গ্লোবাল ডিফল্ট | |
| roop.globals.keep_fps = None | |
| roop.globals.keep_frames = None | |
| roop.globals.skip_audio = None | |
| roop.globals.use_batch = None | |
| def parse_args(): | |
| parser = argparse.ArgumentParser(description="Roop-Unleashed Gradio Server") | |
| parser.add_argument( | |
| "--share", | |
| action="store_true", | |
| help="Enable Gradio public share link", | |
| ) | |
| return parser.parse_args() | |
| def prepare_environment(): | |
| roop.globals.output_path = os.path.abspath(os.path.join(os.getcwd(), "output")) | |
| os.makedirs(roop.globals.output_path, exist_ok=True) | |
| if not roop.globals.CFG.use_os_temp_folder: | |
| os.environ["TEMP"] = os.environ["TMP"] = os.path.abspath( | |
| os.path.join(os.getcwd(), "temp") | |
| ) | |
| os.makedirs(os.environ["TEMP"], exist_ok=True) | |
| # Gradio temp/telemetry config | |
| os.environ["GRADIO_TEMP_DIR"] = os.environ.get("TEMP", "/tmp") | |
| os.environ["GRADIO_ANALYTICS_ENABLED"] = "0" | |
| def show_msg(msg: str): | |
| gr.Info(msg) | |
| def main(): | |
| from roop.core import decode_execution_providers, set_display_ui | |
| # CLI args (Hugging Face-এ সাধারণত ব্যবহার হবে না, কিন্তু লোকাল রান করলে কাজে লাগবে) | |
| try: | |
| args = parse_args() | |
| roop.globals.CFG.server_share = getattr(args, "share", False) | |
| except SystemExit: | |
| # Hugging Face Space-এ argv issue হলে ignore করো | |
| roop.globals.CFG.server_share = False | |
| prepare_environment() | |
| # UI message handler সেট করা | |
| set_display_ui(show_msg) | |
| # Hugging Face CPU-র জন্য provider safe fallback | |
| if roop.globals.CFG.provider == "cuda" and util.has_cuda_device() is False: | |
| roop.globals.CFG.provider = "cpu" | |
| roop.globals.execution_providers = decode_execution_providers( | |
| [roop.globals.CFG.provider] | |
| ) | |
| gputype = util.get_device() | |
| if gputype == "cuda": | |
| util.print_cuda_info() | |
| print(f"Using provider {roop.globals.execution_providers} - Device: {gputype}") | |
| run_server = True | |
| uii.ui_restart_server = False | |
| mycss = """ | |
| span {color: var(--block-info-text-color)} | |
| #fixedheight { | |
| max-height: 238.4px; | |
| overflow-y: auto !important; | |
| } | |
| .image-container.svelte-1l6wqyv {height: 100%} | |
| """ | |
| while run_server: | |
| server_name = roop.globals.CFG.server_name | |
| if not server_name: | |
| server_name = "0.0.0.0" | |
| server_port = roop.globals.CFG.server_port | |
| if server_port <= 0: | |
| server_port = 7860 | |
| ssl_verify = False if server_name == "0.0.0.0" else True | |
| with gr.Blocks( | |
| title=f"{roop.metadata.name} {roop.metadata.version}", | |
| theme=roop.globals.CFG.selected_theme, | |
| css=mycss, | |
| delete_cache=(60, 86400), | |
| ) as ui: | |
| with gr.Row(variant="compact"): | |
| gr.Markdown( | |
| f"### [{roop.metadata.name} {roop.metadata.version}](https://gitlab.com/roop-unleashed/roop-unleashed)" | |
| ) | |
| gr.HTML(util.create_version_html(), elem_id="versions") | |
| # Tabs | |
| faceswap_tab() | |
| livecam_tab() | |
| facemgr_tab() | |
| extras_tab() | |
| settings_tab() | |
| launch_browser = roop.globals.CFG.launch_browser | |
| uii.ui_restart_server = False | |
| try: | |
| ui.queue().launch( | |
| inbrowser=launch_browser, | |
| server_name=server_name, | |
| server_port=server_port, | |
| share=roop.globals.CFG.server_share, | |
| ssl_verify=ssl_verify, | |
| prevent_thread_lock=True, | |
| show_error=True, | |
| ) | |
| except Exception as e: | |
| print(f"Exception {e} when launching Gradio Server!") | |
| uii.ui_restart_server = True | |
| run_server = True | |
| try: | |
| while uii.ui_restart_server is False: | |
| time.sleep(1.0) | |
| except (KeyboardInterrupt, OSError): | |
| print("Keyboard interruption in main thread... closing server.") | |
| run_server = False | |
| ui.close() | |
| # Hugging Face Space main entry | |
| if __name__ == "__main__": | |
| main() |