⚠️ 注意事项:
- 如Docker Hub镜像版本不包含环境变量需要使用的参数(例如:代理、掩码、时区等),建议自行修改Dockerfile并编译。编译文件位于
backstage/src/main/docker/buildx
,已包含所有必要文件,编译后的jar文件不在上传,建议使用actions编译。- 更多详细部署方式和配置说明,请先查看旧版文档和更新日志,部署方式等可以参考旧版方式。
- 已经借助AI之力完成了本项目的wiki,具体使用可以参考项目Wiki
- 所有配套客户端及源码可在
app
文件夹下找到- 本项目相对于其他项目来说 使用的java语言 docker部署时建议添加内存限制
- 本项目没有做项目拆分为多个仓库 所以本仓库包含 uniapp tauri electron java 浏览器扩展 每个平台源码
backstage为后台服务端 java
app/uniapp 手机端源码
app/extend 浏览器扩展
app/desktop 桌面端客户端源码
- 请严格遵守爬虫规范,不要使用此项目进行任何违法行为。
- 不出售、共享、加密、上传、研究和传播任何个人信息。
- 项目及其相关代码仅供学习与研究使用,不构成任何明示或暗示的保证。
- 使用者因使用此项目及其代码可能造成的任何形式的损失,使用者应当自行承担一切风险。
- 如果使用者使用此项目及其代码,即代表使用者同意遵守上述规定。
StreamVault(原名:spirit)是一个视频资源管理与下载平台,支持多平台视频解析和下载,提供便捷的资源管理功能。支持API提交视频地址等
- 🎥 API推送单视频地址下载
- ⬇️ 多种下载方式支持(HTTP、Aria2)
- 📚 哔哩哔哩收藏夹下载与监控
- ❤️ 抖音作品与喜欢列表下载与监控
- 📋 NFO元数据生成(由于目前机制问题 目前测试仅仅jellyfin支持显示演员头像)
- 💾 视频资源缓存管理
- 📢 下载完成Webhook通知(支持企业微信群机器人/飞书)
📸 图文类模块(已实现)🏠 主页投稿类监控(已完成)🔄 监控类型优化(已实现)⚡ 应用瘦身及http下载 高可用低占用(已实现)- 🔧 yt-dlp内置更新方式
- Twitter主页或收藏监控
将weibo从yt-dlp中剥离 适配到图文模块- bilibli 合集类支持
- bilibili 弹幕支持
状态说明:
- ✅ 支持
- ❌ 不支持
- 🤔 考虑中
- 🔨 开发中
- 🚀 未来会做
平台 | 单链接 | 收藏/作品/主页 | 下载类型 | 备注 |
---|---|---|---|---|
抖音 | ✅ | ✅ | HTTP/Aria2 | |
哔哩哔哩 | ✅ | ✅ | HTTP/Aria2 | |
YouTube | ✅ | 🔨 | 仅支持yt-dlp | 备注① |
✅ | 🔨 | 仅支持yt-dlp | 备注① | |
✅ | 🤔 | 仅支持yt-dlp | 备注① | |
TikTok | ✅ | 🤔 | 暂时通过yt-dlp | |
快手 | ✅ | 🤔 | HTTP/Aria2 | 备注② |
微博 | ✅ | 🤔 | HTTP | 备注④ |
红薯 | ✅ | 🤔 | 暂时通过yt-dlp | |
通用平台 | ✅ | ❌ | 仅支持yt-dlp | 备注③ |
- 通用平台:除抖音、哔哩哔哩、快手外的所有平台,包括但不限于YouTube、Twitter、Instagram、微博、小红书等,均通过yt-dlp处理。详细支持列表请参考yt-dlp官方支持站点文档。
- 这里通用平台只是代表没有适配生成NFO 等一些小细节问题
- 由于红薯 微博 TikTok 未添加处理 所以 暂时走通用平台进行处理
- 通用平台支持什么具体请自测
- 备注①: docker版自带 避免产生过多ts文件 还需要合并 麻烦
- 备注②: 未测试Aria2,同时如果出现captcha 自行去APP或web验证后在测试 本处不处理captcha
- 备注③: docker版自带 不接受issues 具体支持地址参考yt-dlp仓库
- 备注④: 由于部分平台属于社交平台 视频并不属于长视频 所以目前一律划入图文模块 图文模块支持视频
- 🛠️ 后端:Spring Boot 3.5.x + JPA + SQLite
- 📱 前端:UniApp(支持小程序、APP等多端)
- 🐳 容器化:Docker多架构支持(AMD64/ARM64)
# 拉取镜像
docker pull qingfeng2336/stream-vault
# 运行容器
docker run --name stream-vault -d -p 28083:28081 \
-v d:/home/spirit:/app \
-v d:/home/spirit/tmp:/tmp \
qingfeng2336/stream-vault
- 🔗 访问 http://your-ip:28083/admin/login
- 🔑 使用默认账号密码登录
- ⚙️ 在设置中删除admin并重新新建账号
- 🎉 开始使用
- 要求:Java 17
- 详细部署文档待完善
以下为 部分 系统功能截图,更多界面可在实际使用中体验,仅供示例参考。
⚙️ 配置页面 |
📚 收藏添加 |
🔄 合并功能 |
🏠 后台首页 |
提示:点击图片可查看原图细节。
查看 更新日志 了解详细更新内容。
- 🌐 Web后台:http://your-ip:28081/admin/login
- 👤 默认账号:admin
- 🔑 默认密码:123456
- 🤖 Android APP
- 💬 微信小程序(开发者模式)
- 🌍 其他UniApp支持的平台
POST http://ip:port/api/processingVideos
参数:
- token: 后台设置的token
- video: 链接或分享口令
POST http://ip:port/api/findVideos
参数:
- token: 后台设置的token(必填)
- pageNo: 页数(必填)
- pageSize: 每页数量(必填)
- videodesc: 视频描述(选填)
- videoname: 视频名称(选填)
- videoplatform: 视频平台(选填)
javascript:(function(){
var token = "你的token";
var url = window.location.href;
fetch("http://ip:port/api/processingVideos", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: "token=" + encodeURIComponent(token) + "&video=" + encodeURIComponent(url)
}).then(response => response.json())
.then(data => alert("请求成功: " + JSON.stringify(data)))
.catch(error => alert("请求失败: " + error));
})();
⚠️ 注意: 通过接口获取的视频播放链接或缩略图,访问时需追加?apptoken=xxxx
参数,否则无法访问。
项目参考及使用了以下优秀的开源项目:
本项目主体代码采用 Apache License 2.0 授权。
注意:
- 由于
bilibili-API-collect
代码的非商业限制(CC BY-NC 4.0 协议),包含该部分代码的版本 禁止商业使用。- 使用本项目时,需同时遵守上述第三方项目的许可证条款。
感谢所有开源项目的贡献者!