fix: resolve type error in gist sync and implement full English localization for charts
This commit is contained in:
@@ -7,7 +7,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu
|
||||
|
||||
<!-- STATS_START -->
|
||||
## 📊 Community Stats
|
||||
> 🕐 Auto-updated: 2026-02-11 12:29
|
||||
> 🕐 Auto-updated: 2026-02-11 12:35
|
||||
|
||||
| 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions |
|
||||
| :---: | :---: | :---: | :---: |
|
||||
|
||||
@@ -6,7 +6,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词
|
||||
|
||||
<!-- STATS_START -->
|
||||
## 📊 社区统计
|
||||
> 🕐 自动更新于 2026-02-11 12:29
|
||||
> 🕐 自动更新于 2026-02-11 12:35
|
||||
|
||||
| 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 |
|
||||
| :---: | :---: | :---: | :---: |
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"total_posts": 22,
|
||||
"total_downloads": 4156,
|
||||
"total_views": 45923,
|
||||
"total_downloads": 4160,
|
||||
"total_views": 45940,
|
||||
"total_upvotes": 231,
|
||||
"total_downvotes": 2,
|
||||
"total_saves": 274,
|
||||
@@ -23,7 +23,7 @@
|
||||
"author": "Fu-Jie",
|
||||
"description": "Intelligently analyzes text content and generates interactive mind maps to help users structure and visualize knowledge.",
|
||||
"downloads": 954,
|
||||
"views": 8387,
|
||||
"views": 8389,
|
||||
"upvotes": 22,
|
||||
"saves": 50,
|
||||
"comments": 13,
|
||||
@@ -38,8 +38,8 @@
|
||||
"version": "1.5.0",
|
||||
"author": "Fu-Jie",
|
||||
"description": "AI-powered infographic generator based on AntV Infographic. Supports professional templates, auto-icon matching, and SVG/PNG downloads.",
|
||||
"downloads": 707,
|
||||
"views": 6702,
|
||||
"downloads": 710,
|
||||
"views": 6712,
|
||||
"upvotes": 24,
|
||||
"saves": 34,
|
||||
"comments": 10,
|
||||
@@ -134,8 +134,8 @@
|
||||
"version": "",
|
||||
"author": "",
|
||||
"description": "",
|
||||
"downloads": 200,
|
||||
"views": 2778,
|
||||
"downloads": 201,
|
||||
"views": 2781,
|
||||
"upvotes": 9,
|
||||
"saves": 6,
|
||||
"comments": 0,
|
||||
@@ -295,7 +295,7 @@
|
||||
"author": "Fu-Jie",
|
||||
"description": "A specialized filter to bypass OpenWebUI's default RAG for GitHub Copilot SDK models. It moves uploaded files to a safe location ('copilot_files') so the Copilot Pipe can process them natively without interference.",
|
||||
"downloads": 16,
|
||||
"views": 856,
|
||||
"views": 858,
|
||||
"upvotes": 3,
|
||||
"saves": 0,
|
||||
"comments": 0,
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# 📊 OpenWebUI Community Stats Report
|
||||
|
||||
> 📅 Updated: 2026-02-11 12:29
|
||||
> 📅 Updated: 2026-02-11 12:35
|
||||
|
||||
### 📈 增长与趋势 (Last 14 Days)
|
||||

|
||||
### 📈 Growth & Trends (Last 14 Days)
|
||||

|
||||
|
||||
> *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)*
|
||||
> *Blue: Downloads | Purple: Views (Real-time dynamic)*
|
||||
|
||||
### 📂 内容分类占比 (Distribution)
|
||||

|
||||
### 📂 Content Distribution
|
||||

|
||||
|
||||
|
||||
## 📈 Overview
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# 📊 OpenWebUI 社区统计报告
|
||||
|
||||
> 📅 更新时间: 2026-02-11 12:29
|
||||
> 📅 更新时间: 2026-02-11 12:35
|
||||
|
||||
### 📈 增长与趋势 (Last 14 Days)
|
||||

|
||||

|
||||
|
||||
> *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)*
|
||||
|
||||
### 📂 内容分类占比 (Distribution)
|
||||

|
||||

|
||||
|
||||
|
||||
## 📈 总览
|
||||
|
||||
@@ -272,22 +272,34 @@ class OpenWebUIStats:
|
||||
print(f"⚠️ 无法从 Token 解析用户 ID: {e}")
|
||||
return ""
|
||||
|
||||
def generate_mermaid_chart(self, stats: dict = None) -> str:
|
||||
def generate_mermaid_chart(self, stats: dict = None, lang: str = "zh") -> str:
|
||||
"""生成支持 Kroki 服务端渲染的动态 Mermaid 图表链接 (零 Commit)"""
|
||||
history = self.load_history()
|
||||
if not history:
|
||||
return ""
|
||||
|
||||
# 多语言标签
|
||||
labels = {
|
||||
"zh": {
|
||||
"trend_title": "增长与趋势 (Last 14 Days)",
|
||||
"trend_subtitle": "Engagement & Downloads Trend",
|
||||
"legend": "蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)",
|
||||
"dist_title": "内容分类占比 (Distribution)",
|
||||
"dist_subtitle": "Plugin Types Distribution",
|
||||
},
|
||||
"en": {
|
||||
"trend_title": "Growth & Trends (Last 14 Days)",
|
||||
"trend_subtitle": "Engagement & Downloads Trend",
|
||||
"legend": "Blue: Downloads | Purple: Views (Real-time dynamic)",
|
||||
"dist_title": "Content Distribution",
|
||||
"dist_subtitle": "Plugin Types Distribution",
|
||||
},
|
||||
}
|
||||
l = labels.get(lang, labels["en"])
|
||||
|
||||
def kroki_render(mermaid_code: str) -> str:
|
||||
"""将 Mermaid 代码压缩并编码为 Kroki 链接"""
|
||||
try:
|
||||
# 实际上由于我们要实现零 Commit,Markdown 文件里的链接必须是固定的
|
||||
# 但 Mermaid 数据是动态的。为了完全不改动 md 文件就能变,
|
||||
# 只有一种办法:使用外部服务读取 Gist 原始数据并生成图片。
|
||||
# 由于 Mermaid 本身不支持这种外部数据引用,我们采取折中方案:
|
||||
# 在 generate_markdown 时生成最新的 Kroki 链接。
|
||||
# 只要这个方法被调用并写回 md,它本质上还是改了 md。
|
||||
# 如果要完全不改 md,只能在 md 里放一个固定链接,比如指向一个会自动更新图片的 API。
|
||||
compressed = zlib.compress(mermaid_code.encode("utf-8"), level=9)
|
||||
encoded = base64.urlsafe_b64encode(compressed).decode("utf-8")
|
||||
return f"https://kroki.io/mermaid/svg/{encoded}"
|
||||
@@ -305,15 +317,15 @@ class OpenWebUIStats:
|
||||
vws = [str(item["total_views"]) for item in data]
|
||||
|
||||
mm = f"""xychart-beta
|
||||
title "Engagement & Downloads Trend"
|
||||
title "{l['trend_subtitle']}"
|
||||
x-axis [{dates_str}]
|
||||
y-axis "Total Counts"
|
||||
line [{', '.join(dls)}]
|
||||
line [{', '.join(vws)}]"""
|
||||
|
||||
charts.append("### 📈 增长与趋势 (Last 14 Days)")
|
||||
charts.append(f"### 📈 {l['trend_title']}")
|
||||
charts.append(f"})")
|
||||
charts.append("\n> *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)*")
|
||||
charts.append(f"\n> *{l['legend']}*")
|
||||
charts.append("")
|
||||
|
||||
# 2. 插件类型分布 (Pie Chart)
|
||||
@@ -324,8 +336,8 @@ class OpenWebUIStats:
|
||||
for p_type, count in stats["by_type"].items()
|
||||
]
|
||||
)
|
||||
mm = f"pie title Plugin Types\n{pie_data}"
|
||||
charts.append("### 📂 内容分类占比 (Distribution)")
|
||||
mm = f"pie title \"{l['dist_subtitle']}\"\n{pie_data}"
|
||||
charts.append(f"### 📂 {l['dist_title']}")
|
||||
charts.append(f"})")
|
||||
charts.append("")
|
||||
|
||||
@@ -550,8 +562,8 @@ class OpenWebUIStats:
|
||||
md.append(t["updated"])
|
||||
md.append("")
|
||||
|
||||
# 插入趋势图 (使用 Kroki SVG 链接,理论上每次生成内容都随数据变)
|
||||
chart = self.generate_mermaid_chart(stats)
|
||||
# 插入趋势图 (使用 Kroki SVG 链接)
|
||||
chart = self.generate_mermaid_chart(stats, lang=lang)
|
||||
if chart:
|
||||
md.append(chart)
|
||||
md.append("")
|
||||
@@ -725,6 +737,8 @@ class OpenWebUIStats:
|
||||
files_payload = {}
|
||||
for key, (label, val, color) in badges_config.items():
|
||||
diff = delta.get(key, 0)
|
||||
if isinstance(diff, dict):
|
||||
diff = 0 # 避免 'posts' key 导致的 dict vs int 比较错误
|
||||
|
||||
message = f"{val}"
|
||||
if diff > 0:
|
||||
|
||||
Reference in New Issue
Block a user