# StreamVault
**Repository Path**: JonDO/StreamVault
## Basic Information
- **Project Name**: StreamVault
- **Description**: docker多平台视频下载整合方案 通过小程序 快捷指令 API WEB 等提交单链快速下载视频
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-08-14
- **Last Updated**: 2025-08-14
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# StreamVault 🎬
> 🚀 多平台视频下载整合方案 通过小程序 快捷指令 API WEB 等提交单链快速下载视频 并支持收藏夹模式及监控
[](https://deepwiki.com/lemon8866/StreamVault)
[](https://hub.docker.com/r/qingfeng2336/stream-vault)
[](LICENSE)
[](https://www.oracle.com/java/)
[](https://spring.io/projects/spring-boot)

> ⚠️ **注意事项**:
>
> 1. 如Docker Hub镜像版本不包含环境变量需要使用的参数(例如:代理、掩码、时区等),建议自行修改Dockerfile并编译。编译文件位于`backstage/src/main/docker/buildx`,已包含所有必要文件,编译后的jar文件不在上传,建议使用actions编译。
> 2. 更多详细部署方式和配置说明,请先查看[旧版文档](doc/README.md)和[更新日志](doc/updaterecords.md),部署方式等可以参考旧版方式。
> 3. 更多详细细节待补充,敬请期待。
> 4. 所有配套客户端及源码可在 `app` 文件夹下找到
> 5. 本项目相对于其他项目来说 使用的java语言 docker部署时建议添加内存限制
> 6. 本项目没有做项目拆分为多个仓库 所以本仓库包含 uniapp tauri electron java 浏览器扩展 每个平台源码
> 7. `backstage为后台服务端 java` `app/uniapp 手机端源码` `app/extend 浏览器扩展` `app/desktop 桌面端客户端源码`
> 8. 维护者比较懒 故本库没有详细部署文档 更多详细内容 请自行部署体验 也欢迎各位大佬提交部署PR到doc目录
> 9. 大部分站点都支持文件的分片下载,本项目暂未开启分片下载 视风控情况后续考虑开启分片下载
> 10. 已经借助AI之力完成了本项目的wiki,具体使用可以参考[项目Wiki](https://github.com/lemon8866/StreamVault/wiki)
## ⚠️ 声明
* **请严格遵守爬虫规范,不要使用此项目进行任何违法行为。**
* **不出售、共享、加密、上传、研究和传播任何个人信息。**
* **项目及其相关代码仅供学习与研究使用,不构成任何明示或暗示的保证。**
* **使用者因使用此项目及其代码可能造成的任何形式的损失,使用者应当自行承担一切风险。**
* **如果使用者使用此项目及其代码,即代表使用者同意遵守上述规定。**
## 🌟 项目简介
StreamVault(原名:spirit)是一个视频资源管理与下载平台,支持多平台视频解析和下载,提供便捷的资源管理功能。
## ✨ 主要特性
### 🚀 核心功能
- 🎥 单视频下载
- ⬇️ 多种下载方式支持(HTTP、Aria2)
- 📚 哔哩哔哩收藏夹下载与监控
- ❤️ 抖音作品与喜欢列表下载与监控
- 📋 NFO元数据生成(由于目前机制问题 目前测试仅仅jellyfin支持显示演员头像)
- 💾 视频资源缓存管理
- 📢 下载完成Webhook通知(支持企业微信群机器人/飞书)
### 📝 已计划内容
- ~~- 📸 图文类模块(已实现)~~
- ~~- 🏠 主页投稿类监控(已完成)~~
- 🔄 监控类型优化
- ⚡ 应用瘦身及http下载 高可用低占用
- 🔧 yt-dlp内置更新方式
### 🎯 平台支持
状态说明:
- ✅ 支持
- ❌ 不支持
- 🤔 考虑中
- 🔨 开发中
- 🚀 未来会做
| 平台 | 单链接 | 收藏/作品/主页 | 下载类型 | 备注 |
| --------- | ------ | -------------- | ------------ | ------------------------------------------------- |
| 抖音 | ✅ | ✅ | HTTP/Aria2 | |
| 哔哩哔哩 | ✅ | ✅ | HTTP/Aria2 | |
| YouTube | ✅ | 🔨 | 仅支持yt-dlp | 备注① |
| Twitter | ✅ | 🔨 | 仅支持yt-dlp | 备注① |
| Instagram | ✅ | 🤔 | 仅支持yt-dlp | 备注① |
| TikTok | ✅ | 🤔 | 暂时通过yt-dlp| |
| 快手 | ✅ | 🤔 | HTTP/Aria2 |备注② |
| 微博 | ✅ | 🤔 | 暂时通过yt-dlp | |
| 红薯 | ✅ | 🤔 | 暂时通过yt-dlp | |
| 通用平台 | ✅ | ❌ | 仅支持yt-dlp| 备注③ |
* **通用平台**:除抖音、哔哩哔哩、快手外的所有平台,包括但不限于YouTube、Twitter、Instagram、微博、小红书等,均通过yt-dlp处理。详细支持列表请参考[yt-dlp官方支持站点文档](https://github.com/yt-dlp/yt-dlp/blob/master/supportedsites.md)。
* 这里通用平台只是代表没有适配生成NFO 等一些小细节问题
* 由于红薯 微博 TikTok 未添加处理 所以 暂时走通用平台进行处理
* 通用平台支持什么具体请自测
* 备注①: docker版自带 避免产生过多ts文件 还需要合并 麻烦
* 备注②: 未测试Aria2,同时如果出现captcha 自行去APP或web验证后在测试 本处不处理captcha
* 备注③: docker版自带 不接受issues 具体支持地址参考yt-dlp仓库
### 💻 技术栈
- 🛠️ 后端:Spring Boot 2.7.x + JPA + SQLite
- 📱 前端:UniApp(支持小程序、APP等多端)
- 🐳 容器化:Docker多架构支持(AMD64/ARM64)
## 🔧 部署指南
### 🐳 Docker部署(推荐)
```bash
# 拉取镜像
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
```
[Docker Hub](https://hub.docker.com/r/qingfeng2336/stream-vault) | [使用文档](https://github.com/lemon8866/StreamVault/wiki)
### 🚀 快速开始
1. 🔗 访问 http://your-ip:28083/admin/login
2. 🔑 使用默认账号密码登录
3. ⚙️ 在设置中删除admin并重新新建账号
4. 🎉 开始使用
### 📦 手动部署
- 要求:Java 1.8+
- 详细部署文档待完善
## 📸 功能展示
[待补充项目截图]
## 📝 更新日志
查看 [更新日志](doc/updaterecords.md) 了解详细更新内容。
## 📱 客户端使用
### 🔗 访问方式
- 🌐 Web后台:http://your-ip:28081/admin/login
- 👤 默认账号:admin
- 🔑 默认密码:123456
### 📱 移动端支持
- 🤖 Android APP
- 💬 微信小程序(开发者模式)
- 🌍 其他UniApp支持的平台
## 🔌 API接口
### 📤 推送接口
```http
POST http://ip:port/api/processingVideos
参数:
- token: 后台设置的token
- video: 链接或分享口令
```
### 📋 获取视频列表
```http
POST http://ip:port/api/findVideos
参数:
- token: 后台设置的token(必填)
- pageNo: 页数(必填)
- pageSize: 每页数量(必填)
- videodesc: 视频描述(选填)
- videoname: 视频名称(选填)
- videoplatform: 视频平台(选填)
```
### 📝 书签提交方式
```javascript
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` 参数,否则无法访问。
## 🙏 致谢
项目参考及使用了以下优秀的开源项目:
- [bilibili-API-collect](https://github.com/SocialSisterYi/bilibili-API-collect)
- [parsing-tiktok-video](https://toscode.gitee.com/zong_zh/parsing-tiktok-video)
- [f2](https://github.com/Johnserf-Seed/f2)
- [Light-Year-Admin-Template](https://gitee.com/yinqi/Light-Year-Admin-Template)
- [yt-dlp](https://github.com/yt-dlp/yt-dlp)
---
## 📄 LICENSE
本项目主体代码采用 [Apache License 2.0](./LICENSE) 授权。
> **注意**:
> - 由于 `bilibili-API-collect` 代码的非商业限制(CC BY-NC 4.0 协议),包含该部分代码的版本 **禁止商业使用**。
> - 使用本项目时,需同时遵守上述第三方项目的许可证条款。
感谢所有开源项目的贡献者!