Joftal
78c6336c93
feat(live/douyu,servers,configs,webapp): 斗鱼 cookie 后台自动续期(LTP0 + safeAuth 换票)
...
主站 acf_* 登录 cookie 实测仅约 6 天有效(Set-Cookie Max-Age=529200s),过期后取流降级、
弹幕登录失败且只能重新扫码。本功能用 passport 域的长期票据 LTP0 走 safeAuth 换票链自动续命。
- configs: 新增 douyu_auth(LTP0/DyDid/续期日程);Marshal 改 temp+fsync+rename 原子写并 Chmod 0600,
rename 或建临时文件失败才回退原地写(Docker 单文件挂载场景);cookie 域名别名(douyu.com/m.douyu.com)
入库统一归一到 www.douyu.com;写盘前从 cookie 串剥离 LTP0;凭证三处出口全部掩码
(/api/config 走 json:"-"、raw-config 走 __BILILIVE_DOUYU_SECRET_HIDDEN__、debug 转储走 CloneForLog)
- live/douyu/refresh.go: 手动逐跳跟随 302 累积 Set-Cookie(8 跳上限、跳过空值),
只放行 https 且 *.douyu.com 的跳点(douyu.com.evil.com、裸 http、片段藏域名一律拒绝),
终点必须 200 且 follow/top3 探针返回 error=0 才算成功;非 200 归为临时错误、缺必需字段才判失效;
字段级合并 + 设备号策略(dy_did/acf_did/acf_devid 复用旧值),合并结果按字段名有序写回避免无意义配置 diff
- 阈值调度:3d 到点续期、临时失败 6h 退避、判失效 24h、连败 6d 升档;cookie 确凿过期前不发取流请求
- servers/douyu_keeper.go: 30s 首检 + 每小时廉价检查,仅在存有 LTP0 时真正换票;
续期结果只在 CAS 闭包内合并并校验 LTP0 归属(旧票据的迟到结果直接作废);
失效只置 need_rescan 不清 LTP0,告警按 LTP0 去重且推送走独立 goroutine 不阻塞续期循环
- servers/handler.go: raw-config 区分"该节未提交"与"显式清空"、按 acf_uid 判换号、带锁提交并支持版本冲突重试;
putLiveHostCookie 不误清长期票据;新增 GET /api/douyu/auth/status 供前端显示登录态与下次续期时间;
B 站 pollBilibiliQRCode 保留上游原有字段(不再因结构体重序列化丢 refresh_token)并把 Set-Cookie
登录字段拼进 data.cookies
- notify: 新增 SendSystemAlert,斗鱼需重新扫码时按已配渠道推送
- cmd/bililive: 启动 keeper 且不依赖 Web RPC 是否启用,保证无界面后台长期保活
- webapp: 斗鱼面板显示登录态/续期日程并做轮询会话隔离,房间列表标记登录态;
B 站扫码成功后回填 cookie 并提示未落盘的后果
- 测试:新增 6 个文件覆盖换票链分类、失效与退避升档、掩码出口、原子写与回退、别名归一、设备号复用
(全部 httptest/合成值,不触网、不含真实凭证)
- go.mod: google/uuid 由 indirect 归位为 direct(handler 直接引用)
实测记录:真机换票链有效态 302→200 JSONP+17 个 Set-Cookie、垃圾票据态 200 JSONP+零 cookie;
临时实例 30s 首检续期成功并热应用后,斗鱼原画以 60fps 连续录制跨过 5 分钟分段;
垃圾 LTP0 走 need_rescan + 5.99h 退避,原 cookie 与票据均未被破坏。
2026-09-25 20:45:43 +08:00
kira1928
c0c7ecfc33
更新 remotetools 至 v0.3.6
2026-07-26 21:09:44 +09:00
kira1928
94f8df3e00
保留远端文件尺寸查询兼容性
2026-07-26 19:20:01 +09:00
kira1928
4da0eeb422
修复外部工具页面加载失败
2026-07-26 01:44:18 +09:00
Joftal
1026f95e3c
feat:将blivedm-go库实现改成本地实现的B站弹幕录制功能,引入重启逻辑等等
2026-06-09 14:12:11 +08:00
Joftal
fa78e9d58e
add:接入抖音弹幕功能,并优化部分弹幕设置界面交互
2026-05-07 10:56:16 +08:00
Joftal
d9ca4a8843
add:哔哩弹幕组件上传
2026-04-28 13:02:35 +08:00
kira1928
3d73e8d70a
新增录制时自动解析实际分辨率显示在webui;添加直播流 url 和 header 信息到 webui;修复统计界面的部分bug
2026-02-20 04:15:10 +09:00
kira1928
4c0d2fa6b6
完善自动更新功能 ( #1073 )
...
* 完善自动更新功能
* 修复 CI error
* 根据review意见更新代码
* 修复e2e CI
2026-02-18 02:19:53 +09:00
15b0b12777
0.8.0/dev ( #1061 )
...
* Initial plan
* Initial plan for hierarchical configuration system
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* Implement hierarchical configuration system with platform and room-level overrides
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* Add config validation, platform key mapping, and hierarchical config example
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* Add enhanced GUI configuration interface with hierarchical config support
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* Complete implementation with documentation and working web UI demo
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* 根据反馈完善层级配置系统:移除二进制文件,更新中文界面,支持所有直播平台
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* 改进配置界面:添加YAML解析库,输出模板预览和详细工具提示
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* 完善监控列表界面:增加直播间详细信息展开功能
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* 修复后端API支持和前端功能,添加日志查看功能
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* 修复前端编译错误,调整优化package.json
* 实现真实的层级配置系统:添加日志存储,解析配置,更新所有组件使用解析后配置
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* 实现层级配置系统:支持平台级设置、中文GUI界面、监控详情展示和真实数据后端
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* 实现真实的平台访问频率限制功能
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* 为所有主要直播平台添加访问频率限制支持
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* 完成层级配置系统:平台访问频率限制功能全面实现
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* 实现层级配置系统:支持平台级设置、中文GUI界面、监控详情展示、真实数据后端和统一访问频率限制
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* 修复CI lint错误:添加webapp默认构建文件
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* feat: 新增ntfy通知功能
* feat: 添加停止录制时的ntfy推送通知
* 优化ntfy推送通知
* Update src/notify/ntfy/ntfy.go
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
* fix test error
* 为每个直播间分别保留一组直播间自己的log信息,供前端取用。
前端监控列表的详细信息现在由SSE实时更新。
为详情页面的日志增加了一些便利功能。
* 升级antd v3 -> v6
* 升级 react-router-dom v5-> v6
* 优化层级设置UI,访问频率限制逻辑等
* code refine
* fix CI error
* Fix CI error
* Fix CI error
* Fix "Component state update uses potentially inconsistent value" issue
* 根据代码review修复问题:替换废弃方法,添加null检查,修复state更新和变量使用
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* 修复CI编译错误:添加default构建文件并修正handler.go中的变量引用
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* Initial plan
* Implement real-time countdown for next GetInfo request
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* Add real-time download speed display for recording streams
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* Fix setState callbacks to return prevState instead of null
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* Use safe type assertion for RecorderManager to prevent panic
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* Address PR review comments: add periodic SSE broadcast, fix optional chaining, cleanup memory leaks
- Add periodic (3s) broadcast of recorder status via SSE for real-time download speed updates
- Use optional chaining (?.) for safer recorder_status.speed access
- Remove redundant nil check for recorder in GetRecorder
- Clean up countdownTimers state when rows are collapsed to prevent memory leak
- Use Math.ceil() for countdown initialization to avoid premature "available" display
- Set up broadcast callback in server initialization to avoid circular dependencies
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* Fix race condition and improve comments in status broadcaster
- Add sync.WaitGroup to ensure broadcaster goroutine exits cleanly
- Update comments to reflect callback-based implementation
- Ensure proper cleanup sequence in Close() method
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* Improve error handling in recorder status retrieval
- Add warning log when GetStatus() fails for better observability
- Simplify logic by assigning status regardless of nil value
- Helps with debugging recorder status issues
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* Improve countdown display and download speed formatting
- Add SSE list threshold config (default 50 rooms) in RPC settings
- Change download speed format from "0.562x" to "MB/s" or "KB/s" based on bitrate
- Update recorder status broadcast interval from 3s to 5s
- Fix countdown display: use "距离下次刷新" instead of "距下次GetInfo请求"
- Change "立即可用" to "正在刷新" for better UX
- Implement auto-calibrating countdown that adjusts with SSE updates
- Track last update times to maintain accurate countdown state
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* Add list-level SSE subscription with configurable threshold
- Enable SSE for live room list by default when room count < threshold
- Automatically switch to detail-only SSE when list exceeds threshold
- Update SSE subscription strategy dynamically when rooms added/removed
- Wildcard SSE subscription ('*') receives all live_update events
- List refreshes automatically when receiving SSE updates
- Clean up list-level subscription on component unmount
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
* 任务系统 init
* 新增任务列表,直播事件功能和对应数据库
* 修复新增功能前后端bug
* 暂时commit部分修改内容,还未充分检查
* 0.8.0/dev (#1059 )
* 优化视频播放界面,新增退出视频播放按钮(支持ESC退出)
* 文件列表新增文件重命名和删除操作,支持批量操作
* 设置界面引入前端校验,确保前后端参数一致性,之前前端非法参数可以保存到后端config,如最小录制时长。本次修改在前端加入校验提示,非法参数直接拦截并提示有效值
* 哔哩哔哩cookie功能优化,新增扫码登录和验证机制
* 哔哩哔哩cookie界面优化
* fix code review
* 修复重命名、删除、批量操作的越权问题
* 表单验证间隔检测规则保持这里为0
* 完善报错
* 回滚误改的listening_count
* 修改文案
* 修复哔哩哔哩cookie界面api反复调用问题
* 补充console
* 重复的 ESC 键监听器问题修复
* 修复cookie潜在的内存问题
* cookie错误处理日志
* 错误日志改进
* 补充注释
* 调整文件编码转义,支持特殊字符,国际化,emojy等
* 修复--rsp是ReadableStream,只能读一次。如果 rsp.json() 失败后再去 rsp.text() 会失败。所以原始代码 clone 了一个 response 使用。
* 实现直播流选择,可选画质设置
* ci: 对齐版本、修复 lint 警告并添加开发工具模板
版本对齐:
- 将 CI 中的 Go 版本从 1.24 更新到 1.25 (匹配 go.mod)
- 将 Node.js 配置改为使用 .node-version 文件 (v20.10.0)
- 升级 actions/setup-go 到 v5, actions/setup-node 到 v4
Lint 修复:
- 修复 staticcheck 警告 (S1039, ST1023, S1009, QF1008)
- 删除未使用的函数:
- recorder.go: renderUploadPath, logAvailableStreams, extractRoomID
- store.go: getIntFromMap, getFloat64FromMap
- runjob_windows.go: runWithKillOnClose
- 重新生成 mock 文件
开发环境:
- 添加 VS Code 调试配置模板 (.vscode/launch.example.json)
- 更新 .gitignore 支持本地 launch.json 自定义
- 更新 README 添加使用说明
* feat: 添加版本统计、更新器增强与开发环境改进
版本统计:
- 新增 telemetry 包,仅统计程序版本号
- 用于了解用户更新程序的整体趋势
- 不收集平台、架构或任何其他个人数据
更新器增强:
- 实现 SHA256 校验和验证,确保下载完整性
- 支持 tar.gz 和 zip 压缩包解压
- 优先使用 bililive-go.com 代理,回退到 GitHub 直连
开发环境:
- 升级 Go 版本到 1.25
- 新增 tools/devtools.go 管理开发工具依赖 (delve, gopls, staticcheck)
- Makefile 添加 help 命令
- 新增 test/ 目录和 launcher 测试基础设施
* fix: 修复前端 ESLint 警告并启用严格模式构建
ESLint 修复:
- config-info/index.tsx: 移除未使用的 useNavigate 和 addPlatformVisible
- history-panel/index.tsx: 移除未使用的 List、UserOutlined、HistoryResponse
- live-list/index.tsx: 移除未使用的 Modal
构建配置改进:
- 默认 build 命令使用 CI=true 模式,警告视为错误
- 添加 cross-env 依赖实现跨平台环境变量设置
- 添加 yarn lint 命令进行独立 ESLint 检查
- ESLint 配置中将 no-unused-vars 规则设为 error
这确保本地开发与 CI 行为一致,尽早发现代码问题
* 删除未使用的golang函数
* feat: 添加 Playwright E2E 测试框架
- 集成 Playwright 进行端到端测试
- 使用 osrp-stream-tester 作为测试流服务器
- 添加基础 UI 测试和直播录制测试用例
- 创建 GitHub Actions E2E 测试工作流
- 更新 Makefile 添加测试相关命令
使用方法:
- make install-e2e # 安装测试依赖
- make test-e2e # 运行 E2E 测试
- make test-e2e-ui # 带 UI 运行测试
* fix: 添加 package-lock.json 以修复 CI
* feat: 添加 Playwright E2E 测试框架、相关测试用例和 GitHub Actions 工作流。
* ci: 新增 Playwright E2E 测试工作流。
* feat: 添加 Playwright E2E 测试 GitHub Actions 工作流。
* feat: 添加 E2E 测试的 GitHub Actions 工作流。
* feat: 添加端到端测试以及对应的 GitHub Actions CI 工作流
* feat: 新增录制功能的端到端测试
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: kira1928 <2352900+kira1928@users.noreply.github.com >
Co-authored-by: July <31428852+onlyjuly@users.noreply.github.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: Joftal <42807405+Joftal@users.noreply.github.com >
2026-01-31 03:44:14 +09:00
kira1928
0fb23db4b0
把config和logger改为全局实例,另外保留config yml文件内的注释文本 ( #1048 )
...
* 把config和logger从instance成员改为全局实例
* 保留config.yml文件内的注释文本;修复之前漏掉的一些logger调用代码
* code refine
* code refine
2025-12-31 22:14:59 +09:00
kira1928
0f1e59b6bb
feat: 更新remotetools依赖至v0.3.3;增强Dockerfile以支持容器内工具目录配置;添加isInContainer函数以判断运行环境
2025-10-26 21:49:53 +09:00
kira1928
630beb7ea1
feat: 更新remotetools依赖至v0.3.2;添加ToolRootFolder配置以支持可写工具目录;更新LiveInfo组件以显示Docker相关信息
2025-10-26 18:39:28 +09:00
kira1928
aa9cb5eaa0
feat: 更新依赖和配置以支持内置工具同步;升级多个GitHub Actions和Docker相关依赖
2025-10-26 00:37:45 +09:00
kira1928
28499c129b
chore: 更新remotetools依赖至v0.2.2;添加golang.org/x/sys依赖
2025-10-25 16:16:05 +09:00
kira1928
534fbcd3e5
增加外部工具下载功能和界面;使用录播姬修复flv ( #970 )
...
* feat(tools): integrate RemoteTools for FFmpeg management and add tools menu link
* fix CI error
* 增加录制flv后用录播姬修复的设置和实现
* fix CI Lint error
2025-10-05 20:01:32 +09:00
jonpostel/
d3903930d2
feat(notify): 新增Telegram和email 录制通知功能 ( #935 )
...
* feat(notify): 新增Telegram和邮件通知功能
新增Telegram和邮件通知服务,用户可在直播开始、结束和异常时接收通知。添加相关配置项和文档说明,并更新依赖。
新增通知模块,支持Telegram和邮件两种通知方式。用户可在配置文件中启用相应服务并设置参数。添加了测试用例和示例图片。
更新了README和文档,详细说明通知功能的配置和使用方法。同时添加了相关依赖包。
* 修复 Copilot,golangci-lint 的问题
* 完善 Copilot 建议
* fix: 修复listener_test.go中GetRawUrl和DispatchEvent方法调用未预期的问题
* 添加 GetRawUrl,GetPlatformCNName 测试预期调用。让测试完善通过。
* Delete coverage.txt
* end fix and end test,简化通知代码.
* 发现一个bug,有一定几率拿不到主播名称。如果拿不到就从缓存中拿。
2025-09-27 12:28:40 +09:00
kira1928
3ba2397978
fix CI error ( #894 )
...
* fix CI error
* fix golangci-lint errors
2025-08-06 19:16:11 +09:00
Chigusa
a3851d8a93
code clean ( #869 )
...
* - run go fmt
- "github.com/golang/mock" are no longer maintained, use "go.uber.org/mock"
* update go version to 1.24
* add golangci-lint
* - replace interface{} to any (Go 1.18 feature)
- fix non-compliant code
2025-08-01 22:54:11 +09:00
Chigusa
3321ac0b32
replace hr3lxphr6j/bililive-go to bililive-go/bililive-go ( #868 )
2025-06-11 12:48:35 +08:00
dependabot[bot]
7a24b3e133
Bump github.com/tidwall/gjson from 1.8.1 to 1.9.3 ( #216 )
...
Bumps [github.com/tidwall/gjson](https://github.com/tidwall/gjson ) from 1.8.1 to 1.9.3.
- [Release notes](https://github.com/tidwall/gjson/releases )
- [Commits](https://github.com/tidwall/gjson/compare/v1.8.1...v1.9.3 )
---
updated-dependencies:
- dependency-name: github.com/tidwall/gjson
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-25 06:41:42 +08:00
chigusa
f43a7cf96c
actions
2021-09-06 14:23:16 +08:00
chigusa
d9f580dc88
update github.com/golang/mock
2021-08-16 12:23:43 +08:00
chigusa
fc18368caf
update github.com/tidwall/gjson
2021-08-16 12:05:20 +08:00
chigusa
7c30dcf6c5
Bump Version v0.6.0-rc.1
2021-03-05 17:48:44 +08:00
chigusa
5ffff8251b
update go1.16
2021-03-05 11:25:25 +08:00
chigusa
ef6168c80a
support output filename template, close #62
2020-11-19 16:44:07 +08:00
Chigusa
c22e707c5f
update go version, refine lang live api, add jitter
...
Signed-off-by: Chigusa <c02110210610204@gmail.com >
2020-11-01 12:24:01 +08:00
Chigusa and chigusa
5082e48330
Dev ( #85 )
...
* use requests
* fix longzhu
* support acfun, close #84
* update README.md
Co-authored-by: chigusa <c02110210610204@gmai.com >
2020-07-10 16:08:13 +08:00
Chigusa
a11e861055
support 浪live ( #67 )
...
* 支持浪live, close #66
2020-05-15 11:09:41 +08:00
chigusa
0fe9111d8e
use statik, add Procfile
2020-02-04 20:40:44 +08:00
Chigusa
f53ff00ef6
Refactor ( #43 )
...
* refactor
* unit test
* govendor -> go mod (Close : #37 ), go 1.12.9 -> 1.13
* add Referer header, fix zhanqi tv
* Fix bilibili live resolution
Missing 1080p resolution by default since bilibili updated API according to https://github.com/streamlink/streamlink/pull/2625
* recorder manager test, refine base live, refine cache
* String Filter
2019-11-04 16:31:47 +08:00