# -*- coding: utf-8 -*- r'''把 relay.py 里那一大坨 _admin_page 换成调用 admin 模块。 原来的 _admin_page 从 1489 行一直到文件末尾(600 行内联 HTML+CSS+JS), 全塞在一个 f-string 里,改个颜色要在一堆 {{ }} 转义里找。 现在只留一个薄封装,真正的页面在 relay/admin.py。 ''' from __future__ import annotations import ast import sys from pathlib import Path RELAY = (Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote") / "relay" / "relay.py") NEW_METHOD = ''' def _admin_page(self) -> None: """管理后台。 实际渲染在 relay/admin.py —— 原来几百行 HTML/CSS/JS 内联在这里的 f-string 里,改一处样式要在一堆转义花括号里翻, 没法维护。拆出去之后这里只负责把数据递过去。 """ from admin import render_admin snap = RELAY.snapshot() self._send(200, render_admin( snap=snap, public=public_url() or "", admin_path=ADMIN_PATH, codes=len(RELAY.codes), downloads_fn=_list_downloads, ).encode("utf-8")) ''' def main() -> int: lines = RELAY.read_text(encoding="utf-8").splitlines(keepends=True) # 找到 _admin_page 那一行 start = None for index, line in enumerate(lines): if line.startswith(" def _admin_page(self)"): start = index break if start is None: print(" [失败] 找不到 _admin_page") return 1 print(" _admin_page 在第 %d 行,到文件末尾(%d 行)" % (start + 1, len(lines))) new_lines = lines[:start] + [NEW_METHOD] text = "".join(new_lines) RELAY.write_text(text, encoding="utf-8", newline="\n") try: ast.parse(text) print(" relay.py 语法 OK") except SyntaxError as exc: print(" [失败] 行 %s: %s" % (exc.lineno, exc.msg)) return 1 print(" 文件从 %d 行缩到 %d 行" % (len(lines), len(new_lines))) return 0 if __name__ == "__main__": sys.exit(main())