UTags Advanced Filter

建立於 1 天前
更新於 1 天前
Real-time filters for list items on any website. Hides items that don't match your criteria, without reloading the page. Supports Greasy Fork and will support more sites via rules.
總安裝量
43
今日新增
+34
使用者評分
- / 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.