997 Commits

Author SHA1 Message Date
truewhile cd6b37c6a0 Merge pull request #35 from truewhile/feature/reading
Feature/reading
2026-10-01 21:59:11 +08:00
truewhile ce4319ec25 优化阅读功能 2026-10-01 21:57:25 +08:00
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 c84f2604ed docs(reader): 阅读(legado 书源兼容)功能实施计划 2026-09-30 14:39:51 +08:00
truewhile 1e6909ddbf 优化播放 mebox-v0.1.157 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 是一致的(剧集走服务端换链后的一跳直连可以正常解码播放),
不需要为此牺牲起播速度。
mebox-v0.1.156
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 端点,由播放器自己换链;浏览器仍走服务端换链一跳。
mebox-v0.1.155
2026-09-28 22:29:36 +08:00
truewhile bad07f7add 优化支持0.5集 mebox-v0.1.154 2026-09-27 13:52:17 +08:00
truewhile cb539afd2a 优化 mebox-v0.1.153 2026-09-27 13:04:28 +08:00
truewhile 594166f696 bug处理 mebox-v0.1.152 2026-09-25 20:30:49 +08:00
truewhile e0b07492a5 优化网页播放跳转 mebox-v0.1.151 2026-09-25 13:24:10 +08:00
truewhile 3be6978e70 优化 mebox-v0.1.150 2026-09-25 13:10:23 +08:00
truewhile 065652d758 优化 mebox-v0.1.149 2026-09-24 22:27:09 +08:00
truewhile e273b5e87d 优化 mebox-v0.1.148 2026-09-24 11:43:17 +08:00
truewhile c9c612df1b bug处理 mebox-v0.1.147 2026-09-23 23:07:01 +08:00
truewhile e2cd32af53 处理yamby继续播放bug mebox-v0.1.146 2026-09-23 22:31:09 +08:00
truewhile 28485ed429 优化 mebox-v0.1.145 2026-09-23 17:01:08 +08:00
truewhile 34ccf14cda 优化视频头尾跳过功能 mebox-v0.1.144 2026-09-23 16:07:28 +08:00
truewhile 44fde6c5a0 优化 mebox-v0.1.143 2026-09-23 13:53:50 +08:00
truewhile 94ef0116b1 添加跳过片头片尾功能 mebox-v0.1.142 2026-09-23 10:22:13 +08:00
truewhile 016c6687e9 优化起播 mebox-v0.1.141 2026-09-22 22:30:52 +08:00
truewhile b5ce4646cf 添加新功能,完善项目 mebox-v0.1.140 2026-09-22 16:22:29 +08:00
truewhile 47899284a5 优化缩略图 mebox-v0.1.139 2026-09-20 15:16:40 +08:00
truewhile c24ebe181d 优化缩略图 mebox-v0.1.138 2026-09-20 14:13:49 +08:00
truewhile 9b2b592003 优化 mebox-v0.1.137 2026-09-20 13:33:45 +08:00
truewhile 0c4668c156 优化 mebox-v0.1.136 2026-09-19 21:30:32 +08:00
truewhile 474513f18a bug处理 mebox-v0.1.135 2026-09-18 23:35:56 +08:00
truewhile 0810bfb234 bug处理 mebox-v0.1.134 2026-09-18 22:52:09 +08:00
truewhile 61a7260eaf 优化,现有bug处理 mebox-v0.1.133 2026-09-18 21:55:12 +08:00
truewhile 45f4763b0c 添加metatube部署文件 mebox-v0.1.132 2026-09-18 12:00:04 +08:00
truewhile f4f57759ce 优化移动端播放 mebox-v0.1.131 2026-09-18 11:28:33 +08:00
truewhile 6ec9adc976 优化移动端播放 mebox-v0.1.130 2026-09-18 10:09:08 +08:00
truewhile f4abdf78e2 优化在线字幕 mebox-v0.1.129 2026-09-17 23:53:22 +08:00
truewhile ae8db26c1e bug处理 mebox-v0.1.128 2026-09-17 23:20:58 +08:00
truewhile 8017e994f4 优化 mebox-v0.1.127 2026-09-17 22:57:41 +08:00
truewhile d56fb53a08 优化界面,优化多版本切换逻辑 mebox-v0.1.125 mebox-v0.1.126 2026-09-17 22:33:53 +08:00
truewhile 30ca94c79b 优化问题 mebox-v0.1.124 2026-09-17 14:17:09 +08:00
truewhile 9c1f9a6e7e bug处理 mebox-v0.1.123 2026-09-17 11:19:38 +08:00
truewhile ec7be38266 优化vr播放逻辑 mebox-v0.1.122 2026-09-17 09:22:00 +08:00
truewhile ebf791c436 优化 mebox-v0.1.121 2026-09-17 01:29:10 +08:00
truewhile 83c0b65a0b 优化360播放 mebox-v0.1.120 2026-09-17 01:08:28 +08:00
truewhile 1153fe4191 添加VR360播放功能 mebox-v0.1.119 2026-09-17 00:31:45 +08:00
truewhile 93866d169b 优化 mebox-v0.1.118 2026-09-16 23:59:38 +08:00
truewhile d283d39008 优化 mebox-v0.1.117 2026-09-16 23:36:03 +08:00
truewhile fc89d23867 优化 mebox-v0.1.116 2026-09-16 22:20:23 +08:00