Skip to content

About

No description, website, or topics provided.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Latest commit

 

History

297 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🎬 红果播放器 · Hongguo Desktop

平台 技术栈 协议

非官方红果短剧桌面客户端 —— 沉浸浏览 · 排行榜 · 弹幕播放 · 批量下载 · 一键合并

纯 Rust 解密与编解码内核 · 安装包不捆绑任何外部二进制 · 边下边播 · 小窗 / 隐身播放

English · 声明与免责 · 第三方组件


⚠️ 免责声明(请先阅读)

本项目仅供个人学习、研究和交流,严禁用于任何商业用途。

  • 本项目为非官方第三方客户端,与字节跳动、番茄小说、红果短剧官方没有任何关联,也未获得任何形式的授权;
  • 本项目不存储、不分发任何影视内容——所有内容均由用户设备通过官方接口按用户指令获取,版权归原权利方所有;
  • 使用本项目所产生的一切后果由使用者自行承担,作者不对本项目的功能、稳定性、安全性或合法性作任何担保;
  • 如本项目侵犯您的合法权益,请通过 Issue 联系,我们会第一时间处理。

完整声明见 NOTICE,许可条款见 LICENSE。


📖 简介

红果播放器(Hongguo)是面向红果短剧的 Windows / macOS 桌面客户端: Rust 业务内核 + Tauri 2 桌面外壳 + React 19 界面层。

它内置字节系短剧 App 的完整协议栈——设备注册、五头请求签名、取流、弹幕、互动、 观看历史、短信登录——并配有一套 CENC-AES-CTR 原生流式解密引擎。解密、解复用、 转码、封装全部由纯 Rust 完成,安装包不捆绑 FFmpeg 或任何外部二进制。

  • 在线播放不落盘:自定义协议渐进供数、边下边解,首帧不必等整集
  • 下载直接产出标准 MP4:流式解密 + 原子落盘,断网断电不留残缺文件
  • 兼容模式全自动:HEVC 解不动时自动转 H.264——平台硬编 → ffmpeg 硬编 → ffmpeg 软编 → 纯 Rust 软解,四级回退
  • 数据落 Turso 内嵌数据库:纯 Rust、无 C 工具链依赖,带 schema 迁移链与坏档自动恢复

✨ 功能总览

🏠 首页 · 发现

  • 推荐流:全屏沉浸式竖滑信息流,推荐 / 漫剧 / 真人三个频道,重复点 tab「换一批」; 滚轮或 ↑↓ 切剧,点画面进入连播锁定;进入当前剧时预取下一部的分集与流
  • 找剧:搜索联想(300ms 防抖,命中剧集的词条直进播放器)+ 官方 8 维筛选面板 (体裁 / 主题 / 角色 / 年代 / 排序 / 受众 / 上线时间 / 长度),结果无限滚动
  • 排行榜:频道 tab(全部 / 真人剧 / 漫剧 / AI剧 / 系列剧)× 子榜 × 筛选面板; 前 3 名金色名次、热词与热度;未上线条目行内预约,已上线直接播放
  • 新剧:按上架时间倒序的封面网格 + 上新日历(前后一周,含未上线), 男频 / 女频频道筛选

🎬 剧集详情

  • 评分 / 红果热度值 / 追剧数 / 播放量 / 题材标签 / 备案号,简介可展开
  • 三个 tab:选集(网格 + 时长角标)、剧评(登录后可发评论,显示点赞与回复数)、 相关推荐(系列作品 + 猜你喜欢)
  • 「继续看第 N 集」(看完 ≥95% 自动指向下一集)、收藏、点赞
  • 未上线剧降级为「即将上线 + 预约」视图
  • seriesId 走 URL 参数,详情页可收藏、可分享

▶️ 播放器

  • 在线流式播放:内存渐进流,边下边解,界面显示「正在缓存 xx%」; 流断供自动重试一次,播放位置不丢
  • 清晰度切换:默认最高档,切档保持播放点不回跳
  • 弹幕:开关 + 样式面板(透明度 / 字号 / 密度 / 显示区域),可发送弹幕 (表情选择器);暂停冻结、倍速同步、seek 清屏重建
  • 倍速 0.75×–3×、音量、静音跨切集保持
  • 小窗:同一窗口原地缩至 480×270 落到工作区右下角,播放零中断; 另有窗口置顶、画中画(PiP)、全屏
  • 隐身模式:鼠标离开窗口 → 整窗隐藏 + 自动暂停,鼠标回来 → 原地重现 + 续播
  • 连播与接力:播完自动下一集;本季完结自动接下一季第 1 集,无下一季则跟随 推荐流接力播放
  • 断点续播:本地 5 秒节流落盘 + 重启恢复;同时上报云端进度
  • 兼容模式:系统解不动的编码自动转 H.264,浮层显示转码进度
  • 快捷键:空格 播放/暂停 · ← → 快退/快进 5 秒 · ↑ ↓ 切集/切剧

👤 账户与互动

  • 手机号 + 短信验证码登录(含「回复短信」MFA 形态,后台自动轮询完成登录)
  • 点赞、收藏(书架)、追更预约(已上线 / 待上线两组)、观看历史——云端同源, 官方 App 与第三方客户端的记录互通
  • 单集评论(播放器内)与整剧剧评(详情页)

无需登录即可使用:浏览、榜单、新剧、搜索、在线播放、下载、合并。 点赞、收藏、预约、弹幕、评论需要登录。

⬇️ 下载 · 合并 · 清理

  • 下载管理:并发 1–10(默认 3),五态任务表(等待/下载中/已完成/失败/已停止), 批量重试、批量删除、一键暂停/启动;扫描磁盘可把手动拷回的文件补登记回任务列表
  • 防损机制:先写 .enc.tmp,解密成功后才改名 .mp4,中途断网不留残缺文件
  • 一键合并:快速合并(流复制拼接,无损秒级)/ 兼容合并(转 H.264/AAC, 任何播放器可播);合并前校验编码一致性与磁盘空间,后台任务带进度
  • 磁盘清理:总占用统计、按剧 / 按集删除、看完自动删除、一键清空; 在线缓存与兼容转码缓存(上限 4GB)单独管理;删除文件后保留剧集档案,之后仍可在线播放或重新下载
  • 命名模板 3 种:剧名 集号 / 剧名 集号 第N集 / 仅剧名

⚙️ 设置

  • 账户卡(登录 / MFA / 退出)、下载目录(手填 + 系统选择器)、命名模板、并发数
  • 网络代理:跟随系统 / 手动指定(含常用端口预设)/ 强制直连,一键测试显示耗时
  • 转码后端徽章:实时显示当前走的是硬件加速 / 软件加速 / 标准(纯 Rust),支持重新检测
  • 播完自动下一集、看完自动删除开关
  • 主题:自动 / 浅色 / 深色(默认深色);中英双语界面,跟随系统语言
  • 应用内更新:检查更新 → 下载(进度显示)→ 安装(minisign 验签,Windows 静默安装)

🛠️ 技术栈

内核(Rust)

层 选型
桌面壳 Tauri 2(系统 WebView,无 Electron)
语言 Rust 2024 edition · tokio · reqwest(rustls)
存储 Turso 内嵌数据库(纯 Rust,hongguo.db,schema v5)
解密 aes / ctr / sm3 / md-5 等纯 Rust crate(CENC-AES-CTR)
编解码 rusty_h265 / rusty_h264 / muxide(纯 Rust)+ VideoToolbox / Media Foundation(平台硬编)+ 可选 ffmpeg

前端

层 选型
语言 TypeScript 6 · React 19
构建 Vite 8 · Vitest
路由 / 数据 TanStack Router(文件路由)· TanStack Query 5
状态 Zustand 5 · zod 4
UI shadcn/ui(Radix UI)· Tailwind CSS v4 · lucide-react

🏗️ 架构亮点

  • 自定义 URI 协议:hongguo-stream:// 渐进流(首探 256KB → 盒游走定位 moov → 1MB 分块顺序填充,首帧只依赖头 + 尾 + 样本表);hongguo-local:// 本地文件 Range 播放;hongguo-cover:// 封面代理(HEIC → JPEG,磁盘哈希缓存)
  • 签名栈:x-gorgon / x-argus / x-ladon / x-helios / x-medusa 五头签名, 黄金向量单测锁定正确性
  • 四级转码回退:macOS VideoToolbox / Windows Media Foundation 平台硬编 → ffmpeg 硬编(NVENC / QSV / AMF)→ ffmpeg 软编 → rusty_h265 + rusty_h264 纯 Rust 软解, 启动时探测并常驻徽章展示
  • 可靠性:单实例锁、协议回调三层 panic 防线、crash.log 取证、数据库坏档自动恢复、 任务中断恢复、旧 JSON 存档一次性幂等迁移

💻 开发

环境要求

  • Rust 1.99+(edition 2024)
  • Node.js 20+ / pnpm 10+
  • Windows 10/11 或 macOS 10.15+

常用命令

make dev            # Vite + Tauri 开发模式(= pnpm tauri:dev)
make release        # 打包 NSIS / DMG(= pnpm tauri:build)
make test           # vitest 前端单测
make test-rust      # cargo test
make lint           # ESLint + Prettier + cargo clippy(任一失败即失败)
make typecheck      # tsc --noEmit
make assets         # 重新生成图标 / macOS 名称本地化(离线)

无需安装 FFmpeg——解密、解复用、合并是纯 Rust 零外部依赖,开箱即用。 系统里如果恰好有 ffmpeg,只有「HEVC → H.264 转码」这一步会自动改用它来加速, 没有它也不影响任何功能。


📂 项目结构

hongguo-desktop/
├── src-tauri/src/
│   ├── signer/          # 字节系请求签名(常量黑盒锁定,勿改)
│   ├── domain/          # 官方 App 接口客户端(api/ 按端点域目录化)、CENC 解密、MP4 解析
│   ├── service/         # 应用服务:下载调度、播放编排、合并、转码、存储清理……
│   ├── commands/        # Tauri command 薄层(约 80 个,与 service 同名同构)
│   ├── protocol/        # 自定义 URI scheme(流式播放 / 本地文件 / 封面代理)
│   ├── media/           # 编解码与转码管线(平台硬编 → ffmpeg → 纯 Rust)
│   ├── store/           # Turso 内嵌数据库(entity/ 按聚合拆分 / 迁移链 / 坏档恢复)
│   ├── utils/           # 无业务语义的纯函数(json / time / hex / url)
│   └── bootstrap/       # 启动装配(存储 → 设备 → 重扫描 → 队列 → 转码探测)
└── src/
    ├── pages/           # TanStack 文件路由(薄壳)+ 页面实现就近放置
    ├── features/        # 复杂能力域(player 播放引擎 / update 自动更新)
    ├── service/         # IPC 封装(tauri/)+ 命令(commands/)+ 查询(queries/)+ zod 契约(schema/)
    ├── stores/          # zustand 客户端状态
    ├── components/      # shadcn/ui + 布局 + 跨页展示件
    ├── hooks/           # 跨页通用 hooks
    ├── locales/         # 中英文案资源
    ├── utils/           # 无业务纯函数(format / range / cover / playback-prefs…)
    └── styles/          # 全局样式

❓ 常见问题

拉不到剧集 / 接口返回空响应

官方 App 接口要求每个请求携带 x-gorgon / x-argus / x-ladon / x-helios / x-medusa 五个签名头。签名缺失或算错时,服务端不报错,而是返回 HTTP 200 + 0 字节——只看 状态码会误判。

排查时看响应体的字节数而不是状态码;要逐端点的详细信息,用 RUST_LOG=debug 启动应用。

播放页黑屏但有声音

视频是 HEVC 编码,系统 WebView 解码需要硬件支持。应用已内置「兼容模式」:转成 H.264 后播放——平台硬编(Apple 芯片 VideoToolbox / Windows Media Foundation)→ ffmpeg(NVENC/QSV/AMF 硬编)→ 纯 Rust 软解,自动回退,无需手动配置。

签名魔数能改吗

不能。 signer/constants.rs 里的值是黑盒实测产物,与服务端一一对应。改任何一个, 签名都会被静默丢弃。

哪些功能需要登录

浏览、榜单、新剧、搜索、在线播放、下载、合并均无需登录。点赞、收藏、预约、 发弹幕、发评论需要手机号 + 短信验证码登录(设置页账户卡)。


📄 许可证

本项目以 PolyForm Noncommercial 1.0.0 授权,全文见 LICENSE。

  • ✅ 允许:任何非商业目的的使用、修改与再分发——个人学习、研究、私人娱乐、 兴趣项目等
  • ❌ 禁止:一切商业用途(出售、付费分发、商业产品集成、流量变现等)
  • 📋 分发时须附上本协议(或其网址)与 Required Notice 版权行

该协议禁止商业使用,因此不属于 OSI 认证开源许可证;它是由 Polyform Project 起草的规范化许可文本, 用以精确表达「仅供个人学习交流、禁止商用」的授权意图。

第三方组件各自以其自身许可证授权,声明见 THIRD-PARTY-NOTICES.md; 项目声明与免责条款见 NOTICE。

About

No description, website, or topics provided.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages