From 1fb2cccd585e321aefcfa648490e15d89b5d3be3 Mon Sep 17 00:00:00 2001 From: fujie Date: Wed, 11 Feb 2026 12:35:45 +0800 Subject: [PATCH] fix: resolve type error in gist sync and implement full English localization for charts --- README.md | 2 +- README_CN.md | 2 +- docs/community-stats.json | 16 +++++++------- docs/community-stats.md | 12 +++++------ docs/community-stats.zh.md | 6 +++--- scripts/openwebui_stats.py | 44 +++++++++++++++++++++++++------------- 6 files changed, 48 insertions(+), 34 deletions(-) diff --git a/README.md b/README.md index 15d2242..7f2ec86 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ A collection of enhancements, plugins, and prompts for [OpenWebUI](https://githu ## 📊 Community Stats -> 🕐 Auto-updated: 2026-02-11 12:29 +> 🕐 Auto-updated: 2026-02-11 12:35 | 👤 Author | 👥 Followers | ⭐ Points | 🏆 Contributions | | :---: | :---: | :---: | :---: | diff --git a/README_CN.md b/README_CN.md index ec2a359..52099a5 100644 --- a/README_CN.md +++ b/README_CN.md @@ -6,7 +6,7 @@ OpenWebUI 增强功能集合。包含个人开发与收集的插件、提示词 ## 📊 社区统计 -> 🕐 自动更新于 2026-02-11 12:29 +> 🕐 自动更新于 2026-02-11 12:35 | 👤 作者 | 👥 粉丝 | ⭐ 积分 | 🏆 贡献 | | :---: | :---: | :---: | :---: | diff --git a/docs/community-stats.json b/docs/community-stats.json index fe7b770..fd721a0 100644 --- a/docs/community-stats.json +++ b/docs/community-stats.json @@ -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, diff --git a/docs/community-stats.md b/docs/community-stats.md index 1babf50..273fb24 100644 --- a/docs/community-stats.md +++ b/docs/community-stats.md @@ -1,14 +1,14 @@ # 📊 OpenWebUI Community Stats Report -> 📅 Updated: 2026-02-11 12:29 +> 📅 Updated: 2026-02-11 12:35 -### 📈 增长与趋势 (Last 14 Days) -![Trend](https://kroki.io/mermaid/svg/eNpNjj1uwzAMhfeeQvDQyQYkkvqb294gW-BBbYTUgCMDsYo6ty9pV0U1PH18oh65PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02A8SuVwKoG5gdYNB_AA2wATWwDVwD3yA0iL9gdAPTjfsmj2OT7rTUNKuX5avU9dhxnkpWZ_BB9wqC96zRx16hRnbQuMAK6FjRE6sFYHUOWf3eGbw4MXIPGTSi1o3_0hFCkBh-PRJIKhu0lQwCMYNBSYxEPJZ0dGwSGi9xhFYqC5Y_kHMkVwheBtoIOP4A7RJaKQ==) +### 📈 Growth & Trends (Last 14 Days) +![Trend](https://kroki.io/mermaid/svg/eNpNjj1uwzAMhfeegvDQyQYkkfqb294gW-BBbYTUgCMDsYo6ty9pV0U1PH18oh65PT4-070O77mmJ-BTpzpn6N7KNV3zLZcKz_C6fJd5SZcVTvdcLt3euA1pm1Y4d0oPJnY9CKBqoHcwg_oD0wAbUAPbwDXwDUKD-AtaNdDduG_yODbpTktNM7wsX6Wux47zVDKcjQ-qBxO8Z40-9oAK2UHtAqtBx4qeWK0xrM4hq987gxcnRu4hjVrUqfFfOpoQJIZfjwSSygZlJYOMmEGjJEYiHksqOjYJtZc4QiuVNZY_kHMkVwheBtpIavwB6u1aIw==) -> *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)* +> *Blue: Downloads | Purple: Views (Real-time dynamic)* -### 📂 内容分类占比 (Distribution) -![Distribution](https://kroki.io/mermaid/svg/eNoryExVKMksyUlVCMgpTc_MUwipLEgt5lIAAqWC_OISJQUrBWMINy0zpyS1CCRgApXPLEgFcQ0h3MTkksz8PLCAEVRBUX5uQQmSkqLUsszUcrAAAN7zHv4=) +### 📂 Content Distribution +![Distribution](https://kroki.io/mermaid/svg/eNpNi7sNgDAQQ3umOGUDPhU1A1CwAKADWQrklFxAbA-BFLh7z7aASaGWyfQ2rthpuIQDdQjqMUWF201BT4y4oIZaqj9cYJV9Ek3uIZyw_HCc328SVR54t4n-Jp4P8PmKG5ZLJGI=) ## 📈 Overview diff --git a/docs/community-stats.zh.md b/docs/community-stats.zh.md index eb08f6b..f22db02 100644 --- a/docs/community-stats.zh.md +++ b/docs/community-stats.zh.md @@ -1,14 +1,14 @@ # 📊 OpenWebUI 社区统计报告 -> 📅 更新时间: 2026-02-11 12:29 +> 📅 更新时间: 2026-02-11 12:35 ### 📈 增长与趋势 (Last 14 Days) -![Trend](https://kroki.io/mermaid/svg/eNpNjj1uwzAMhfeeQvDQyQYkkvqb294gW-BBbYTUgCMDsYo6ty9pV0U1PH18oh65PT4-070O77mmJ8WnTnXOqnsr13TNt1yqelavy3eZl3RZ1emey6XbG7chbdOqzp02A8SuVwKoG5gdYNB_AA2wATWwDVwD3yA0iL9gdAPTjfsmj2OT7rTUNKuX5avU9dhxnkpWZ_BB9wqC96zRx16hRnbQuMAK6FjRE6sFYHUOWf3eGbw4MXIPGTSi1o3_0hFCkBh-PRJIKhu0lQwCMYNBSYxEPJZ0dGwSGi9xhFYqC5Y_kHMkVwheBtoIOP4A7RJaKQ==) +![Trend](https://kroki.io/mermaid/svg/eNpNjj1uwzAMhfeegvDQyQYkkfqb294gW-BBbYTUgCMDsYo6ty9pV0U1PH18oh65PT4-070O77mmJ-BTpzpn6N7KNV3zLZcKz_C6fJd5SZcVTvdcLt3euA1pm1Y4d0oPJnY9CKBqoHcwg_oD0wAbUAPbwDXwDUKD-AtaNdDduG_yODbpTktNM7wsX6Wux47zVDKcjQ-qBxO8Z40-9oAK2UHtAqtBx4qeWK0xrM4hq987gxcnRu4hjVrUqfFfOpoQJIZfjwSSygZlJYOMmEGjJEYiHksqOjYJtZc4QiuVNZY_kHMkVwheBtpIavwB6u1aIw==) > *蓝色: 总下载量 | 紫色: 总浏览量 (实时动态生成)* ### 📂 内容分类占比 (Distribution) -![Distribution](https://kroki.io/mermaid/svg/eNoryExVKMksyUlVCMgpTc_MUwipLEgt5lIAAqWC_OISJQUrBWMINy0zpyS1CCRgApXPLEgFcQ0h3MTkksz8PLCAEVRBUX5uQQmSkqLUsszUcrAAAN7zHv4=) +![Distribution](https://kroki.io/mermaid/svg/eNpNi7sNgDAQQ3umOGUDPhU1A1CwAKADWQrklFxAbA-BFLh7z7aASaGWyfQ2rthpuIQDdQjqMUWF201BT4y4oIZaqj9cYJV9Ek3uIZyw_HCc328SVR54t4n-Jp4P8PmKG5ZLJGI=) ## 📈 总览 diff --git a/scripts/openwebui_stats.py b/scripts/openwebui_stats.py index a8d86d4..838301b 100644 --- a/scripts/openwebui_stats.py +++ b/scripts/openwebui_stats.py @@ -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"![Trend]({kroki_render(mm)})") - 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"![Distribution]({kroki_render(mm)})") 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: