CNB 组织列表排序助手

创建于 10 小时前
更新于 2 小时前
对 CNB 平台组织列表进行智能排序(置顶+权限),支持点击调整顺序、拖拽排序、暗色主题
总安装量
36
今日新增
+15
用户评分
- / 5.0 (0)
当前版本
4.0.0
脚本详情

📌 简介

CNB 组织列表排序助手 是一款针对 CNB 平台(cnb.cool)用户组织列表的浏览器用户脚本。它能够在 /u/*/groups 页面自动为你排序所有加入的组织,支持:

智能排序:按置顶状态 + 角色权限 + 人数(少的在前)自动排列

自定义排序:点击卡片选中,通过按钮上下移动,自由调整顺序

原始顺序:恢复页面首次加载时的原生顺序

一键加载全部:从 API 拉取所有分页组织,补全缺失卡片

持久化存储:你的自定义顺序会保存在浏览器中,刷新后依然生效

image.png

✨ 特性一览

特性 说明
🎯 置顶优先 页面标记为“置顶”的组织自动靠前
🏷️ 权限标记 为每个组织卡片添加角色徽章(负责人/管理员/开发者/助手/访客)
🧠 智能排序 置顶 > 角色优先级 > 人数(少在前) > 名称拼音排序,完全自动化
🖱️ 自定义模式 点击任意卡片选中,使用面板上的 ↑/↓ 按钮调整位置
💾 保存/重置 一键保存当前顺序到本地,一键重置回智能排序
🔁 SPA 适配 完美支持 CNB 内部页面路由切换,自动重新初始化
🌐 懒加载兼容 滚动加载新卡片后自动补充徽章并应用排序
📦 全部加载 一键从 API 拉取所有分页组织(最多 50/个),不再遗漏
🎨 毛玻璃面板 悬浮控制面板采用毛玻璃设计,轻量美观,可折叠收纳
🎮 使用方法

1. 面板操作

展开/收起:点击左下角圆形按钮 ⇅

模式切换:点击「智能」「自定义」「原始」按钮

智能:自动按置顶+权限+人数+名称排序(默认)

自定义:需要先选中卡片,再使用 ↑/↓ 移动

原始:恢复页面初始加载顺序

保存:将当前显示顺序保存为自定义顺序(仅在智能/原始模式下保存当前结果,自定义模式下会自动保存移动后的顺序)

重置:清空所有自定义顺序,切换回智能排序并重新排列

加载全部组织:从 API 拉取全部组织数据,补全页面未加载的卡片(适用于有大量组织的用户)

2. 自定义模式详解

点击「自定义」模式按钮。

此时每个组织卡片会显示一个橙色外圈(hover 时显示提示)。

单击任意卡片(不要点击卡片内的链接),卡片会高亮(橙色边框 + 阴影)。

点击面板上的 ↑ 上移 或 ↓ 下移 按钮,选中卡片会向上/向下移动一位。

移动后排序自动保存,无需再点击「保存」按钮。

可以继续选中其他卡片移动,直到满意为止。

3. 徽章说明

每个组织卡片名称旁会显示两个标签:

📌 置顶:页面本身置顶的组织(由 CNB 平台标记)

角色标签:负责人(Owner)、管理员(Master/Admin)、开发者(Developer/Maintainer)、助手(Reporter)、访客(Guest)

角色颜色区分:

红色:负责人

橙色:管理员

绿色:开发者

紫色:助手

灰色:访客

⚙️ 高级功能

智能排序规则
置顶优先:pinned = true 的组织排在非置顶之前。

角色优先级:

Owner(负责人)优先级最高

Master/Admin(管理员)次之

Developer/Maintainer(开发者)

Reporter(助手)

Guest/Unknown(访客)最低

人数排序:相同置顶和角色的组织按人数升序排列(人数少的在前,最少为1)。

名称排序:相同置顶、角色、人数的组织按名称(或路径)的拼音/字母升序排列。

数据持久化
脚本使用 GM_setValue 或 localStorage 存储数据(优先使用 GM 函数)。

存储内容:自定义顺序数组(组织路径列表)+ 当前模式。

清除数据:点击面板「重置」按钮即可清空存储并恢复智能排序。

全部组织加载
默认情况下,CNB 页面采用懒加载,滚动到底部才加载下一页。

点击「加载全部组织」按钮,脚本会主动请求 API 获取所有分页数据(每页 50 条)。

如果 API 返回的组织数量多于当前页面卡片数量,会自动补全缺失的卡片。

补全后自动应用当前排序模式,无需手动刷新。

🛠️ 技术细节

匹配地址:https://cnb.cool/*/groups*

运行时机:document-idle,等待页面加载完毕

依赖:无外部依赖,纯原生 JavaScript

API 接口:/user/groups?page=1&page_size=50(需同域 Cookie)

样式:动态注入 CSS,采用毛玻璃效果,不影响原页面布局

性能:使用防抖(600ms)、MutationObserver 监听懒加载,避免频繁重排

📝 注意事项

脚本仅对组织列表页生效,其他 CNB 页面会自动隐藏悬浮按钮。

自定义模式下点击卡片会阻止默认链接跳转,如需进入组织,请点击卡片内的组织名称或链接区域(头像、名称、统计数字等)。

如果某些组织缺少权限信息(access_role = Unknown),脚本会将其归类为“访客”级别,不影响排序功能。

首次加载或重置后,脚本会自动获取 API 数据补全角色信息,若网络较慢可能会有短暂延迟。

当页面懒加载新卡片时,脚本会自动为新卡片添加徽章并应用当前排序(不会打乱已有顺序)。

如果出现重复卡片(脚本补全的卡片和页面原生卡片同时存在),脚本会自动移除脚本创建的那一份,保留原生卡片。

SPA 页面内导航:当你在 CNB 内从其他页面跳转到组织列表页时,脚本会自动检测并重新初始化,无需刷新页面。