beilunyang/openhongguo

多媒体与设计

红果短剧的非官方匿名 SDK,支持六种语言浏览、搜索短剧并解析分集播放地址与内容密钥。

122
55
Go
Apache-2.0
创建于 3 天前

openhongguo 是红果短剧的非官方客户端库,提供 Go、Node.js、Android/Kotlin、iOS/macOS/Swift、React Native 和 Flutter 版本。它让应用浏览书城频道、搜索短剧、读取短剧与分集详情,并解析某一集的播放流;遇到加密分集时还能在本地算出内容密钥,交给 ffmpeg 等工具解密。它属于媒体访问 SDK,本身不是播放器,也不是媒体生成模型。

一条典型调用链

常见流程是搜索 → 列出分集 → 解析播放。先创建客户端并调用 Search,把返回的短剧 ID 传给 ListEpisodes,再用分集 ID 调用 ResolvePlayback,得到各清晰度的地址、编码和码率。带游标的列表返回分页对象;DiscoverPager 和 SearchPager 会逐页遍历,并去掉跨页重复的短剧。各语言的方法一一对应,只是大小写不同。示例的搜索与播放流程及选项字段见 README。

匿名设备机制

所有请求都由一台匿名虚拟手机发出,不需要登录。第一次请求时 SDK 注册设备并把设备档案交给 ProfileStore 保存——可以是 JSON 文件、仅内存或自定义实现。机型可以配置,但只对新注册的设备生效;ResetDevice 会丢弃当前设备并重新注册。如果服务端拒绝设备,调用返回 ErrDeviceRejected,文档给出的处理方式是重置后重试。错误以哨兵值或跨语言的错误码暴露,覆盖限流、内容不可用、需要登录、需要验证码以及 DRM 加密分集等情况。

加密分集

分集加密时,ResolvePlayback 返回播放模型并带上 DRM 保护信号;把播放模型交给 ContentKey 即可在本地推导出 AES 密钥(cenc-aes-ctr),不发送网络请求,密钥可交给 ffmpeg 的解密参数使用。同一分集的所有清晰度共用一个密钥。

要求与限制

README 列出了最低版本:Go 1.22、Node.js 20、Android 5.0(Flutter 的 Android 路径要求 7.0)、iOS 13(React Native 15.1、Flutter 15)、macOS 11。Go 默认只尝试一次,其他语言绑定默认 3 次;服务端要求的等待超过 10 秒时 SDK 不再等待,直接返回限流错误。项目尚未发布 1.0,次版本可能包含不兼容变更。服务端接口没有公开文档,随时可能改版,项目用每日接口契约检查来尽早发现变化(开发说明)。命令行演示是可选的:播放需要 mpv、ffplay 或 vlc,下载需要 ffmpeg(命令行文档)。

项目使用 Apache-2.0 许可证,但维护者将其严格定位为学习与研究工具,禁止商业用途,并提醒用户尊重内容版权,称下载或解密的内容应在学习后删除(README 免责声明、LICENSE)。这些使用限制,而不只是代码许可证,决定了该项目是否适合某一用途。

本文由 AI 根据项目 README 生成,更新于 2026年10月30日,以项目官方文档为准。