Repository navigation
Releases: jiangdaolia/dlsite-best-deal
Release list
v0.6.95 读取账号信息只针对已购买页面里有的作品
已购接口返回的是「买过的所有 SKU」,里面有跨分区、已下架(404)、被 302 到主编号的旧编号和赠品;已购买作品页只列当前主编号。两边口径不同,数字当然对不上。
- 读取账号信息时多读一次已购买作品页(含翻页),之后只针对页面上真正列出的作品读元数据、算已购买
- 账号信息里的「已购买」= 页面上看到的条数;接口多出来的单列成「页面未列 N 条」,并附页面自己写的「全 N 件」和已购页读取状态
- 页面读不到(未登录、结构变化、风控)时自动退回接口全量,不会把已购买算成 0
- 「已购清单核对」优先复用已抓到的页面编号,不再重复翻页;接口全量清单仍完整保留做差集
- 更新地址不变(release 永久地址),装过一次的会自动提示
v0.6.94 实付/史低/差额三列都显示日元和人民币
- 明细表三列统一成「主行金额 + 下一行小字折算值」:1,455円 / ≈¥61.98、379円 / ≈¥16.15、+1,076円 / ≈+¥45.84
- 人民币界面下实付主行保留页面原文 ¥62.00、小字给折算日元,可以直接和页面上的数字对照
- 合计行与「多花 / 省下 / 合计差额」也双币种;复制的文本版同步成 1,455円(≈¥61.98)
- 估不出汇率时只显示日元,不留空括号
v0.6.93 更新通道定稿(真的能自动更新了)
前两版把 @updateURL 钉成了固定版本 tag,等于让脚本的更新地址永远指向自己,所以「检查更新」永远说「已是最新」——这是上两版自己造的坑,本版彻底换掉。
- updateURL/downloadURL 改为 GitHub 官方「最新 release 附件」永久地址:releases/latest/download/dl-price-tracker.user.js,内容永远指向最新一版,没有 tag 解析缓存
- 自检改成两个源都查、取更新的那个(GitHub API + jsDelivr 版本接口),任一个源被缓存成旧版都不会漏报
- 实测(2026-10-25 同一时刻):钉版本 → 0.6.92 ✓;releases/latest → 0.6.92 ✓;@latest → 0.6.87 ✗;jsDelivr data API → 0.6.90 ✗;@main → 0.6.79 ✗
- 本版请手动装一次:https://cdn.jsdelivr.net/gh/jiangdaolia/dlsite-best-deal@v0.6.93/userscript/dl-price-tracker.user.js
v0.6.92 脚本自己检查新版本
油猴的「检查更新」只会说「已是最新」,分不清是 CDN 缓存旧版还是真没新版;jsDelivr 的 @latest 实测会在不同节点返回相差好几版的文件(同时能取到 0.6.87 和 0.6.90)。所以让脚本自己查。
- 每 6 小时问一次最新版本(先 jsDelivr 版本接口,失败退 GitHub API),失败静默,不影响任何功能
- 真有新版才在右下角出一条可关闭的小提示,点「去更新」装到那一版
- 「去更新」链接钉到具体版本(@v0.6.92),不经过 tag 解析缓存,点开拿到的一定是那一版
- 本版请手动装一次:https://cdn.jsdelivr.net/gh/jiangdaolia/dlsite-best-deal@v0.6.92/userscript/dl-price-tracker.user.js
v0.6.91 修「油猴无法更新」
根因:v0.6.89/0.6.90 把 @updateURL 钉成了固定版本地址(@v0.6.90),脚本里记的更新地址永远指向那一版自己,检查更新只会看到同一版本,所以之后的版本一概收不到。
v0.6.90 差额显示人民币
- 「算算亏了多少」的「差额」列同时给出人民币:以前只写日元(+1,076円),和页面上的金额对不上,现在写成 +1,076円(下一行 ≈ +¥45.84)
- 汇总里的「多花」「省下」「合计差额」也一并折成人民币,弹窗末尾只留「1 元 ≈ N 円」的说明
- 复制的文本版同步带上人民币差额
- 更新地址已指向 @v0.6.90,装一次之后可自动更新
v0.6.89 结算列表标类型 + 更新地址改显式 tag
本版两件事
1. 结算列表标注作品类型(0.6.88 的正文)
「算算亏了多少」的明细表多了一列类型:音声、漫画、游戏、CG/插画、小说、动画、音乐、素材、工具、其他。按 DLsite 的 work_type 换算,不认识的代码原样显示(例如 ET3),不会一律塞进「其他」。
已购页本身不显示类型,类型取自商品元数据;点按钮时缓存里没有的编号会批量补一次(最多 100 条,自带 30 分钟缓存),补不到就显示 -,不影响结算。文本版同步是 编号|类型|实付|史低|差额,末尾未计入的行也标类型。
2. 更新地址改走显式版本 tag
@latest 有约 12 小时的解析缓存(purge 只清文件缓存,不清 tag 解析),所以刚发版时它还在返回上一版,脚本管理器就表现为「检查更新拿不到新版」。现在 @updateURL / @downloadURL 指向 @v0.6.89,发出即可取。
安装 / 更新
https://cdn.jsdelivr.net/gh/jiangdaolia/dlsite-best-deal@v0.6.89/userscript/dl-price-tracker.user.js
本次要手动装一次(旧地址写在已安装的脚本里),之后沿新地址自动更新;同一 @name + @namespace 会就地升级,不会多出第二份。
187 项测试全过。
v0.6.88 结算列表标注作品类型
结算列表现在会写清「这是什么东西」
「算算亏了多少」的明细表新增一列类型,直接标出音声、漫画、游戏等,光看 RJ 编号分不清买的是音频还是漫画。
映射的是 DLsite 自己的 work_type:
| 代码 | 显示 |
|---|---|
| SOU | 音声 |
| MNG | 漫画 |
| GAM | 游戏 |
| ICG | CG/插画 |
| NRE | 小说 |
| ACN | 动画 |
| MUS | 音乐 |
| IMT | 素材 |
| TOL | 工具 |
| ETC | 其他 |
不认识的代码原样显示(例如 ET3),不会静默变成「其他」。
数据从哪来
已购页本身不显示类型,类型取自商品元数据(作品信息接口里的 work_type)。点按钮时,缓存里没有类型的编号会批量补一次(最多 100 条,本身带 30 分钟缓存);补不到就显示-,不影响结算。
文本版同步改成编号|类型|实付|史低|差额,末尾「无史低 / 价格未解析」的未计入行也一并标类型。
更新
https://cdn.jsdelivr.net/gh/jiangdaolia/dlsite-best-deal@latest/userscript/dl-price-tracker.user.js
187 项测试全过。
v0.6.87 史低改回价格(含税)列
你说得对:史低本来就该在「价格(含税)」列
之前挂错列不是样式问题,是列号算错了。
旧代码只按表头文字找「価格 / 价格」在第几列,然后用这个列号去取每一行的单元格。DLsite 已购页的表头和数据的列序并不一致(表头里价格排在支付方式前面,数据行里支付方式排在价格前面),于是整体错开一格:史低标签被追加到「支付方式」列,价格列永远是空的,看起来就是「价格列没解析出金额」。
改法
- 价格格逐行判断,不再只信表头列号:每一行挑出「这一格真的有金额」的那一格。表头列号只用来在多个候选之间决定优先级。
- 列号本身也改双判定:表头标签 + 「这一列有多少行真能解析出金额」,覆盖更全的列胜出。
- 带币种的金额优先;
1,980、62.00这种裸数字只在「整格就是一个短数字」时才认,支付方式和日期不会被当成价格。 算算亏了多少按钮同样按表头里匹配価格 / 价格 / 價格 / 料金 / price的那一格挂;之前挂到别处的工具栏会被自动搬回价格列。- 解析失败时的诊断块现在会把表头各列的标题和前两行整行各列原文一起打出来,列序再错位也能一眼看出金额在第几列。
更新
https://cdn.jsdelivr.net/gh/jiangdaolia/dlsite-best-deal@latest/userscript/dl-price-tracker.user.js
装好后刷新一次已购页(旧标签是上一版注入的 DOM,刷新才会清掉),再点算算亏了多少。186 项测试全过,新增 3 条覆盖「列序错位」「工具栏落点」「裸数字识别」。
v0.6.86 修正史低结算口径:表格与合计现在一定对得上
你看到的「表格和合计对不上」,是两个真 bug
1. 金额口径:表格里的数和汇总用的数不是同一个
旧版把实付/史低按浮点数累加,表格里却是各自四舍五入后再显示。人民币价格要折算,会算出 1455.39 这种小数,于是你把「差额」列加起来,和「合计差额」差几円——表格和汇总各算一遍,永远对不上。
现在:实付和史低先取整成整数円,再逐行相减、逐行累加。表格里显示的数就是参与计算的数,差额列加起来必然等于合计差额。弹窗底部还会写出自检结果,不一致就直接标红。
2. 二次解析被污染:标签被当成了实付价
点过按钮后,价格格里会追加 史低379 JPY / 16.16 RMB。弹窗为了刷新数据会再解析一次这一格,而解析规则是「取最后一个金额」——于是 379 被当成了你实付的价格,那一行的差额直接变成 0。页面上写着「史低 379」,弹窗里却显示「持平」,就是这么来的。
现在把价格原文记在行属性上(data-dltracker-purchased-raw),解析只读原文;另有兜底逻辑按子节点剔除标签文本。
顺带修的两处
- 明细表不再静默丢行:没读到史低、价格没解析出来的作品,以前直接不显示(页面 39 行、表格只 30 行)。现在排在表格末尾并标
未计入,所以本页 = 计入 + 未计入,行数一定对得上。 - 实付列显示原币:人民币界面会写成
¥62.00 ≈ 1,455円,可以直接和页面上的数字对照。汇率从「取第一条商品比值」改成多条商品比值的中位数(限定 1 元兑 7~40 円),一条早期缓存不会再带偏整页折算;汇总里也写出「1 元 ≈ N 円」。
更新
https://cdn.jsdelivr.net/gh/jiangdaolia/dlsite-best-deal@latest/userscript/dl-price-tracker.user.js
183 项测试全过(新增 3 条:标签污染、差额列之和等于合计、文本版含未计入行)。