基于 NAStool 部分代码重新设计,聚焦自动化核心需求,减少问题同时更易于扩展和维护。
发布频道:https://t.me/moviepilot_channel
- 前后端分离,基于FastApi + Vue3,前端项目地址:MoviePilot-Frontend
- 聚焦核心需求,简化功能和设置,部分设置项可直接使用默认值。
- 重新设计了用户界面,更加美观易用。
站点信息需要通过CookieCloud同步获取,因此需要安装CookieCloud插件,将浏览器中的站点Cookie数据同步到云端后再同步到MoviePilot使用。 插件下载地址请点击 这里。
MoviePilot内置了公共CookieCloud服务器,如果需要自建服务,可参考 CookieCloud 项目进行搭建,docker镜像请点击 这里。
声明: 本项目不会收集用户敏感数据,Cookie同步也是基于CookieCloud项目实现,非本项目提供的能力。技术角度上CookieCloud采用端到端加密,在个人不泄露用户KEY
和端对端加密密码
的情况下第三方无法窃取任何用户信息(包括服务器持有者)。如果你不放心,可以不使用公共服务或者不使用本项目,但如果使用后发生了任何信息泄露与本项目无关!
MoviePilot需要配套下载器和媒体服务器配合使用。
- 下载器支持:qBittorrent、Transmission,QB版本号要求>= 4.3.9,TR版本号要求>= 3.0,推荐使用QB。
- 媒体服务器支持:Jellyfin、Emby、Plex,推荐使用Emby。
-
Docker镜像
点击 这里 或执行命令:
docker pull jxxghp/moviepilot:latest
-
Windows
下载 MoviePilot.exe,双击运行后自动生成配置文件目录。
项目的所有配置均通过环境变量进行设置,支持两种配置方式:
- 在Docker环境变量部分或Wdinows系统环境变量中进行参数配置,如未自动显示配置项则需要手动增加对应环境变量。
- 下载 app.env 配置文件,修改好配置后放置到配置文件映射路径根目录,配置项可根据说明自主增减。
配置文件映射路径:/config
,配置项生效优先级:环境变量 > env文件 > 默认值,部分参数如路径映射、站点认证、权限端口、时区等必须通过环境变量进行配置。
❗号标识的为必填项,其它为可选项,可选项可删除配置变量从而使用默认值。
- ❗NGINX_PORT: WEB服务端口,默认
3000
,可自行修改,不能与API服务端口冲突(仅支持环境变量配置) - ❗PORT: API服务端口,默认
3001
,可自行修改,不能与WEB服务端口冲突(仅支持环境变量配置) - PUID:运行程序用户的
uid
,默认0
(仅支持环境变量配置) - PGID:运行程序用户的
gid
,默认0
(仅支持环境变量配置) - UMASK:掩码权限,默认
000
,可以考虑设置为022
(仅支持环境变量配置) - PROXY_HOST: 网络代理,访问themoviedb或者重启更新需要使用代理访问,格式为
http(s)://ip:port
、socks5://user:pass@host:port
(仅支持环境变量配置) - MOVIEPILOT_AUTO_UPDATE:重启更新,
true
/false
,默认true
注意:如果出现网络问题可以配置PROXY_HOST
(仅支持环境变量配置) - MOVIEPILOT_AUTO_UPDATE_DEV:重启时更新到未发布的开发版本代码,
true
/false
,默认false
(仅支持环境变量配置)
- ❗SUPERUSER: 超级管理员用户名,默认
admin
,安装后使用该用户登录后台管理界面 - ❗SUPERUSER_PASSWORD: 超级管理员初始密码,默认
password
,建议修改为复杂密码 - ❗API_TOKEN: API密钥,默认
moviepilot
,在媒体服务器Webhook、微信回调等地址配置中需要加上?token=
该值,建议修改为复杂字符串 - TMDB_API_DOMAIN: TMDB API地址,默认
api.themoviedb.org
,也可配置为api.tmdb.org
或其它中转代理服务地址,能连通即可 - TMDB_IMAGE_DOMAIN: TMDB图片地址,默认
image.tmdb.org
,可配置为其它中转代理以加速TMDB图片显示,如:static-mdb.v.geilijiasu.com
- SCRAP_METADATA: 刮削入库的媒体文件,
true
/false
,默认true
- SCRAP_SOURCE: 刮削元数据及图片使用的数据源,
themoviedb
/douban
,默认themoviedb
- SCRAP_FOLLOW_TMDB: 新增已入库媒体是否跟随TMDB信息变化,
true
/false
,默认true
- ❗TRANSFER_TYPE: 整理转移方式,支持
link
/copy
/move
/softlink
/rclone_copy
/rclone_move
注意:在link
和softlink
转移方式下,转移后的文件会继承源文件的权限掩码,不受UMASK
影响;rclone需要自行映射rclone配置目录到容器中或在容器内完成rclone配置,节点名称必须为:MP
- ❗LIBRARY_PATH: 媒体库目录,多个目录使用
,
分隔 - LIBRARY_MOVIE_NAME: 电影媒体库目录名称(不是完整路径),默认
电影
- LIBRARY_TV_NAME: 电视剧媒体库目录称(不是完整路径),默认
电视剧
- LIBRARY_ANIME_NAME: 动漫媒体库目录称(不是完整路径),默认
电视剧/动漫
- LIBRARY_CATEGORY: 媒体库二级分类开关,
true
/false
,默认false
,开启后会根据配置 category.yaml 自动在媒体库目录下建立二级目录分类
- ❗COOKIECLOUD_HOST: CookieCloud服务器地址,格式:
http(s)://ip:port
,不配置默认使用内建服务器https://movie-pilot.org/cookiecloud
- ❗COOKIECLOUD_KEY: CookieCloud用户KEY
- ❗COOKIECLOUD_PASSWORD: CookieCloud端对端加密密码
- ❗COOKIECLOUD_INTERVAL: CookieCloud同步间隔(分钟)
- ❗USER_AGENT: CookieCloud保存Cookie对应的浏览器UA,建议配置,设置后可增加连接站点的成功率,同步站点后可以在管理界面中修改
- OCR_HOST: OCR识别服务器地址,格式:
http(s)://ip:port
,用于识别站点验证码实现自动登录获取Cookie等,不配置默认使用内建服务器https://movie-pilot.org
,可使用 这个镜像 自行搭建。
- SUBSCRIBE_MODE: 订阅模式,
rss
/spider
,默认spider
,rss
模式通过定时刷新RSS来匹配订阅(RSS地址会自动获取,也可手动维护),对站点压力小,同时可设置订阅刷新周期,24小时运行,但订阅和下载通知不能过滤和显示免费,推荐使用rss模式。 - SUBSCRIBE_RSS_INTERVAL: RSS订阅模式刷新时间间隔(分钟),默认
30
分钟,不能小于5分钟。 - SUBSCRIBE_SEARCH: 订阅搜索,
true
/false
,默认false
,开启后会每隔24小时对所有订阅进行全量搜索,以补齐缺失剧集(一般情况下正常订阅即可,订阅搜索只做为兜底,会增加站点压力,不建议开启)。 - SEARCH_SOURCE: 媒体信息搜索来源,
themoviedb
/douban
,默认themoviedb
-
AUTO_DOWNLOAD_USER: 远程交互搜索时自动择优下载的用户ID,多个用户使用,分割,未设置需要选择资源或者回复
0
-
❗MESSAGER: 消息通知渠道,支持
telegram
/wechat
/slack
/synologychat
,开启多个渠道时使用,
分隔。同时还需要配置对应渠道的环境变量,非对应渠道的变量可删除,推荐使用telegram
-
wechat
设置项:- WECHAT_CORPID: WeChat企业ID
- WECHAT_APP_SECRET: WeChat应用Secret
- WECHAT_APP_ID: WeChat应用ID
- WECHAT_TOKEN: WeChat消息回调的Token
- WECHAT_ENCODING_AESKEY: WeChat消息回调的EncodingAESKey
- WECHAT_ADMINS: WeChat管理员列表,多个管理员用英文逗号分隔(可选)
- WECHAT_PROXY: WeChat代理服务器(后面不要加/)
-
telegram
设置项:- TELEGRAM_TOKEN: Telegram Bot Token
- TELEGRAM_CHAT_ID: Telegram Chat ID
- TELEGRAM_USERS: Telegram 用户ID,多个使用,分隔,只有用户ID在列表中才可以使用Bot,如未设置则均可以使用Bot
- TELEGRAM_ADMINS: Telegram 管理员ID,多个使用,分隔,只有管理员才可以操作Bot菜单,如未设置则均可以操作菜单(可选)
-
slack
设置项:- SLACK_OAUTH_TOKEN: Slack Bot User OAuth Token
- SLACK_APP_TOKEN: Slack App-Level Token
- SLACK_CHANNEL: Slack 频道名称,默认
全体
(可选)
-
synologychat
设置项:- SYNOLOGYCHAT_WEBHOOK: 在Synology Chat中创建机器人,获取机器人
传入URL
- SYNOLOGYCHAT_TOKEN: SynologyChat机器人
令牌
- SYNOLOGYCHAT_WEBHOOK: 在Synology Chat中创建机器人,获取机器人
-
-
❗DOWNLOAD_PATH: 下载保存目录,注意:需要将
moviepilot
及下载器
的映射路径保持一致,否则会导致下载文件无法转移 -
DOWNLOAD_MOVIE_PATH: 电影下载保存目录路径,不设置则下载到
DOWNLOAD_PATH
-
DOWNLOAD_TV_PATH: 电视剧下载保存目录路径,不设置则下载到
DOWNLOAD_PATH
-
DOWNLOAD_ANIME_PATH: 动漫下载保存目录路径,不设置则下载到
DOWNLOAD_PATH
-
DOWNLOAD_CATEGORY: 下载二级分类开关,
true
/false
,默认false
,开启后会根据配置 category.yaml 自动在下载目录下建立二级目录分类 -
DOWNLOAD_SUBTITLE: 下载站点字幕,
true
/false
,默认true
-
DOWNLOADER_MONITOR: 下载器监控,
true
/false
,默认为true
,开启后下载完成时才会自动整理入库 -
TORRENT_TAG: 下载器种子标签,默认为
MOVIEPILOT
,设置后只有MoviePilot添加的下载才会处理,留空所有下载器中的任务均会处理 -
❗DOWNLOADER: 下载器,支持
qbittorrent
/transmission
,QB版本号要求>= 4.3.9,TR版本号要求>= 3.0,同时还需要配置对应渠道的环境变量,非对应渠道的变量可删除,推荐使用qbittorrent
-
qbittorrent
设置项:- QB_HOST: qbittorrent地址,格式:
ip:port
,https需要添加https://
前缀 - QB_USER: qbittorrent用户名
- QB_PASSWORD: qbittorrent密码
- QB_CATEGORY: qbittorrent分类自动管理,
true
/false
,默认false
,开启后会将下载二级分类传递到下载器,由下载器管理下载目录,需要同步开启DOWNLOAD_CATEGORY
- QB_HOST: qbittorrent地址,格式:
-
transmission
设置项:- TR_HOST: transmission地址,格式:
ip:port
,https需要添加https://
前缀 - TR_USER: transmission用户名
- TR_PASSWORD: transmission密码
- TR_HOST: transmission地址,格式:
-
-
REFRESH_MEDIASERVER: 入库后是否刷新媒体服务器,
true
/false
,默认true
-
❗MEDIASERVER: 媒体服务器,支持
emby
/jellyfin
/plex
,同时开启多个使用,
分隔。还需要配置对应媒体服务器的环境变量,非对应媒体服务器的变量可删除,推荐使用emby
-
emby
设置项:- EMBY_HOST: Emby服务器地址,格式:
ip:port
,https需要添加https://
前缀 - EMBY_API_KEY: Emby Api Key,在
设置->高级->API密钥
处生成
- EMBY_HOST: Emby服务器地址,格式:
-
jellyfin
设置项:- JELLYFIN_HOST: Jellyfin服务器地址,格式:
ip:port
,https需要添加https://
前缀 - JELLYFIN_API_KEY: Jellyfin Api Key,在
设置->高级->API密钥
处生成
- JELLYFIN_HOST: Jellyfin服务器地址,格式:
-
plex
设置项:- PLEX_HOST: Plex服务器地址,格式:
ip:port
,https需要添加https://
前缀 - PLEX_TOKEN: Plex网页Url中的
X-Plex-Token
,通过浏览器F12->网络从请求URL中获取
- PLEX_HOST: Plex服务器地址,格式:
-
-
MEDIASERVER_SYNC_INTERVAL: 媒体服务器同步间隔(小时),默认
6
,留空则不同步 -
MEDIASERVER_SYNC_BLACKLIST: 媒体服务器同步黑名单,多个媒体库名称使用,分割
MoviePilot
需要认证后才能使用,配置AUTH_SITE
后,需要根据下表配置对应站点的认证参数(仅能通过环境变量配置)
- ❗AUTH_SITE: 认证站点,支持
iyuu
/hhclub
/audiences
/hddolby
/zmpt
/freefarm
/hdfans
/wintersakura
/leaves
/1ptba
/icc2022
/ptlsp
/xingtan
站点 | 参数 |
---|---|
iyuu | IYUU_SIGN :IYUU登录令牌 |
hhclub | HHCLUB_USERNAME :用户名HHCLUB_PASSKEY :密钥 |
audiences | AUDIENCES_UID :用户IDAUDIENCES_PASSKEY :密钥 |
hddolby | HDDOLBY_ID :用户IDHDDOLBY_PASSKEY :密钥 |
zmpt | ZMPT_UID :用户IDZMPT_PASSKEY :密钥 |
freefarm | FREEFARM_UID :用户IDFREEFARM_PASSKEY :密钥 |
hdfans | HDFANS_UID :用户IDHDFANS_PASSKEY :密钥 |
wintersakura | WINTERSAKURA_UID :用户IDWINTERSAKURA_PASSKEY :密钥 |
leaves | LEAVES_UID :用户IDLEAVES_PASSKEY :密钥 |
1ptba | 1PTBA_UID :用户ID1PTBA_PASSKEY :密钥 |
icc2022 | ICC2022_UID :用户IDICC2022_PASSKEY :密钥 |
ptlsp | PTLSP_UID :用户IDPTLSP_PASSKEY :密钥 |
xingtan | XINGTAN_UID :用户IDXINGTAN_PASSKEY :密钥 |
-
BIG_MEMORY_MODE: 大内存模式,默认为
false
,开启后会占用更多的内存,但响应速度会更快 -
MOVIE_RENAME_FORMAT: 电影重命名格式
MOVIE_RENAME_FORMAT
支持的配置项:
title
: 标题
original_name
: 原文件名
original_title
: 原语种标题
name
: 识别名称
year
: 年份
resourceType
:资源类型
effect
:特效
edition
: 版本(资源类型+特效)
videoFormat
: 分辨率
releaseGroup
: 制作组/字幕组
customization
: 自定义占位符
videoCodec
: 视频编码
audioCodec
: 音频编码
tmdbid
: TMDBID
imdbid
: IMDBID
part
:段/节
fileExt
:文件扩展名
MOVIE_RENAME_FORMAT
默认配置格式:
{{title}}{% if year %} ({{year}}){% endif %}/{{title}}{% if year %} ({{year}}){% endif %}{% if part %}-{{part}}{% endif %}{% if videoFormat %} - {{videoFormat}}{% endif %}{{fileExt}}
- TV_RENAME_FORMAT: 电视剧重命名格式
TV_RENAME_FORMAT
额外支持的配置项:
season
: 季号
episode
: 集号
season_episode
: 季集 SxxExx
episode_title
: 集标题
TV_RENAME_FORMAT
默认配置格式:
{{title}}{% if year %} ({{year}}){% endif %}/Season {{season}}/{{title}} - {{season_episode}}{% if part %}-{{part}}{% endif %}{% if episode %} - 第 {{episode}} 集{% endif %}{{fileExt}}
- 仅支持使用内置规则进行排列组合,内置规则有:
蓝光原盘
、4K
、1080P
、中文字幕
、特效字幕
、H265
、H264
、杜比
、HDR
、REMUX
、WEB-DL
、免费
、国语配音
等 - 符合任一层级规则的资源将被标识选中,匹配成功的层级做为该资源的优先级,排越前面优先级超高
- 不符合过滤规则所有层级规则的资源将不会被选中
- 通过CookieCloud同步快速同步站点,不需要使用的站点可在WEB管理界面中禁用,无法同步的站点可手动新增。
- 通过WEB进行管理,将WEB添加到手机桌面获得类App使用效果,管理界面端口:
3000
,后台API端口:3001
。 - 通过下载器监控或使用目录监控插件实现自动整理入库刮削(二选一)。
- 通过微信/Telegram/Slack/SynologyChat远程管理,其中微信/Telegram将会自动添加操作菜单(微信菜单条数有限制,部分菜单不显示);微信需要在官方页面设置回调地址,SynologyChat需要设置机器人传入地址,地址相对路径为:
/api/v1/message/
。 - 设置媒体服务器Webhook,通过MoviePilot发送播放通知等。Webhook回调相对路径为
/api/v1/webhook?token=moviepilot
(3001
端口),其中moviepilot
为设置的API_TOKEN
。 - 将MoviePilot做为Radarr或Sonarr服务器添加到Overseerr或Jellyseerr(
API服务端口
),可使用Overseerr/Jellyseerr浏览订阅。 - 映射宿主机docker.sock文件到容器
/var/run/docker.sock
,以支持内建重启操作。实例:-v /var/run/docker.sock:/var/run/docker.sock:ro
- 容器首次启动需要下载浏览器内核,根据网络情况可能需要较长时间,此时无法登录。可映射
/moviepilot
目录避免容器重置后重新触发浏览器内核下载。 - 使用反向代理时,需要添加以下配置,否则可能会导致部分功能无法访问(
ip:port
修改为实际值):
location / {
proxy_pass http://ip:port;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
- 新建的企业微信应用需要固定公网IP的代理才能收到消息,代理添加以下代码:
location /cgi-bin/gettoken {
proxy_pass https://qyapi.weixin.qq.com;
}
location /cgi-bin/message/send {
proxy_pass https://qyapi.weixin.qq.com;
}
location /cgi-bin/menu/create {
proxy_pass https://qyapi.weixin.qq.com;
}