Skip to content
This repository was archived by the owner on Jul 8, 2026. It is now read-only.

chenbin3625/OpenMovie

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenMovie

一个自托管的影视资源自动化管理系统,集推荐浏览、资源搜索、订阅追踪、自动下载、文件整理、元数据刮削于一体。

灵感来源于 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/http HTTP 服务器
  • 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 dev

项目结构

OpenMovie/
├── 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 / mixed
  • subscribeRefreshMinutes — 订阅刷新间隔
  • subscribeBestVersionRules — 最佳版本升级规则

搜索配置

  • searchIndexerSites — 搜索使用的索引器站点
  • searchResourcePages — 每次搜索页数

重命名格式

  • movieRenameFormat — 电影重命名格式,如 {title} ({year})/{title} ({year})
  • tvRenameFormat — 电视剧重命名格式,如 {title}/Season {season2}/{title} S{season2}E{episode2}

安全

  • apiToken — API 访问令牌
  • securityAllowLan — 是否允许局域网访问

代理

  • proxyUrl — 全局 HTTP 代理地址

API

所有 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              # 健康检查

致谢


许可证

MIT License

About

自托管影视资源自动化管理系统 | Self-hosted media automation for discovery, search, subscriptions, downloads and organization

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages