OneBot: Leantime 改造版源码(BOM/Univer 表格/AI 接管/品牌替换等)

This commit is contained in:
wangruiguo
2026-09-03 18:49:20 +08:00
commit d647428529
3501 changed files with 1988906 additions and 0 deletions

63
.dev/onebot-rebrand.py Normal file
View File

@@ -0,0 +1,63 @@
# -*- coding: utf-8 -*-
"""OneBot rebrand helper: logo 生成 + 语言文件品牌名替换"""
import base64
import re
import glob
import os
import shutil
root = r"d:\开发\leantime-master\leantime-master"
img_dir = os.path.join(root, "public", "assets", "images")
bt = os.path.join(root, "bt.png")
# 1. 生成内嵌 bt.png 的 logo.svg / logo_blue.svg保持现有 .svg 引用不变,最小改动)
with open(bt, "rb") as f:
b64 = base64.b64encode(f.read()).decode()
svg = ('<svg xmlns="http://www.w3.org/2000/svg" width="108" height="98" '
'viewBox="0 0 108 98"><image width="108" height="98" '
'href="data:image/png;base64,{}"/></svg>').format(b64)
for name in ("logo.svg", "logo_blue.svg"):
with open(os.path.join(img_dir, name), "w", encoding="utf-8") as f:
f.write(svg)
# printLogoURL 指向 logo.jpg原本缺失复制 bt.png 补齐
shutil.copyfile(bt, os.path.join(img_dir, "logo.jpg"))
# 2. 语言文件:仅替换 value 中的 Leantime/leantime保留翻译 key 与 *.leantime.io 域名
def repl(m):
s = m.group(0)
return "OneBot" if s[0].isupper() else "onebot"
# 匹配 Leantime不区分大小写排除后面紧跟 .io域名或字母更大单词
pat = re.compile(r"(?i)leantime(?!(\.io|[a-z]))")
changed_files = 0
changed_lines = 0
for ini in glob.glob(os.path.join(root, "app", "Language", "*.ini")):
with open(ini, "r", encoding="utf-8") as f:
lines = f.readlines()
out = []
file_changed = False
for line in lines:
if line.lstrip().startswith(("#", ";")):
out.append(line)
continue
if "=" not in line:
out.append(line)
continue
idx = line.index("=")
key, val = line[:idx], line[idx:]
new_val, n = pat.subn(repl, val)
if n:
file_changed = True
changed_lines += n
out.append(key + new_val)
if file_changed:
with open(ini, "w", encoding="utf-8") as f:
f.writelines(out)
changed_files += 1
print("logo.svg/logo_blue.svg/logo.jpg written")
print("language files changed:", changed_files, "| line replacements:", changed_lines)