video_platform / main.py
HoneyTian's picture
update
96f3bb9
#!/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() == "Windows" else False,
server_name="127.0.0.1" if platform.system() == "Windows" else "0.0.0.0",
server_port=args.server_port
)
return
if __name__ == "__main__":
main()