truewhile
c1ff55ffbf
开发
2026-09-30 19:22:24 +08:00
truewhile
fa41936095
feat(reader): P3+P4——音频源与漫画/图片源全链路支持
...
后端:
- /api/reader/media 签名媒体代理:HMAC-SHA256(jwtSecret, bookID|url) 防开放
中转滥用;免 JWT(audio/img 元素带不了头)但需有效签名+书籍存在
- 携书源级请求头与 Referer(防盗链)、Range 透传(音频拖动进度 206)、
m3u8 播放列表分片/密钥地址改写为签名代理(hls.js 无感续播)
- 音频/图片地址按最终页面 URL 绝对化,imageStyle 透传;
GetContentForBook 将 tracks/images 统一改写为代理地址
前端:
- ReaderAudioPanel(仿 ReadAloudDialog):hls.js 播 m3u8 / <audio> 直链,
上一章/播放暂停/下一章、进度条拖动、倍速 0.75–2x、按秒记忆进度、
播完自动下一章、点背景呼出菜单
- ReaderComic:上下滚动 / 左右单页双模式(复用翻页/滚动切换)、
图片懒加载+失败占位、滚动模式左右点击滚屏/中间呼菜单、
单页模式点击区翻页、菜单进度条按图片序号、按图片序号记忆进度
- 菜单进度条按内容类型适配(文本页/音频章节/漫画图片序号)
2026-09-30 17:12:16 +08:00
truewhile
9cc21a47c5
feat(reader): P2 收尾——冒烟 CLI、书架正文链路、替换净化规则
...
- SmokeChain 结构化全链路冒烟(搜索→详情→目录→正文,分阶段失败定位),
SmokeSource 支持不落库直测;Debug 接口改为结构化日志输出
- cmd/reader-smoke:批量书源冒烟 CLI(-file/-url 导入、并发、
各阶段通过率汇总、-json 完整报告)
- GetContentForBook:书架维度正文(章节缓存 + 书源 replaceRegex +
用户替换净化规则),前端阅读器切换到该接口
- 替换净化规则 CRUD(后端 + /reader/replace 前端页),用户规则
按 scope/excludeScope 书名过滤、正则带匹配超时防回溯挂死
- rule.ApplyUserReplace 导出(regexp2 MatchTimeout)
2026-09-30 16:55:52 +08:00
truewhile
5976a8d310
feat(reader): P2——goja JS 引擎接入 + Go 原生 java.* 桥接
...
- rule/goja.go:纯 Go JS 运行时(goja),脚本编译缓存 + 超时中断(默认10s),
绑定集合对齐 legado evalJS(java/cookie/cache/source/book/result/baseUrl/
chapter/title/src/page/key)
- rule/bridge.go:java 对象函数名与 legado JsExtensions 一一对应(存量书源
硬编码这些名字),全部 Go 原生实现:
网络 ajax/ajaxAll/connect/get/post/head(经 MeBox HTTP 客户端,响应对象
带 body()/code()/url()/header());规则回调 getString/getStringList/
getElements/put/get(桥回当前解析器);编解码 base64/hex/md5(16/32)/
digest/HMac/encodeURI/timeFormat(SimpleDateFormat 转 Go 布局)
- 对称加密:createSymmetricCrypto + aes/des/3des 全家桶,transformation
三段式解析(AES/DES/3DES × CBC/ECB/CTR/OFB/CFB × PKCS5/7/Zero/NoPadding,
ECB 手工块循环),密钥长度自动补齐,decryptStr 自动识别 Base64/Hex
- get(url,headers) 与 get(key) 按 arity 分发(对齐 Kotlin 重载)
- 浏览器/文件/压缩包类函数明确抛不支持(服务端沙箱边界)
- URL 规则 JS:analyzeJs(@result 链式)、{{js}} 内嵌、option js/bodyJs
- execute 记录 Set-Cookie 进 cookie jar(java/cookie.getCookie 可读)
- 测试:编码/摘要/AES 向量/CBC+ECB 往返/ajax httptest/URL JS/沙箱边界,
全部通过;修复 java.get 双注册、测试缺 SetContent 与 md5Encode16 期望值
2026-09-30 16:36:32 +08:00
truewhile
d0b4255aa8
feat(reader): P1 前端——首页影视/阅读切换 + 书架/搜索/书源/详情/阅读器
...
- 首页顶部「影视/阅读」分段切换(zustand 持久化,阅读模式直渲染书架)
- /reader/* 独立全屏路由(不套影视 Layout):
书架(响应式网格 3→8 列)、搜索页(结果流+失败书源明细)、
书源管理(导入/启停/删除/快速调试日志)、详情页(目录+加书架)
- 阅读器仿 legado ReadMenu:6 套内置主题(日/夜色值对齐 readConfig.json)、
CSS 多栏分页 + 平移翻页/滚动双模式、三区点击 + 键盘翻页(桌面)、
上下章、目录抽屉(Virtuoso 虚拟滚动)、字号/行距/段距调节、
进度记忆(服务端同步 + 下一章预取)
- 桌面兼容:内容列 900px 限宽居中、鼠标悬停态、键盘快捷键
- 后端:详情/目录/正文接口支持 source_url 定位书源(书架链路)
2026-09-30 16:07:28 +08:00
truewhile
b8e6418326
feat(reader): legado 书源规则引擎 Go 移植 + 阅读 P0 后端
...
- internal/service/reader/rule/:逐方法移植 legado analyzeRule 包
(AnalyzeRule/AnalyzeByJSoup/AnalyzeByJSonPath/AnalyzeByXPath/
AnalyzeByRegex/AnalyzeUrl/RuleAnalyzer),JS 规则留 P2 接入点
- 书源导入(JSON数组/对象/Base64/URL)、多源聚合搜索(legado 四档
排序合并)、详情/目录/正文(nextContentUrl 翻页合并)
- 数据模型 4 表注册迁移;/api/reader/* 路由组(书源/搜索/书架/进度/调试)
- 单测 + httptest 全链路端到端测试
- docs/reader-ui-spec.md:legado UI 交互仿制规格(供 P1 前端使用)
2026-09-30 15:41:58 +08:00
truewhile
1e6909ddbf
优化播放
2026-09-30 11:20:27 +08:00
truewhile
8136e6ecb1
fix(emby): 电影条目不下发空的 SeasonId/SeriesId,修复小幻影视起播失败
...
小幻影视(RodelPlayer)2.2610 会把电影条目的 SeasonId 空串原样传进自己的
播放准备逻辑并抛 ArgumentException(Parameter 'seasonId'),客户端日志里
表现为 failedStage=PreparationFailed、playback generation null,也就是
点播放立刻「播放失败」;剧集条目的 SeasonId 非空,所以同一台设备放剧集正常。
Emby/Jellyfin 对「不适用」的字段是直接不下发(JSON 里没有该键)而不是下发空串。
这里对非剧集条目省略 SeasonId/SeriesId/SeasonName/SeriesName(顺带去掉电影被
标成「特别篇」的 SeasonName),剧集则保留真实季/剧信息、只清空值。
同时回退上一版针对 115 直链 UA 绑定的同源一跳改动:客户端日志显示该客户端的
播放器层与 API 层 UA 是一致的(剧集走服务端换链后的一跳直连可以正常解码播放),
不需要为此牺牲起播速度。
2026-09-28 22:51:40 +08:00
truewhile
1d73374fff
fix(emby): 网盘直链绑定 UA,第三方播放器保留同源一跳
...
115 直链与换取时的 User-Agent 逐字符绑定,换错一律 403。服务端换链用的是邮件客户端 API 层的 UA,而真正拉流的是播放器组件,RodelPlayer 2.2610 两层 UA 不一致(API 层带系统后缀)后会拿到 403 直链,表现为播放失败。非浏览器客户端改为 302 到同源 strm 端点,由播放器自己换链;浏览器仍走服务端换链一跳。
2026-09-28 22:29:36 +08:00
truewhile
bad07f7add
优化支持0.5集
2026-09-27 13:52:17 +08:00
truewhile
cb539afd2a
优化
2026-09-27 13:04:28 +08:00
truewhile
065652d758
优化
2026-09-24 22:27:09 +08:00
truewhile
e273b5e87d
优化
2026-09-24 11:43:17 +08:00
truewhile
c9c612df1b
bug处理
2026-09-23 23:07:01 +08:00
truewhile
e2cd32af53
处理yamby继续播放bug
2026-09-23 22:31:09 +08:00
truewhile
28485ed429
优化
2026-09-23 17:01:08 +08:00
truewhile
34ccf14cda
优化视频头尾跳过功能
2026-09-23 16:07:28 +08:00
truewhile
44fde6c5a0
优化
2026-09-23 13:53:50 +08:00
truewhile
94ef0116b1
添加跳过片头片尾功能
2026-09-23 10:22:13 +08:00
truewhile
016c6687e9
优化起播
2026-09-22 22:30:52 +08:00
truewhile
b5ce4646cf
添加新功能,完善项目
2026-09-22 16:22:29 +08:00
truewhile
47899284a5
优化缩略图
2026-09-20 15:16:40 +08:00
truewhile
c24ebe181d
优化缩略图
2026-09-20 14:13:49 +08:00
truewhile
9b2b592003
优化
2026-09-20 13:33:45 +08:00
truewhile
61a7260eaf
优化,现有bug处理
2026-09-18 21:55:12 +08:00
truewhile
f4abdf78e2
优化在线字幕
2026-09-17 23:53:22 +08:00
truewhile
d56fb53a08
优化界面,优化多版本切换逻辑
2026-09-17 22:33:53 +08:00
truewhile
ec7be38266
优化vr播放逻辑
2026-09-17 09:22:00 +08:00
truewhile
ebf791c436
优化
2026-09-17 01:29:10 +08:00
truewhile
83c0b65a0b
优化360播放
2026-09-17 01:08:28 +08:00
truewhile
93866d169b
优化
2026-09-16 23:59:38 +08:00
truewhile
d283d39008
优化
2026-09-16 23:36:03 +08:00
truewhile
cbfae0252e
t添加标签功能
2026-09-16 12:30:34 +08:00
truewhile
57ee482146
优化
2026-09-15 23:13:31 +08:00
truewhile
83deffcf45
修复
2026-09-15 15:21:43 +08:00
truewhile
a563ee11d6
优化,添加滚动记忆
2026-09-15 00:00:35 +08:00
truewhile
fa4c90d47a
bug处理
2026-09-14 21:40:13 +08:00
truewhile
1ec8303fec
bug处理
2026-09-14 21:16:34 +08:00
truewhile
b28c0d9247
添加115云端解码功能
2026-09-14 17:57:51 +08:00
truewhile
91c6d9dfd9
处理token刷新失败bug
2026-09-14 16:47:44 +08:00
truewhile
3aa8662c45
优化,日志脱敏
2026-09-14 15:12:42 +08:00
truewhile
5c85478883
1
2026-09-14 12:33:59 +08:00
truewhile
fd54d42db7
优化
2026-09-14 00:02:46 +08:00
truewhile
4595b7c5be
优化
2026-09-13 23:45:21 +08:00
truewhile
ee3927cdf1
优化
2026-09-13 23:39:07 +08:00
truewhile
b7f1cd85f8
支持按用户保存播放器与弹幕偏好
...
在 user 记录上新增播放器音量、弹幕开关、透明度、字号、显示区域、合并偏好、自定义弹幕源以及 dandanplay 应用凭据字段,并提供 PUT /danmaku/settings 局部更新接口,带取值校验。
返回脱敏后的完整渲染配置,绝不回传应用密钥,仅在响应中标记密钥是否已配置。
结果缓存键加入用户 ID 与凭据指纹,避免不同用户或凭据串用缓存;旧版实例级设置仅作为未登录与迁移期的回退。
2026-09-13 23:01:43 +08:00
truewhile
be9d3a6d9e
优化
2026-09-13 22:00:50 +08:00
truewhile
b8e48a1f45
优化
2026-09-13 21:23:06 +08:00
truewhile
9a68ef701f
重构核心模块并同步更新项目配置与相关实现
2026-09-13 20:36:14 +08:00
truewhile
386fc358d1
Add configurable memory limits and LRU eviction for runtime cache
2026-09-13 00:41:04 +08:00