UTags Advanced Filter

创建于 1 天前
更新于 1 天前
对网站的列表内容进行实时过滤与隐藏。无需刷新页面,即时隐藏不符合条件的条目。已支持 Greasy Fork,将通过规则适配更多站点。
总安装量
43
今日新增
+0
用户评分
- / 5.0 (0)
当前版本
0.0.4
脚本详情
适用网站
许可协议MIT

UTags Advanced Filter

一个在任意网站对列表型内容进行实时过滤与隐藏的工具,提供用户脚本和浏览器扩展两种版本。区别于站点自身的搜索/筛选,它在页面内直接隐藏不满足条件的条目,支持即时切换与叠加条件查看过滤后的结果。

当前已适配 Greasy Fork 的脚本列表,后续将通过“规则”适配更多站点。

screenshots

已实现功能 (Implemented Features)

UI & UX

  • 样式隔离: 使用 ShadowRoot 承载 UI,完全避免目标网站的 CSS 样式污染。
  • 悬浮面板: 筛选器 UI 以一个可拖拽的悬浮面板形式呈现,固定在页面右侧。
  • 可折叠设计: 面板可折叠为一个半透明的 SlidersHorizontal Lucide 图标,鼠标悬停时不透明。折叠状态会被持久化。
  • 优化的布局:
    • 双行结构: 顶部为标题和操作区(重置、折叠),下方为统计和总开关。
    • 安全重置: “重置”按钮默认隐藏,鼠标悬停 3 秒后才显示,且点击后有二次确认弹窗,防止误操作。
    • 主控开关: 在统计信息左侧提供一个主复选框,可一键启用/禁用所有筛选器,并在部分启用时显示为“半选”状态。
  • 统一的组件:
    • 日期预设组件: 将日期筛选(更新日期、创建日期)封装为可复用的 createDatePresetInput 组件,支持“半年/一年/两年”等预设及自定义天数。
    • 下拉菜单: 支持按 Esc 键关闭,拥有独立的边框和阴影样式。
    • 统一的复选框样式: 所有复选框使用统一的 utaf-checkbox CSS 类,增大了点击区域。

过滤能力 (Filtering) - Greasy Fork

  • 更新日期: 隐藏超过指定时间(如 N 天/月/年)未更新的脚本。
  • 创建日期:
    • 隐藏创建于指定日期之前的脚本。
    • 隐藏创建于指定日期之内的脚本。
  • 安装量:
    • 隐藏总安装量小于 N 的脚本。
    • 隐藏日安装量小于 N 的脚本。
  • 即时生效: 所有筛选条件的变更都会立即应用,并实时更新“显示/隐藏”统计。

数据与状态 (Data & State)

  • 按站点存储: 过滤设置按域名独立存储,键名格式为 utaf_{hostname}_filters,确保不同站点的配置互不干扰。
  • 首次使用检测: 通过全局状态 utaf_global_state 中的 isFirstUse 字段判断,首次在任意网站使用时,面板默认为展开状态,之后默认为折叠。
  • 性能缓存: 使用 WeakMap 缓存已解析的列表项指标(如时间戳、安装量),在重复过滤时避免重复的 DOM 查询和解析,提升性能。

安装与使用

未来规划 (Future Plans)

  • 规则引擎: 抽象统一的站点适配接口,通过外部规则配置(如 JSON)即可轻松适配新网站,而无需修改主脚本。规划中的规则将包含:
    • 站点检测: 域名、路径匹配。
    • 列表项选择器: 定义列表容器与条目。
    • 指标解析器: 如何从条目中提取更新时间、创建时间、安装量等数据。
  • 适配更多站点:
    • 论坛类: Discourse, Flarum 等。
    • 代码托管: GitHub Issues/PRs。
    • 社区: Reddit, V2EX 等。
  • 功能增强:
    • 设置同步: 提供导入/导出功能,或通过云服务同步配置。
    • 单项隐藏: 为列表中的每个项目添加独立的“隐藏”按钮,并持久化记录。

License

Copyright (c) 2025 Pipecraft. Licensed under the MIT License.