一个自托管的影视资源自动化管理系统,集推荐浏览、资源搜索、订阅追踪、自动下载、文件整理、元数据刮削于一体。
灵感来源于 MoviePilot,使用 Go + React 重写,追求轻量、高性能、零外部依赖。
English Summary
OpenMovie is a self-hosted media automation system built with Go and React. It brings together discovery, resource search, subscriptions, download automation, file organization, metadata scraping, calendars, notifications, and downloader integrations for a lightweight home media workflow.
| 模块 | 功能 |
|---|---|
| 推荐浏览 | TMDB 热门/趋势、豆瓣热播/即将上映/Top250/一周口碑、Bangumi 日历等 13 个内置推荐源,支持类型/语言/评分/年代多维筛选 |
| 资源搜索 | 多站点并行搜索 + SSE 实时流式返回,支持 TMDB/Douban/Bangumi/IMDB ID 精确搜索,内置 14 种站点解析器 |
| 字幕搜索 | 独立字幕搜索通道,支持中/英/日/韩/双语字幕检测 |
| 订阅管理 | RSS / 搜索 / 混合三种模式,最佳版本逐集升级追踪,订阅分享市场(share / follow / fork) |
| 自动下载 | 支持 qBittorrent、Transmission、自定义 HTTP 下载器(rTorrent 等),种子文件选择、顺序下载、做种限制 |
| 媒体整理 | 后台队列 + SSE 实时进度,copy / move / hardlink / softlink 四种模式,智能集数格式识别,失败 AI 重试 |
| 文件管理 | 目录浏览、智能重命名(媒体感知)、移动/复制/删除,存储用量统计 |
| 站点管理 | 20+ 内置索引器,CookieCloud 同步,站点用户数据(上传/下载/比率/魔力),站点资源浏览 |
| 元数据刮削 | 自动 NFO 生成 + 海报/背景图下载,TMDB / 豆瓣双源 |
| 日历视图 | 月度日历展示订阅剧集播出时间,已有/缺失/已完成状态标记 |
| 通知系统 | Telegram / 企业微信 / Webhook 通知渠道,可配置模板 |
| 定时任务 | 订阅刷新、下载检查、目录扫描、站点数据同步、数据维护 5 个自动化任务 |
| AI 推荐 | 接入 OpenAI 对搜索结果智能排序推荐 |
| Overseerr 集成 | 原生支持 Overseerr / Jellyseerr Webhook 自动创建订阅 |
| 推荐 | 搜索 |
|---|---|
![]() |
![]() |
| 订阅 | 日历 |
|---|---|
![]() |
![]() |
| 下载器 | 媒体整理 |
|---|---|
![]() |
![]() |
| 文件管理 | 系统设置 |
|---|---|
![]() |
![]() |
后端 — Go 1.22+,零外部依赖(纯标准库)
net/httpHTTP 服务器- JSON 文件 KV 存储(原子写入)
- 进程内事件总线(async/sync pub/sub)
- Goroutine 工作池
前端 — React 19 + TypeScript 5.9 + Ant Design 6
- Vite 8 构建
- React Router v7
- SSE 实时数据流
- Go 1.22+
- Node.js 18+(仅构建前端)
# 构建前端
cd web
npm install
npm run build
# 构建后端
cd ..
go build -o openmovie ./cmd/server./openmovie默认监听 :8090,访问 http://localhost:8090 即可。
| 变量 | 默认值 | 说明 |
|---|---|---|
OPENMOVIE_ADDR |
:8090 |
HTTP 监听地址 |
OPENMOVIE_DATA_DIR |
data |
数据存储目录 |
# 终端 1:启动后端
OPENMOVIE_DATA_DIR=data-dev go run ./cmd/server
# 终端 2:启动前端(自动代理 API 到后端)
cd web
npm run dev前端开发服务器运行在 http://localhost:5173,自动代理 /api 请求到后端 :8090。
如需指定后端地址:
OPENMOVIE_API=http://192.168.1.100:8090 npm run devOpenMovie/
├── cmd/server/main.go # 入口
├── internal/
│ ├── api/server.go # HTTP 路由 + 中间件
│ ├── domain/models.go # 领域模型(50+ 类型)
│ ├── event/bus.go # 事件总线
│ ├── module/ # 外部模块集成
│ │ ├── downloader.go # qBittorrent / Transmission / HTTP 下载器
│ │ ├── media_source.go # TMDB / Douban / Bangumi API
│ │ ├── site.go # 站点搜索 + 解析
│ │ ├── site_access.go # CookieCloud / 站点认证
│ │ └── site_indexer.go # 内置索引器定义
│ ├── repository/store.go # JSON KV 存储
│ └── usecase/service.go # 业务逻辑编排
├── web/ # React 前端
│ ├── src/
│ │ ├── App.tsx # 主应用(路由 + 页面)
│ │ ├── types.ts # TypeScript 类型定义
│ │ └── index.css # 全局样式
│ └── package.json
├── data-dev/ # 开发种子数据
│ ├── store/settings.json # 示例配置
│ ├── store/sites.json # 示例站点
│ ├── downloads/ # 下载目录
│ └── library/ # 媒体库目录
└── docs/screenshots/ # 截图
首次运行后通过 Web 界面「系统设置」页面配置,主要配置项:
目录配置
downloadRoots— 下载目录列表libraryRoots— 媒体库目录列表directoryPairs— 目录对(下载 → 媒体库映射,支持指定传输模式和存储类型)
站点配置
sites— 站点列表(名称、地址、Cookie、代理、浏览器仿真等)siteCookieCloudIntervalMinutes— CookieCloud 自动同步间隔
订阅配置
subscribeMode— 订阅模式:rss/search/mixedsubscribeRefreshMinutes— 订阅刷新间隔subscribeBestVersionRules— 最佳版本升级规则
搜索配置
searchIndexerSites— 搜索使用的索引器站点searchResourcePages— 每次搜索页数
重命名格式
movieRenameFormat— 电影重命名格式,如{title} ({year})/{title} ({year})tvRenameFormat— 电视剧重命名格式,如{title}/Season {season2}/{title} S{season2}E{episode2}
安全
apiToken— API 访问令牌securityAllowLan— 是否允许局域网访问
代理
proxyUrl— 全局 HTTP 代理地址
所有 API 端点位于 /api/v1/ 下,需要在请求头携带 Authorization: Bearer <token> 或 X-API-Token: <token>。
主要端点:
GET /api/v1/recommend # 推荐列表
GET /api/v1/search # 资源搜索
GET /api/v1/search/stream # SSE 流式搜索
GET /api/v1/subscribes # 订阅列表
POST /api/v1/subscribes # 创建订阅
GET /api/v1/calendar # 日历
GET /api/v1/downloads # 下载任务
POST /api/v1/downloads # 添加下载
GET /api/v1/transfers/queue # 传输队列
GET /api/v1/transfers/events # SSE 传输事件
GET /api/v1/sites # 站点列表
GET /api/v1/files/list # 文件列表
GET /api/v1/settings # 系统设置
GET /api/v1/automation/jobs # 定时任务
GET /api/v1/notifications # 通知列表
GET /api/v1/health # 健康检查
- MoviePilot — 原始项目
- TMDB — 影视元数据
- 豆瓣 — 中文影视数据
- Bangumi — 动画数据







