FS-GUI - 樊登读书 Web 版下载工具
⚠️ 特别声明
仅供个人学习使用,请尊重版权,内容版权均为帆书APP(樊登读书)所有,请勿传播内容!
本工具仅用于学习交流目的,不得用于商业用途。请在下载后24小时内删除,支持正版!
✨ 特性
🎯 内容支持
- ✅ 樊登讲书 - 音频、文稿、思维导图下载
- ✅ 非凡精读馆 - 完整内容下载支持
- ✅ 李蕾讲经典 - 经典解读内容下载
- ✅ 课程系列 - 体系化课程内容下载
🖥️ 用户界面
- ✅ 现代化 Web 界面 - 基于 React 18 + Tailwind CSS
- ✅ 响应式设计 - 完美支持桌面和移动端
- ✅ 暗黑模式 - 护眼的深色主题
- ✅ 实时搜索 - 快速找到想要的内容
- ✅ 分类浏览 - 按主题分类浏览内容
- ✅ 组件化设计 - 基于 Shadcn/ui + Radix UI
📥 下载功能
- ✅ 多格式支持 - MP3音频、视频、PDF
- ✅ 思维导图 - JPEG格式思维导图下载
- ✅ 批量下载 - 支持多个内容同时下载
- ✅ 断点续传 - 网络中断后可继续下载
- ✅ 自动分类 - 下载内容自动分类整理
🚀 部署优势
- ✅ 单一二进制 - 前端资源已嵌入,无需额外文件
- ✅ 零依赖部署 - 只需一个可执行文件
- ✅ 跨平台支持 - Windows、macOS、Linux 全平台
- ✅ 开箱即用 - 下载即用,无需复杂配置
🔐 账户功能
- ✅ 手机号登录 - 短信验证码登录
- ✅ 密码登录 - 传统账号密码登录
- ✅ 登录状态保持 - 自动保存登录状态
- ✅ 用户信息 - 显示账户详情和权限
📦 安装
方式一:下载预编译版本(推荐)
前往 Releases 页面下载对应系统的预编译版本:
- Windows:
fs-windows-amd64.exe
- macOS:
fs-darwin-amd64 / fs-darwin-arm64
- Linux:
fs-linux-amd64
下载后直接运行即可,程序会自动在浏览器中打开 Web 界面。
方式二:使用 Go 安装(推荐)
确保已安装 Go 1.21 或更高版本:
go install github.com/yann0917/fs-gui@latest
优势:此方式会下载包含完整前端资源的单一可执行文件,无需额外的前端构建步骤,开箱即用!
注意:项目已配置静态资源嵌入,前端构建产物已包含在源码中,确保 go install 能够成功编译。
方式三:从源码构建
git clone https://github.com/yann0917/fs-gui.git
cd fs-gui
make build
🔧 依赖安装
根据需要下载的内容格式,安装对应依赖:
PDF 下载依赖
web 端返回的文稿不完整,没必要下载 pdf 格式的,不需要安装该依赖
# 安装 wkhtmltopdf (用于生成PDF)
# macOS
brew install wkhtmltopdf
# Ubuntu/Debian
sudo apt-get install wkhtmltopdf
# Windows
# 1. 下载安装包:https://wkhtmltopdf.org/downloads.html
# 2. 安装到默认目录(通常是 C:\Program Files\wkhtmltopdf\bin)
# 3. 添加环境变量:
# - 打开"系统属性" -> "高级" -> "环境变量"
# - 在"系统变量"中找到"Path",点击"编辑"
# - 添加路径:C:\Program Files\wkhtmltopdf\bin
# - 重启命令行窗口验证:wkhtmltopdf --version
视频下载依赖
# 安装 ffmpeg (用于处理音视频)
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt-get install ffmpeg
# Windows
# 1. 下载安装包:https://ffmpeg.org/download.html
# 2. 解压到指定目录(例如:C:\ffmpeg)
# 3. 添加环境变量:
# - 打开"系统属性" -> "高级" -> "环境变量"
# - 在"系统变量"中找到"Path",点击"编辑"
# - 添加路径:C:\ffmpeg\bin
# - 重启命令行窗口验证:ffmpeg -version
🚀 使用方法
1. 启动应用
./fs-gui
程序启动后会自动打开浏览器访问 http://localhost:8080
2. 配置登录信息
方式一:Web 界面登录(推荐)
-
复制配置模板:
cp config.simple.yaml config.yaml
-
编辑 config.yaml 文件,填入必要的 aesKey 信息:
aesKey: "your_aes_key_here"
-
在 Web 界面点击登录按钮,输入手机号和验证码/密码进行登录
方式二:配置文件登录
-
复制配置模板:
cp config.simple.yaml config.yaml
-
编辑 config.yaml 文件,填入必要信息:
token: "your_token_here"
aesKey: "your_aes_key_here"
3. 开始使用
- 🔍 浏览内容: 在首页浏览不同分类的内容
- 📱 搜索: 使用搜索功能快速找到想要的内容
- 📖 查看详情: 点击内容卡片查看详细信息
- ⬇️ 下载: 选择下载格式并开始下载
- 📁 查看文件: 下载完成的文件保存在
output 目录
🛠️ 开发
技术栈
后端:
- Go 1.21+ (支持
embed 静态资源嵌入)
- Gin Web Framework (v1.10.0)
- Viper (配置管理)
- Resty (HTTP客户端)
- 单一二进制文件部署(前端资源已嵌入)
前端:
- React 18 + TypeScript
- Vite (7.0 构建工具)
- Tailwind CSS + Shadcn/ui
- Radix UI (组件基础)
- Zustand (状态管理)
- React Router (路由管理)
开发环境搭建
-
克隆项目
git clone https://github.com/yann0917/fs-gui.git
cd fs-gui
-
安装前端依赖
cd frontend
yarn install
-
启动开发服务器
# 后端开发服务器 (端口 8080)
go run main.go router.go
# 前端开发服务器 (新终端,端口 3000)
cd frontend
yarn dev
-
构建生产版本
make build
项目结构
fs-gui/
├── frontend/ # React 18 前端应用
│ ├── src/
│ │ ├── components/ # UI组件 (Shadcn/ui)
│ │ ├── views/ # 页面组件
│ │ ├── stores/ # Zustand状态管理
│ │ ├── hooks/ # React Hooks
│ │ ├── services/ # API服务
│ │ └── types/ # TypeScript类型
│ └── dist/ # 构建产物
├── services/ # 后端业务逻辑
├── config/ # 配置文件处理
├── utils/ # 工具函数
├── middleware/ # 中间件
├── output/ # 下载文件存储
├── main.go # 主程序入口
├── router.go # 路由定义
└── config.yaml # 配置文件
📖 API 文档
认证相关
POST /api/login/phone - 手机号登录
POST /api/login/password - 密码登录
POST /api/login/sms-code - 发送验证码
POST /api/logout - 退出登录
GET /api/user - 获取用户信息
内容相关
GET /api/categories - 获取分类列表
GET /api/books - 获取书籍列表
GET /api/books/:id - 获取书籍详情
GET /api/books/:id/module - 获取书籍模块内容
GET /api/courses - 获取课程列表
GET /api/courses/:id - 获取课程详情
下载相关
GET /api/books/download - 下载书籍内容
GET /api/courses/download - 下载课程内容
🤝 贡献
欢迎提交 Issue 和 Pull Request!
- Fork 此项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature)
- 提交更改 (
git commit -m 'Add some AmazingFeature')
- 推送到分支 (
git push origin feature/AmazingFeature)
- 创建 Pull Request
📄 许可证
本项目采用 MIT 许可证。
🙏 致谢