#!/usr/bin/python3 # -*- coding: utf-8 -*- """ # todo: 金笛箫箫 MS4wLjABAAAAguL867lJ2ZsFKCepjVt7EOoGhWxPU4U3qQ-KiQtbOh7KZXV_lGJjchp5r8PoeyiU 88862603087 docker build -t video_platform:v20250819_2052 . docker stop video_platform_7871 && docker rm video_platform_7871 docker run -itd \ --name video_platform_7871 \ --restart=always \ --network host \ -e server_port=7870 \ video_platform:v20250819_2052 /bin/bash docker run -itd \ --name video_platform_7871 \ --restart=always \ --network host \ -e server_port=7871 \ -v /Users/honey/PycharmProjects/video_platform:/data/tianxing/PycharmProjects/video_platform \ -v /Users/honey/Downloads/xianyu/customers:/data/tianxing/PycharmProjects/video_platform/temp/xianyu/customers \ python:3.12 /bin/bash nohup python3 main.py --server_port 7871 & """ import argparse import asyncio import logging from pathlib import Path import platform import time import threading import gradio as gr import log from project_settings import environment, project_path, log_directory, time_zone_info log.setup_size_rotating(log_directory=log_directory, tz_info=time_zone_info) from toolbox.os.command import Command from toolbox.porter.manager import PorterManager from tabs.fs_tab import get_fs_tab from tabs.shell_tab import get_shell_tab from tabs.video_download import get_video_download_tab from tabs.youtube_player_tab import get_youtube_player_tab logger = logging.getLogger("main") def get_args(): parser = argparse.ArgumentParser() parser.add_argument( "--porter_tasks_file_dir", default=(project_path / "data/porter_tasks").as_posix(), type=str ) parser.add_argument( "--live_recorder_tasks_file", default=(project_path / "data/live_recorder_tasks.json").as_posix(), type=str ) parser.add_argument( "--video_download_tasks_file", default=(project_path / "data/video_download_tasks.json").as_posix(), type=str ) parser.add_argument( "--youtube_video_upload_tasks_file", default=(project_path / "data/youtube_video_upload_tasks.json").as_posix(), type=str ) parser.add_argument( "--bilibili_video_upload_tasks_file", default=(project_path / "data/bilibili_video_upload_tasks.json").as_posix(), type=str ) parser.add_argument( "--live_records_dir", default=(project_path / "data/live_records").as_posix(), type=str ) parser.add_argument( "--server_port", default=environment.get("server_port", 7860), type=int ) args = parser.parse_args() return args def shell(cmd: str): return Command.popen(cmd) def async_thread_wrapper(coro_task): logger.info("background_task start") loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) loop.run_until_complete(coro_task) return def main(): args = get_args() porter_tasks_file_dir = Path(args.porter_tasks_file_dir) # porter manager task_manager = PorterManager() for porter_task_file in porter_tasks_file_dir.glob("porter_task_*.json"): key = porter_task_file.stem value = environment.get(key=key, default=False, dtype=bool) logger.info(f"{key}: {value}") if value is True: task_manager.add_tasks_by_task_file(tasks_file=porter_task_file.as_posix()) task_thread = threading.Thread( target=async_thread_wrapper, args=(task_manager.run(),), daemon=True ) task_thread.start() time.sleep(5) # ui with gr.Blocks() as blocks: gr.Markdown(value="live recording.") with gr.Tabs(): _ = get_fs_tab() _ = get_shell_tab() _ = get_video_download_tab() _ = get_youtube_player_tab() # http://127.0.0.1:7870/ # http://10.75.27.247:7870/ blocks.queue().launch( # share=True, share=False if platform.system() in ("Windows", "Darwin") else False, server_name="127.0.0.1" if platform.system() in ("Windows", "Darwin") else "0.0.0.0", server_port=args.server_port ) return if __name__ == "__main__": main()