Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Custom User JS Scripts

这个仓库存放可直接安装到 Tampermonkey、Violentmonkey、Greasemonkey 等脚本管理器的浏览器 userscript,也包含少量本地辅助工具。

可安装脚本

脚本 适用页面 用途 安装入口
Web Page Assistant / 网页助手 *://*/* 管理网页自动刷新,并可按需解除复制、选择、右键菜单、拖拽和离开确认限制。 dist/web-page-assistant.user.js
Codex Quota Compass https://chatgpt.com/* 查看 Codex 用量、保存本地快照、远程同步、导出 / 导入用量归档。 dist/codex-quota-compass.user.js
JavDB Recommend Archive / JavDB 佳片推荐 · 历史期数 https://javdb.com/* 等 在 JavDB 导航栏加入「佳片推荐」入口,打开独立页面浏览全部历史期数(每周一/四更新),支持翻期、搜索与全期关键词搜索。 javdb-recommend.user.js
Feishu Preview Image Export https://mi.feishu.cn/file/* 从飞书文件预览页导出当前最大可见图片。 feishu-preview-image-export.user.js

安装方式:

  1. 安装一个 userscript 管理器,例如 Tampermonkey、Violentmonkey 或 Greasemonkey。
  2. 打开上表里的 .user.js 文件。
  3. 在 GitHub 文件页点 Raw,或把脚本内容复制到脚本管理器的新建脚本里。
  4. 安装前检查脚本管理器提示的 @match 和 @grant 是否符合预期。

更完整的安装列表和迁移说明见 docs/scripts/installable-userscripts.md。

Web Page Assistant / 网页助手

网页助手是一个通用网页辅助脚本;页面右下角常驻浮动控件,有匹配的刷新规则时显示倒计时,未启用刷新时显示可打开设置的圆钮。设置也可经脚本管理器菜单打开,配置支持“当前页面”和“整个站点”两个范围。

主要能力:

  • 自动刷新:为当前页面或整个站点设置刷新间隔,支持预设时间和自定义时间。
  • 刷新控制:浮动控件显示倒计时,可暂停、继续或删除当前刷新规则。
  • 网页限制解除:可按需允许文本选择、复制 / 剪切、右键菜单、拖拽,并可抑制离开页面确认。
  • 持久设置:优先使用 userscript manager storage;运行环境不支持时回退到页面 localStorage。

使用注意:

  • 脚本运行范围是 *://*/*,安装时会看到较宽的授权提示;不需要时可以在脚本管理器里禁用。
  • “限制解除”只影响浏览器页面事件,不绕过登录、权限、付费墙或服务端限制。
  • 安装入口是 dist/ 下打包好的单文件;src/ 目录下的 *.entry.ts 与 *.lib.ts(x) 是 TypeScript 模块源码,不能直接安装。

Codex Quota Compass

Codex Quota Compass 运行在 chatgpt.com,通过悬浮按钮或 userscript 菜单命令读取当前 Codex 用量并保存历史。

它会把每次成功运行的结果保存为一条 Quota Snapshot,并维护本地 Snapshot Archive。面板还会展示按模型汇总、可用重置券,以及由 Cost Ledger 派生的日 / 周 / 月 / 全量已结算消耗视图。脚本管理器的 WebDAV 同步只能保证脚本代码和管理器设置同步,不作为 Codex 用量历史的可靠跨设备通道。

跨设备自动同步走 GitHub Gist:用户配置自己的 GitHub token 后,脚本会在用户自己的 GitHub 账号里查找或创建一个 secret gist,并把 Snapshot Archive 保存为 JSON 文件。不同设备使用同一个 GitHub 账号和 token 后,会按 Snapshot ID 合并归档。你也可以从面板导出完整归档,或通过 userscript 菜单导出 / 导入 JSON,作为手动备份或迁移路径。

注意事项:

  • 归档里保存的是经过整理的用量信息,不保存 Cookie、Token 或原始私有接口响应。
  • 导入是 merge 语义,会跳过重复快照,不会覆盖整个本地归档。
  • GitHub token 保存在脚本管理器存储中,不写入仓库;建议使用 fine-grained token,并只授予 Gists read/write 权限。
  • Gist 使用 public: false 创建,是 unlisted secret gist,不应保存 Cookie、Token 或其他真正敏感信息。
  • 本地归档优先保存在 GM storage,同时在当前页面的 localStorage 保留一份非敏感镜像;读取时会合并两端,GM storage 不可用时则直接使用该镜像。Gist 同步设置和 token 只保存在 GM storage 中,不会写入页面存储;仅有 localStorage 时不能启用 Gist 同步。

Gist 同步设置说明见 docs/scripts/codex-quota-gist-sync.md。

领域词汇见 GLOSSARY.md。

Feishu Preview Image Export

Feishu Preview Image Export 运行在飞书文件预览页,用 userscript 菜单命令从当前页面找最大的可见图片并下载。它适合处理飞书文件页里“预览图可见但原图入口不好找”的场景。

本仓库还提供两个本地浏览器工具:

  • scripts/browser-tools/login-qr.mjs:默认适配小米飞书,也可配置其他网站;导出登录二维码并保存浏览器登录态。
  • scripts/browser-tools/export-image.mjs:使用已有登录态打开飞书文件页并导出当前最大可见图片。

使用说明见 docs/scripts/feishu-tools.md。

JavDB Recommend Archive / JavDB 佳片推荐 · 历史期数

安装入口为 dist/javdb-recommend.user.js;旧 src 安装地址保留逐字节相同的完整 Bridge File。源码由 Entry、数据、请求、Period Section、Site Chrome 及展示 Lib Module 组成。

JavDB Recommend Archive 运行在 JavDB 官网(javdb.com 及 javdb575.com、javdb.today 等镜像域名),在顶部导航栏加入「佳片推荐」入口,点击打开独立页面 /recommend-archive 浏览「佳片推荐」栏目的全部历史期数。归档页从官网首页动态发现样式表与导航;资源在 12 秒内全部加载并通过基础计算样式检查后才启用官网外观,否则使用完整内置样式:

  • 瀑布流浏览:从上次浏览的期数开始按期流式渲染,期数选择框同步显示恢复的期数;可选择最新一期直接跳转。滚动到底自动加载更早的期数;相邻未加载期会沿当前流追加,远距离或反向跳转则直接以目标期重建流,不再请求中间期,并记住浏览位置。刷新期数与清缓存均保留浏览位置。
  • 影片列表:横版封面完整显示(不裁切),卡片展示番号、评分与发售日期,点击直达官网影片详情页。
  • 多脚本适配:若其他 JavDB 增强脚本接管影片列表,后续未接管列表会同步其实际列数、间距和封面模式;列表后来被接管时会释放本脚本复制的 inline 值。兼容范围按 Tampermonkey 与 JAV老司机-新 2.8.4.8 的公开 DOM 表现核对,不依赖第三方内部函数。
  • 本地缓存:期数目录缓存 6 小时,过期后从最新页读取到首个已知期即停止并复用历史尾部,每 30 天做一次完整校验;最新一期详情缓存 2 小时,历史详情缓存 30 天,逐期存入页面 IndexedDB,并最多保留最近使用的 48 期。全期搜索使用独立的紧凑索引,不挤占浏览缓存,首次补全后同一目录可纯本地搜索。
  • 性能与韧性:搜索结果按期增量追加,屏外期区块延迟渲染,内存详情按最近使用保留 24 期(分代淘汰,最多暂留 48 期);详情请求按期单飞并按消费者取消,超时或可重试错误最多尝试 3 次。工具栏可手动刷新期数或清除本脚本缓存。
  • 搜索:已加载内容即时过滤,以及全期关键词搜索(逐期扫描、可随时停止)。
  • 数据来自官网自身的 /api/v1/movies/recommend_periods 与 /api/v1/movies/recommend 接口(同域请求,无需额外授权);封面统一改写为官网页面使用的 c0.jdbstatic.com 图床(接口默认返回 App 图床,网页端常被拦截)。

脚本无需登录即可使用;@grant none,不使用任何脚本管理器特权 API,以页面 localStorage 保存上次浏览期数、期数目录与搜索索引,以页面 IndexedDB 保存期详情缓存,均为非敏感数据;旧版存于 localStorage 的详情缓存会在启动时清除。已配置 @downloadURL / @updateURL,推送新版本后脚本管理器会自动检查更新。

仓库结构

.
├── dist/                 # 打包产物:多模块脚本的单文件安装入口(构建生成并提交)
├── docs/                 # 脚本说明、运行手册和项目约定
├── scripts/              # 本地辅助脚本与构建脚本
├── src/userscripts/      # userscript 源码(ESM entry + lib 模块,或单文件脚本)
└── test/                 # Node 测试

开发与验证

日常开发与 CI 使用 .node-version 指定的 Node.js 24 LTS。最低兼容版本为 Node.js 22.18 (scripts/browser-tools/export-image.mjs 直接导入 src/ 下的 .ts 模块,依赖 Node 默认开启的类型擦除)。

npm ci
npm run test:prepare # 项目锁定的 Playwright CLI 安装对应 Chromium 和系统依赖
npm run verify      # 一次构建、产物一致性、metadata lint、tsc 类型检查、ESLint、全部测试

npm run lint 与 npm test 可独立运行,会先自动构建;npm run lint 依次跑 metadata 检查、tsc(strict,只做类型检查)与 ESLint,单独类型检查用 npm run typecheck。 src/ 源码是 TypeScript:类型由 esbuild 擦除,影响产出的编译选项固定在 scripts/lib/jsx-build-options.mjs,tsconfig.json 只管类型检查,收紧类型不会改变安装产物。完整入口要求所有测试通过, 并核对五项浏览器验收的稳定名称和文件;缺失、跳过或过滤掉必需用例都会失败。 项目在 package.json devDependencies 精确锁定 Playwright,测试脚本从那里读取版本;测试只加载本项目依赖和该版本的默认 Chromium, 缺依赖或浏览器直接报错。日常 browser-tools 的兼容加载器优先使用项目依赖,其次读取本机 npm 缓存。 聚焦调试使用 node --import ./scripts/jsx-loader.mjs --test test/<name>.test.mjs(加载器让测试直接导入 .ts/.tsx 源码);它不代表完整验收。 原生 JSON 报告、准备时间和人工验收边界见 测试说明。

提交前运行 scripts/format.sh:prettier(版本锁在 package.json devDependencies)重排 JS/TS、Markdown、YAML 与 JSON,shfmt(脚本内固定版本与 sha256)重排 Shell; scripts/format.sh --check 只检查,npm run verify 的检查阶段会运行它,格式不一致即失败。dist/、src/ 下与 dist 逐字节相同的桥接文件、 package-lock.json 是生成物或锁文件,不参与重排。 纯格式重排提交登记在 .git-blame-ignore-revs,本地可用 git config blame.ignoreRevsFile .git-blame-ignore-revs 让 blame 跳过它们。

脚本的 raw @downloadURL / @updateURL 直接读取 master,因此合并带新 @version 的提交就是外部发布。修改版本前先运行 git fetch origin master 刷新基线,再运行 node scripts/version-plan.mjs plan --target '<安装身份>=<目标版本>'(多个目标重复传参), 在不写文件的情况下查看全部可安装脚本从 origin/master 基线到目标版本的完整计划。 目标版本按 PRODUCT.md「Version Policy」:默认 patch;minor(有用户能感知的新能力) 与 major(含 0.x→1.0)须先经维护者确认。改 metadata、 重建后用全局 land --no-recut 命令推候选。 CI 在候选上按当时的 origin/master 基线校验版本计划;master 在合入前前进时, land --no-recut 停止。先变基或更新候选并重新验证,再通过同一 SHA 的提交门禁后合入。 首次发版、基线未知、脚本集合不完整、孤立 dist、降级或生成副本版本不一致 都会暂停;其余递增直接通过。

发版候选在任务分支上递增版本并重建产物,然后用 land --no-recut 推成 candidate/** 分支:CI 在候选上运行,ci-ok 通过后 land --no-recut 把 master 快进到该同一提交。master 的 ruleset 要求每个提交都带绿色 ci-ok 检查并禁止非快进,因此没有「先推再看 CI」的路径,也无需 pull request。 已进入 master 的版本视为不可变,后续修复使用下一个 patch。若维护者明确选择 暂不发版,可以不递增版本,但已安装脚本也不会自动获得这次变更。

新建脚本可从 src/userscripts/example/example.user.js 开始,并参考 docs/script-template.md。有注入 UI 的脚本先看 DESIGN.md。

文档入口

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages