diff --git a/README.md b/README.md index c1016ac1..4df20479 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,6 @@ MoviePilot需要配套下载器和媒体服务器配合使用。 docker pull jxxghp/moviepilot:latest ``` - - Windows 下载 [MoviePilot.exe](https://github.com/jxxghp/MoviePilot/releases),双击运行后自动生成配置文件目录,访问:http://localhost:3000 @@ -58,29 +57,52 @@ MoviePilot需要配套下载器和媒体服务器配合使用。 ## 配置 -项目的所有配置均通过环境变量进行设置,支持两种配置方式: -- 在Docker环境变量部分或Windows系统环境变量中进行参数配置,如未自动显示配置项则需要手动增加对应环境变量。 -- 下载 [app.env](https://github.com/jxxghp/MoviePilot/raw/main/config/app.env) 配置文件,修改好配置后放置到配置文件映射路径根目录,配置项可根据说明自主增减。 - 配置文件映射路径:`/config`,配置项生效优先级:环境变量 > env文件 > 默认值,**部分参数如路径映射、站点认证、权限端口、时区等必须通过环境变量进行配置**。 > ❗号标识的为必填项,其它为可选项,可选项可删除配置变量从而使用默认值。 -### 1. **基础设置** +### 1. **环境变量** -- **❗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`/`release`/`dev`/`false`,默认`release`,需要能正常连接Github **注意:如果出现网络问题可以配置`PROXY_HOST`**(仅支持环境变量配置) +- **❗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`/`release`/`dev`/`false`,默认`release`,需要能正常连接Github **注意:如果出现网络问题可以配置`PROXY_HOST`** - **AUTO_UPDATE_RESOURCE**:启动时自动检测和更新资源包(站点索引及认证等),`true`/`false`,默认`true`,需要能正常连接Github,仅支持Docker -- **GITHUB_TOKEN:** Github token,提高自动更新等请求Github Api的限流阈值,格式:ghp_****(仅支持环境变量配置) ---- -- **❗SUPERUSER:** 超级管理员用户名,默认`admin`,安装后使用该用户登录后台管理界面 -- **❗SUPERUSER_PASSWORD:** 超级管理员初始密码,默认`password`,建议修改为复杂密码 +- **❗AUTH_SITE:** 认证站点(认证通过后才能使用站点相关功能),支持配置多个认证站点,使用`,`分隔,如:`iyuu,hhclub`,会依次执行认证操作,直到有一个站点认证成功。 + + 配置`AUTH_SITE`后,需要根据下表配置对应站点的认证参数,认证资源`v1.0.2`支持`iyuu`/`hhclub`/`audiences`/`hddolby`/`zmpt`/`freefarm`/`hdfans`/`wintersakura`/`leaves`/`1ptba`/`icc2022`/`ptlsp`/`xingtan`/`ptvicomo`/`agsvpt` + + | 站点 | 参数 | + |:------------:|:-----------------------------------------------------:| + | iyuu | `IYUU_SIGN`:IYUU登录令牌 | + | hhclub | `HHCLUB_USERNAME`:用户名
`HHCLUB_PASSKEY`:密钥 | + | audiences | `AUDIENCES_UID`:用户ID
`AUDIENCES_PASSKEY`:密钥 | + | hddolby | `HDDOLBY_ID`:用户ID
`HDDOLBY_PASSKEY`:密钥 | + | zmpt | `ZMPT_UID`:用户ID
`ZMPT_PASSKEY`:密钥 | + | freefarm | `FREEFARM_UID`:用户ID
`FREEFARM_PASSKEY`:密钥 | + | hdfans | `HDFANS_UID`:用户ID
`HDFANS_PASSKEY`:密钥 | + | wintersakura | `WINTERSAKURA_UID`:用户ID
`WINTERSAKURA_PASSKEY`:密钥 | + | leaves | `LEAVES_UID`:用户ID
`LEAVES_PASSKEY`:密钥 | + | 1ptba | `1PTBA_UID`:用户ID
`1PTBA_PASSKEY`:密钥 | + | icc2022 | `ICC2022_UID`:用户ID
`ICC2022_PASSKEY`:密钥 | + | ptlsp | `PTLSP_UID`:用户ID
`PTLSP_PASSKEY`:密钥 | + | xingtan | `XINGTAN_UID`:用户ID
`XINGTAN_PASSKEY`:密钥 | + | ptvicomo | `PTVICOMO_UID`:用户ID
`PTVICOMO_PASSKEY`:密钥 | + | agsvpt | `AGSVPT_UID`:用户ID
`AGSVPT_PASSKEY`:密钥 | + + +### 2. **app.env配置文件** + +下载 [app.env 模板](https://github.com/jxxghp/MoviePilot/raw/main/config/app.env),修改后放配置文件目录下,app.env 的所有配置项也可以通过环境变量进行配置。 + +- **❗SUPERUSER:** 超级管理员用户名,默认`admin`,安装后使用该用户登录后台管理界面,**注意:启动一次后再次修改该值不会生效,除非删除数据库文件!** +- **❗SUPERUSER_PASSWORD:** 超级管理员初始密码,默认`password`,建议修改为复杂密码,**注意:启动一次后再次修改该值不会生效,除非删除数据库文件!** - **❗API_TOKEN:** API密钥,默认`moviepilot`,在媒体服务器Webhook、微信回调等地址配置中需要加上`?token=`该值,建议修改为复杂字符串 +- **BIG_MEMORY_MODE:** 大内存模式,默认为`false`,开启后会增加缓存数量,占用更多的内存,但响应速度会更快 +- **GITHUB_TOKEN:** Github token,提高自动更新、插件安装等请求Github Api的限流阈值,格式:ghp_**** --- - **TMDB_API_DOMAIN:** TMDB API地址,默认`api.themoviedb.org`,也可配置为`api.tmdb.org`、`tmdb.movie-pilot.org` 或其它中转代理服务地址,能连通即可 - **TMDB_IMAGE_DOMAIN:** TMDB图片地址,默认`image.tmdb.org`,可配置为其它中转代理以加速TMDB图片显示,如:`static-mdb.v.geilijiasu.com` @@ -186,85 +208,53 @@ MoviePilot需要配套下载器和媒体服务器配合使用。 - **PLEX_TOKEN:** Plex网页Url中的`X-Plex-Token`,通过浏览器F12->网络从请求URL中获取 - **MEDIASERVER_SYNC_INTERVAL:** 媒体服务器同步间隔(小时),默认`6`,留空则不同步 - **MEDIASERVER_SYNC_BLACKLIST:** 媒体服务器同步黑名单,多个媒体库名称使用,分割 +--- +- **MOVIE_RENAME_FORMAT:** 电影重命名格式,基于jinjia2语法 + `MOVIE_RENAME_FORMAT`支持的配置项: -### 2. **用户认证** + > `title`: 标题 + > `original_name`: 原文件名 + > `original_title`: 原语种标题 + > `name`: 识别名称 + > `year`: 年份 + > `resourceType`:资源类型 + > `effect`:特效 + > `edition`: 版本(资源类型+特效) + > `videoFormat`: 分辨率 + > `releaseGroup`: 制作组/字幕组 + > `customization`: 自定义占位符 + > `videoCodec`: 视频编码 + > `audioCodec`: 音频编码 + > `tmdbid`: TMDBID + > `imdbid`: IMDBID + > `part`:段/节 + > `fileExt`:文件扩展名 + > `tmdbid`:TMDB ID + > `imdbid`:IMDB ID + > `customization`:自定义占位符 + + `MOVIE_RENAME_FORMAT`默认配置格式: + + ``` + {{title}}{% if year %} ({{year}}){% endif %}/{{title}}{% if year %} ({{year}}){% endif %}{% if part %}-{{part}}{% endif %}{% if videoFormat %} - {{videoFormat}}{% endif %}{{fileExt}} + ``` -`MoviePilot`需要认证后才能使用,配置`AUTH_SITE`后,需要根据下表配置对应站点的认证参数(**仅能通过环境变量配置**) - -`AUTH_SITE`支持配置多个认证站点,使用`,`分隔,如:`iyuu,hhclub`,会依次执行认证操作,直到有一个站点认证成功。 - -- **❗AUTH_SITE:** 认证站点,认证资源`v1.0.2`支持`iyuu`/`hhclub`/`audiences`/`hddolby`/`zmpt`/`freefarm`/`hdfans`/`wintersakura`/`leaves`/`1ptba`/`icc2022`/`ptlsp`/`xingtan`/`ptvicomo`/`agsvpt` - -| 站点 | 参数 | -|:------------:|:-----------------------------------------------------:| -| iyuu | `IYUU_SIGN`:IYUU登录令牌 | -| hhclub | `HHCLUB_USERNAME`:用户名
`HHCLUB_PASSKEY`:密钥 | -| audiences | `AUDIENCES_UID`:用户ID
`AUDIENCES_PASSKEY`:密钥 | -| hddolby | `HDDOLBY_ID`:用户ID
`HDDOLBY_PASSKEY`:密钥 | -| zmpt | `ZMPT_UID`:用户ID
`ZMPT_PASSKEY`:密钥 | -| freefarm | `FREEFARM_UID`:用户ID
`FREEFARM_PASSKEY`:密钥 | -| hdfans | `HDFANS_UID`:用户ID
`HDFANS_PASSKEY`:密钥 | -| wintersakura | `WINTERSAKURA_UID`:用户ID
`WINTERSAKURA_PASSKEY`:密钥 | -| leaves | `LEAVES_UID`:用户ID
`LEAVES_PASSKEY`:密钥 | -| 1ptba | `1PTBA_UID`:用户ID
`1PTBA_PASSKEY`:密钥 | -| icc2022 | `ICC2022_UID`:用户ID
`ICC2022_PASSKEY`:密钥 | -| ptlsp | `PTLSP_UID`:用户ID
`PTLSP_PASSKEY`:密钥 | -| xingtan | `XINGTAN_UID`:用户ID
`XINGTAN_PASSKEY`:密钥 | -| ptvicomo | `PTVICOMO_UID`:用户ID
`PTVICOMO_PASSKEY`:密钥 | -| agsvpt | `AGSVPT_UID`:用户ID
`AGSVPT_PASSKEY`:密钥 | - - -### 2. **进阶配置** - -- **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`:文件扩展名 -> `tmdbid`:TMDB ID -> `imdbid`:IMDB ID -> `customization`:自定义占位符 - -`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}} -``` +- **TV_RENAME_FORMAT:** 电视剧重命名格式,基于jinjia2语法 + `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}} + ``` + ### 3. **优先级规则** diff --git a/config/app.env b/config/app.env index 6616a2cb..5a12d296 100644 --- a/config/app.env +++ b/config/app.env @@ -3,9 +3,9 @@ ####################################################################### #################################### -# 基础设置 # +# 系统设置 # #################################### -# 【*】API监听地址 +# 【*】API监听地址(注意不是前端访问地址) HOST=0.0.0.0 # 是否调试模式,打开后将输出更多日志 DEBUG=false @@ -15,6 +15,88 @@ DEV=false SUPERUSER=admin # 【*】超级管理员初始密码,设置后一但重启将固化到数据库中,修改将无效 SUPERUSER_PASSWORD=password +# 大内存模式,开启后会增加缓存数量,但会占用更多内存 +BIG_MEMORY_MODE=false +# 自动检查和更新站点资源包(索引、认证等) +AUTO_UPDATE_RESOURCE=true + +#################################### +# 消息通知渠道(按需配置) # +#################################### +# WeChat企业ID +WECHAT_CORPID= +# WeChat应用Secret +WECHAT_APP_SECRET= +# WeChat应用ID +WECHAT_APP_ID= +# WeChat代理服务器,无需代理需保留默认值 +WECHAT_PROXY=https://qyapi.weixin.qq.com +# WeChat Token +WECHAT_TOKEN= +# WeChat EncodingAESKey +WECHAT_ENCODING_AESKEY= +# WeChat 管理员 +WECHAT_ADMINS= +# Telegram Bot Token +TELEGRAM_TOKEN= +# Telegram Chat ID +TELEGRAM_CHAT_ID= +# Telegram 用户ID,使用,分隔 +TELEGRAM_USERS= +# Telegram 管理员ID,使用,分隔 +TELEGRAM_ADMINS= +# Slack Bot User OAuth Token +SLACK_OAUTH_TOKEN= +# Slack App-Level Token +SLACK_APP_TOKEN= +# Slack 频道名称 +SLACK_CHANNEL= +# SynologyChat Webhook +SYNOLOGYCHAT_WEBHOOK= +# SynologyChat Token +SYNOLOGYCHAT_TOKEN= + +#################################### +# 下载器(按需配置) # +#################################### +# Qbittorrent地址,IP:PORT +QB_HOST= +# Qbittorrent用户名 +QB_USER= +# Qbittorrent密码 +QB_PASSWORD= +# Qbittorrent分类自动管理 +QB_CATEGORY=false +# Qbittorrent按顺序下载 +QB_SEQUENTIAL=true +# Qbittorrent忽略队列限制,强制继续 +QB_FORCE_RESUME=false +# Transmission地址,IP:PORT +TR_HOST= +# Transmission用户名 +TR_USER= +# Transmission密码 +TR_PASSWORD= + +#################################### +# 媒体服务器(按需配置) # +#################################### +# EMBY服务器地址,IP:PORT +EMBY_HOST= +# EMBY Api Key +EMBY_API_KEY= +# Jellyfin服务器地址,IP:PORT +JELLYFIN_HOST= +# Jellyfin Api Key +JELLYFIN_API_KEY= +# Plex服务器地址,IP:PORT +PLEX_HOST= +# Plex Token +PLEX_TOKEN= + +#################################### +# 基础设置 # +#################################### # 【*】API密钥,建议更换复杂字符串,有Jellyseerr/Overseerr、媒体服务器Webhook等配置以及部分支持API_TOKEN的API中使用 API_TOKEN=moviepilot # 登录页面电影海报,tmdb/bing,tmdb要求能正常连接api.themoviedb.org @@ -25,10 +107,18 @@ TMDB_IMAGE_DOMAIN=image.tmdb.org TMDB_API_DOMAIN=api.themoviedb.org # 媒体识别来源 themoviedb/douban,使用themoviedb时需要确保能正常连接api.themoviedb.org,使用douban时不支持二级分类 RECOGNIZE_SOURCE=themoviedb -# 大内存模式,开启后会增加缓存数量,但会占用更多内存 -BIG_MEMORY_MODE=false -# 自动检查和更新站点资源包(索引、认证等) -AUTO_UPDATE_RESOURCE=true +# 【*】消息通知渠道 telegram/wechat/slack,多个通知渠道用,分隔,需要在上面配置对应消息通知渠道的参数 +MESSAGER=telegram +# 【*】下载器 qbittorrent/transmission,仅支持单个下载器,做为主下载器使用,需要在上面配置对应消下载器的参数 +DOWNLOADER=qbittorrent +# 下载器监控开关 +DOWNLOADER_MONITOR=true +# 【*】媒体服务器 emby/jellyfin/plex,多个媒体服务器,分割 +MEDIASERVER=emby +# 媒体服务器同步间隔(小时) +MEDIASERVER_SYNC_INTERVAL=6 +# 媒体服务器同步黑名单,多个媒体库名称,分割 +MEDIASERVER_SYNC_BLACKLIST= #################################### # 媒体识别&刮削 # @@ -41,7 +131,7 @@ SCRAP_FOLLOW_TMDB=true SCRAP_SOURCE=themoviedb #################################### -# 媒体库 # +# 文件整理 & 媒体库 # #################################### # 【*】转移方式 link/copy/move/softlink/rclone_copy/rclone_move TRANSFER_TYPE=copy @@ -88,69 +178,9 @@ SUBSCRIBE_SEARCH=false # 交互搜索自动下载用户ID(消息通知渠道的用户ID),使用,分割,未设置需要用户手动选择资源或者回复`0` AUTO_DOWNLOAD_USER= -#################################### -# 消息通知 # -#################################### -# 【*】消息通知渠道 telegram/wechat/slack,多个通知渠道用,分隔 -MESSAGER=telegram -# WeChat企业ID -WECHAT_CORPID= -# WeChat应用Secret -WECHAT_APP_SECRET= -# WeChat应用ID -WECHAT_APP_ID= -# WeChat代理服务器,无需代理需保留默认值 -WECHAT_PROXY=https://qyapi.weixin.qq.com -# WeChat Token -WECHAT_TOKEN= -# WeChat EncodingAESKey -WECHAT_ENCODING_AESKEY= -# WeChat 管理员 -WECHAT_ADMINS= -# Telegram Bot Token -TELEGRAM_TOKEN= -# Telegram Chat ID -TELEGRAM_CHAT_ID= -# Telegram 用户ID,使用,分隔 -TELEGRAM_USERS= -# Telegram 管理员ID,使用,分隔 -TELEGRAM_ADMINS= -# Slack Bot User OAuth Token -SLACK_OAUTH_TOKEN= -# Slack App-Level Token -SLACK_APP_TOKEN= -# Slack 频道名称 -SLACK_CHANNEL= -# SynologyChat Webhook -SYNOLOGYCHAT_WEBHOOK= -# SynologyChat Token -SYNOLOGYCHAT_TOKEN= - #################################### # 下载 # #################################### -# 【*】下载器 qbittorrent/transmission,仅支持单个下载器,做为主下载器使用,非主下载器只要配置了参数仍可在插件等使用 -DOWNLOADER=qbittorrent -# 下载器监控开关 -DOWNLOADER_MONITOR=true -# Qbittorrent地址,IP:PORT -QB_HOST= -# Qbittorrent用户名 -QB_USER= -# Qbittorrent密码 -QB_PASSWORD= -# Qbittorrent分类自动管理 -QB_CATEGORY=false -# Qbittorrent按顺序下载 -QB_SEQUENTIAL=true -# Qbittorrent忽略队列限制,强制继续 -QB_FORCE_RESUME=false -# Transmission地址,IP:PORT -TR_HOST= -# Transmission用户名 -TR_USER= -# Transmission密码 -TR_PASSWORD= # 种子标签 TORRENT_TAG=MOVIEPILOT # 【*】下载保存目录,容器内映射路径需要一致,支持不同类型设置不同的下载目录(跨盘) @@ -163,36 +193,14 @@ DOWNLOAD_TV_PATH= DOWNLOAD_ANIME_PATH= # 下载目录二级分类,开启后会根据配置 [category.yaml](https://github.com/jxxghp/MoviePilot/raw/main/config/category.yaml) 自动在下载目录下建立二级目录分类 DOWNLOAD_CATEGORY=false -# 下载站点字幕 +# 自动下载站点字幕(如有) DOWNLOAD_SUBTITLE=true #################################### -# 媒体服务器 # -#################################### -# 【*】媒体服务器 emby/jellyfin/plex,多个媒体服务器,分割 -MEDIASERVER=emby -# 媒体服务器同步间隔(小时) -MEDIASERVER_SYNC_INTERVAL=6 -# 媒体服务器同步黑名单,多个媒体库名称,分割 -MEDIASERVER_SYNC_BLACKLIST= -# EMBY服务器地址,IP:PORT -EMBY_HOST= -# EMBY Api Key -EMBY_API_KEY= -# Jellyfin服务器地址,IP:PORT -JELLYFIN_HOST= -# Jellyfin Api Key -JELLYFIN_API_KEY= -# Plex服务器地址,IP:PORT -PLEX_HOST= -# Plex Token -PLEX_TOKEN= - -#################################### -# 第三方服务 # +# 扩展 # #################################### # OCR服务器地址 OCR_HOST=https://movie-pilot.org # 插件市场仓库地址,多个地址使用`,`分隔,保留最后的/ -PLUGIN_MARKET=https://github.com/jxxghp/MoviePilot-Plugins/ +PLUGIN_MARKET=https://github.com/jxxghp/MoviePilot-Plugins