This commit is contained in:
eric
2026-03-28 17:49:04 -05:00
parent e050afbac1
commit 513c2b7b8c
3 changed files with 45 additions and 4 deletions

1
backup/__init__.py Normal file
View File

@@ -0,0 +1 @@
# 使 backup 成为显式包,便于 from backup.msg_push import ...

View File

@@ -11,15 +11,16 @@ import functools
import hashlib import hashlib
import re import re
import traceback import traceback
from typing import Any, List, Optional, Union from typing import Any, Dict, List, Optional, Union
from urllib.parse import parse_qs, urlparse from urllib.parse import parse_qs, urlparse
from collections import OrderedDict from collections import OrderedDict
import execjs import execjs
from .logger import logger from .logger import logger
import configparser import configparser
OptionalStr = Optional[str] # Python 3.9:此处不能写 str | None(| 会在 import 时求值报错),勿改回 PEP604 写法
OptionalDict = Optional[dict] OptionalStr = Union[str, None]
OptionalDict = Union[Dict[str, Any], None]
class Color: class Color:

View File

@@ -24,7 +24,25 @@ REMOTE_BASE = os.environ.get("LIVE_DEPLOY_PATH", "/home/live/douyinyoutube").rst
REPO_ROOT = Path(__file__).resolve().parent.parent REPO_ROOT = Path(__file__).resolve().parent.parent
def _discover_repo_files() -> list[str]:
"""与 youtube.py 运行相关的源码,避免只同步白名单时缺模块。"""
extra: list[str] = []
backup_dir = REPO_ROOT / "backup"
if backup_dir.is_dir():
for p in sorted(backup_dir.glob("*.py")):
extra.append(str(p.relative_to(REPO_ROOT)).replace("\\", "/"))
return extra
FILES = [ FILES = [
"src/utils.py",
"src/logger.py",
"src/spider.py",
"src/stream.py",
"src/proxy.py",
"src/http_clients/async_http.py",
"src/http_clients/sync_http.py",
"src/android_control.py", "src/android_control.py",
"src/async_thread_loop.py", "src/async_thread_loop.py",
"src/youtube_ini_sync.py", "src/youtube_ini_sync.py",
@@ -37,6 +55,7 @@ FILES = [
"youtube.py", "youtube.py",
"tiktok.py", "tiktok.py",
"main.py", "main.py",
"ffmpeg_install.py",
"scripts/hardware_probe.py", "scripts/hardware_probe.py",
"config/hardware.env.example", "config/hardware.env.example",
"ecosystem.config.cjs", "ecosystem.config.cjs",
@@ -73,6 +92,8 @@ FILES = [
"web-console/components/console/LiveConsoleWorkspace.tsx", "web-console/components/console/LiveConsoleWorkspace.tsx",
] ]
FILES = sorted(set(FILES + _discover_repo_files()))
LOG_DIR = REPO_ROOT / ".deploy_logs" LOG_DIR = REPO_ROOT / ".deploy_logs"
TAIL_LINES = 90 TAIL_LINES = 90
@@ -229,8 +250,26 @@ def main() -> int:
sftp_put(sftp, lp, rp) sftp_put(sftp, lp, rp)
_safe_print(f"已上传: {rel}") _safe_print(f"已上传: {rel}")
run_logged(
client,
log_path,
"clear_python_caches",
f"rm -rf {REMOTE_BASE}/src/__pycache__ {REMOTE_BASE}/backup/__pycache__ 2>/dev/null; echo cache_cleared",
timeout=20,
)
run_logged(
client,
log_path,
"verify_utils_py_snippet",
f"sed -n '1,28p' {REMOTE_BASE}/src/utils.py",
timeout=15,
)
py_compile = ( py_compile = (
f"cd {REMOTE_BASE} && python3 -m py_compile web.py youtube.py tiktok.py " f"cd {REMOTE_BASE} && python3 -m py_compile web.py youtube.py tiktok.py ffmpeg_install.py "
"backup/__init__.py backup/msg_push.py backup/robust_relay.py "
"src/utils.py src/logger.py src/spider.py src/stream.py src/proxy.py "
"src/http_clients/async_http.py src/http_clients/sync_http.py "
"src/control_plane.py src/web_process_backend.py src/hub_routes.py " "src/control_plane.py src/web_process_backend.py src/hub_routes.py "
"src/async_thread_loop.py src/youtube_ini_sync.py " "src/async_thread_loop.py src/youtube_ini_sync.py "
"src/live_config/__init__.py src/live_config/loader.py " "src/live_config/__init__.py src/live_config/loader.py "