一个功能强大的 Flutter 影片管理应用,整合了 JavBus 搜索、115 网盘、Jellyfin 媒体库和在线播放功能。
- 支持 9+ 站点并发搜索(JavBus、Fanza、DMM 等)
- 实时搜索结果预览
- 智能番号匹配和识别
- 搜索历史记录
- JavBus 集成:影片信息、演员资料、预览图
- 115 网盘支持:
- 完整的 m115 加密算法实现
- 文件浏览和下载
- 视频转码功能
- 离线下载管理
- Jellyfin 媒体库:
- 媒体库浏览和搜索
- 直接播放 Jellyfin 资源
- 与本地收藏同步
- 多格式支持:HLS (.m3u8)、MP4、WebM
- 在线播放:
- MissAV 视频流解析
- 多源自动切换
- 播放进度记忆
- 本地播放:集成 video_player 和 media_kit
- 播放器控制:倍速、画质切换、全屏支持
- 本地 SQLite 数据库存储
- 收藏夹分类管理
- 快速添加/移除收藏
- 收藏同步功能
- 集成翻译服务(支持 Ollama/OpenAI)
- 影片简介翻译
- 演员/导演名称本地化
- 灵活的服务配置(JavBus、115、Jellyfin、翻译)
- 安全的认证信息存储(加密保存 115 Cookie)
- Basic Auth 支持
- 实时配置验证
- 首页:快速搜索、浏览推荐、最近访问
- 搜索页:多站点搜索结果聚合
- 影片详情:完整信息、演员列表、预览图
- 收藏夹:管理收藏的影片
- 115 网盘:文件浏览、转码、下载
- Jellyfin 媒体库:媒体库浏览和播放
- 播放器:功能强大的视频播放界面
- 设置页:一站式配置管理
- 从 Releases 下载最新 APK
- 在 Android 设备上安装
- 打开应用即可使用
前置要求:
- Flutter SDK 3.0+
- Dart SDK 3.0+
- Android Studio 或 VS Code
构建步骤:
# 克隆仓库
git clone https://github.com/Mark111112/bus_app.git
cd bus_app
# 安装依赖
flutter pub get
# 运行调试版本
flutter run
# 构建 Release APK
flutter build apk --release
# 构建 App Bundle(用于上传 Google Play)
flutter build appbundle --release构建产物位置:
- APK:
build/app/outputs/flutter-apk/app-release.apk - AAB:
build/app/outputs/bundle/release/app-release.aab
- 打开应用设置
- 配置数据源(至少配置一个):
- JavBus URL:默认使用官方站点
- 115 Cookie(可选):用于网盘功能
- Jellyfin 服务器(可选):用于媒体库集成
- 翻译服务(可选):用于翻译功能
- 登录 115.com
- 打开浏览器开发者工具(F12)
- 切换到 Application/存储 标签
- 找到 Cookies 并复制
UID、CID、SEID` 的值 - 在应用设置中粘贴 Cookie:
UID=xxx; CID=xxx; SEID=xxx - 点击"验证"按钮确认 Cookie 有效
用于在线播放 MissAV 视频。这个服务不是 Flutter 依赖库,而是一个单独部署的后端解析服务。
默认配套项目:
- upstream:
https://github.com/Mark111112/missav-stream - 示例 fork:
https://github.com/furey1116/missav-stream
如果你只拿到了 bus_app,但没有这个后端服务,MissAV 在线播放功能将不可用,应用会退回到 WebView / 直连等兼容路径,成功率取决于站点当前策略。
应用会调用这个后端服务:
- 解析影片页面
- 提取可播放的 HLS / m3u8 地址
- 返回给 App 一个结构化播放结果(包含
stream_url、playback.headers等)
当前推荐返回格式示例:
{
"success": true,
"movie_id": "YST-352",
"stream_url": "https://surrit.com/.../720p/video.m3u8",
"playback": {
"mode": "headers",
"stream_url": "https://surrit.com/.../720p/video.m3u8",
"direct_url": "https://surrit.com/.../720p/video.m3u8",
"proxy_url": null,
"proxy_path": null,
"headers": {
"Referer": "https://missav.ai/YST-352",
"Origin": "https://missav.ai",
"User-Agent": "Mozilla/5.0 ..."
}
}
}- 先部署
missav-stream服务(Docker / gunicorn / Koyeb / 自建 VPS 均可) - 在 App 设置中填入后端服务地址,例如:
http://192.168.1.246:9090https://your-domain.example.com
- 应用会自动调用
/api/resolve/<movie_id>解析视频流
- 推荐模式:后端只做解析,不做视频流量代理。
- 如果把 HLS/TS 视频流也代理到轻量平台(例如免费 PaaS),很容易因为带宽/流量限制出问题。
- 当前 App 更适合让后端返回
headers,由手机端直接拉取视频流。 - 若需要外网访问,请自行配置 HTTPS 与反向代理。
- 服务器地址:例如
http://192.168.1.100:8096 - 认证方式(二选一):
- API Key:推荐方式
- 用户名 + 密码
- 点击"连接"测试配置
- 在首页点击搜索按钮
- 输入番号或关键词
- 查看来自多个站点的搜索结果
- 点击结果查看详情
- 在影片详情页点击收藏按钮
- 选择收藏夹(可选)
- 在"收藏夹"页面管理收藏
浏览文件:
- 导航到目标文件夹
- 查看视频文件列表
下载到本地:
- 选择视频文件
- 点击下载按钮
- 在"离线下载"页面查看进度
转码播放:
- 选择视频文件
- 点击转码按钮
- 等待转码完成后播放
浏览媒体:
- 查看最新的电影、剧集
- 搜索媒体库
直接播放:
- 点击媒体项目
- 使用集成播放器播放
- 同步播放进度到 Jellyfin
基本控制:
- 播放/暂停
- 快进/快退(左右滑动)
- 音量调节
- 全屏切换
高级功能:
- 倍速播放(0.5x - 2.0x)
- 画质切换(自适应)
- 后台播放(音频)
- 画面比例调整
- Flutter 3.0+:跨平台 UI 框架
- Provider:状态管理
- SQLite:本地数据存储
- Dio:HTTP 客户端
- HTML 解析:网页内容提取
- Cached Network Image:图片缓存
- Video Player:基础视频播放
- Media Kit (libmpv):高级播放功能
- Flutter InAppWebView:WebView 播放器
- PointyCastle:加密算法
- M115 加密:115 网盘专用加密
- Google Fonts:字体
- Shimmer:加载动画
- Connectivity Plus:网络状态检测
lib/
├── core/ # 核心功能
│ ├── app.dart # 应用入口
│ └── constants.dart # 常量定义
├── models/ # 数据模型
├── services/ # 业务逻辑
│ ├── scrapers/ # 爬虫实现
│ └── crypto/ # 加密算法
├── repositories/ # 数据访问层
├── providers/ # 状态管理
├── screens/ # 用户界面
├── utils/ # 工具类
└── widgets/ # 通用组件
- 所有配置信息存储在本地
- 115 Cookie 加密存储
- 不收集用户数据
- 不包含第三方追踪
- 多站点搜索
- 115 网盘集成
- Jellyfin 媒体库支持
- MissAV 在线播放
- 视频转码功能
- iOS 平台支持
- 字幕支持
- 多语言界面
- 播放列表功能
- MissAV 播放器改进:支持 proxy/direct 双模式播放
- 播放结果结构化(
MissAVPlaybackResult),支持自定义 headers - 修复 MissAV 部分 HLS 流因 Referer 丢失无法播放的问题
欢迎贡献代码、报告问题或提出建议!
- Fork 本仓库
- 创建功能分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT 许可证 - 详见 LICENSE 文件
- 问题反馈:GitHub Issues
- 功能建议:GitHub Discussions
享受观影! 🎬