# -*- coding: utf-8 -*- r'''把官网 logo 从 换成内联 SVG。 为什么: ICO 文件放在 标签里各浏览器支持不一致 —— 实测截图里导航栏那个 logo 是**破图**。 内联 SVG 永远能显示,还省一个请求。 ''' from __future__ import annotations import ast import sys from pathlib import Path ROOT = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote") LANDING = ROOT / "relay" / "landing.py" # 内联 SVG(用设计令牌里的主色) LOGO_FUNC = '''def _logo(size: int = 26) -> str: """内联 SVG 的 logo。 为什么不用 : ICO 放在 里各浏览器支持不一致,实测截图里是破图。 内联 SVG 永远能显示,还不用多一个请求。 """ return ( '' '' '' '' '' % (size, size) ) ''' OLD_IMG = '' def main() -> int: text = LANDING.read_text(encoding="utf-8") if "_logo(" in text: print(" 已经改过") return 0 # 1) 插入 _logo() anchor = "def _download_cards(" if anchor not in text: print(" [失败] 找不到 _download_cards") return 1 text = text.replace(anchor, LOGO_FUNC + anchor, 1) print(" 加了 _logo()") # 2) 模板里的 img 换成占位符 n = text.count(OLD_IMG) text = text.replace(OLD_IMG, "__LOGO__") print(" 替换 %d 处 为占位符" % n) # 3) 返回值里把占位符换成真正的 SVG # 模板最后是 } 形状,找一个稳妥的锚点: # "_dlsub": (...) 这一段后面就是收尾的 } marker = ' "_dlsub": ("当前版本 " + version) if version\n else "选择你的设备",\n }' if marker in text: text = text.replace( marker, ' "_dlsub": ("当前版本 " + version) if version\n' ' else "选择你的设备",\n' ' }.replace("__LOGO__", _logo())', 1) print(" 返回值里接了 .replace(\"__LOGO__\", _logo())") else: # 兜底:找 render_site 的 return ... % { ... } 结尾 idx = text.rfind(" }") if idx < 0: print(" [失败] 找不到返回值结尾") return 1 text = text[:idx] + ' }.replace("__LOGO__", _logo())' + text[idx + len(" }"):] print(" 用兜底方式接了 replace") LANDING.write_text(text, encoding="utf-8", newline="\n") try: ast.parse(text) print(" 语法 OK") except SyntaxError as exc: print(" [失败] 语法错误: 行 %s: %s" % (exc.lineno, exc.msg)) lines = text.splitlines() for i in range(max(0, (exc.lineno or 1) - 3), min(len(lines), (exc.lineno or 1) + 3)): print(" %d: %s" % (i + 1, lines[i][:90])) return 1 # 复核 left = text.count(OLD_IMG) print() print(" 复核: 还剩 %d 处 (link 那个不影响)" % left) return 0 if __name__ == "__main__": sys.exit(main())