Monitr: 构建状态

说实话,管理你的 Plex 媒体可能会很麻烦。特别是当你一次性想要添加大量新内容,或者你一直在不断添加新内容时!这就是 Monitr 的用武之地。

下载电影或电视剧,或者翻录 CD/DVD/蓝光光盘,现在是将新媒体添加到你的 Plex 服务器上最困难的部分。不再需要手动放置文件或拼凑媒体的正确元数据。Monitr 使向 Plex 服务器添加新媒体变得更加容易。只需确保将新文件添加到指定的“下载”目录即可! Monitr 会将它准确地放置在 Plex 想要的位置,并适当地命名它,以便 Plex 可以识别它并找到其正确的元数据匹配项。

它的工作原理是监视指定的“下载”目录,每当向该目录添加新的视频、音频或字幕文件时,Monitr 会自动将其移动到应有的位置,然后 Plex 负责其余的工作!

你还可以配置 Monitr 以自动将媒体转码为 Plex Direct Play/Stream 能够播放的格式。 这意味着 Plex 无需即时转码媒体,并且有助于在观看电影或电视节目时降低 CPU 负载。

它使用 Apple 的 Swift 语言(以及少量 C 语言,用于 Linux 上的一些东西)支持 Linux 或 macOS 操作系统。它还有一些依赖项,例如 ruby(如果你启用了转换功能)。


功能


安装

Linux(在 Ubuntu 16.04 上测试)

# transcode_video dependency installation (only needed if you're going to enable automatic media conversion)
sudo add-apt-repository ppa:stebbins/handbrake-releases
sudo add-apt-repository ppa:jonathonf/ffmpeg-3
sudo apt-get remove handbrake* ffmpeg && sudo apt autoremove
sudo apt-get update
sudo apt-get install -y ruby handbrake-cli ffmpeg mkvtoolnix mp4v2-utils libav-tools x264 x265

# transcode_video installation (only needed if you're going to enable automatic media conversion)
sudo gem install video_transcoding

# Swiftenv installation (makes installing and updating swift super easy)
git clone https://github.com/kylef/swiftenv.git ~/.swiftenv
echo 'export SWIFTENV_ROOT="$HOME/.swiftenv"' >> ~/.bash_profile
echo 'export PATH="$SWIFTENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(swiftenv init -)"' >> ~/.bash_profile
source ~/.bash_profile

# Plex-Monitr and swift installation
git clone https://github.com/Ponyboy47/Plex-Monitr.git
cd Plex-Monitr
swiftenv install $(cat .swift-version)
swift build
swift run monitr

macOS (在 macOS High Sierra 10.13.2 上测试)

# Homebrew installation (To install swiftenv and also the transcode_video dependencies)
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

# transcode_video dependencies and installation (only needed if you're going to enable automatic media conversion)
brew install handbrake ffmpeg mkvtoolnix mp4v2 && gem install video_transcoding

# Makes installing and updating swift super easy
brew install kylef/formulae/swiftenv

# Plex-Monitr and swift installation
git clone https://github.com/Ponyboy47/Plex-Monitr.git
cd Plex-Monitr
swiftenv install $(cat .swift-version)
swift build
swift run monitr

更新

cd ~/Plex-Monitr
rm Package.{resolved,pins}
# If config changes have been made, you will need to regenerate and save your new config
rm ~/.config/monitr/settings.json
git pull
swiftenv install $(.swift-version)
swift package update
swift build
swift run monitr

使用方法

命令行参数

有很多方法可以配置你的 Monitr。 像任何 CLI 应用程序一样,可以同时使用这些参数中的任何一个来创建你需要的精确 Monitr。

查看用法/帮助文本

-h--help

查看 monitr 的当前版本

-v--version

设置要使用/保存到的配置文件

-f--config

此默认值为 ~/.config/monitr/settings.json。

设置 Plex 媒体库目录

-p--plex-dir

如果未指定,则使用 /var/lib/plexmediaserver/Library(Ubuntu 上的默认位置)。

设置要监视的下载目录

-d--download-dirs

如果未指定,则使用 ~/Downloads(这是我在 Ubuntu 上保留自己的下载文件的地方)。
注意:这可以是逗号分隔的要监视的路径列表。

设置要监视的家庭视频目录

--home-video-download-dirs

如果未指定,则使用 ~/HomeVideos。
注意:这可以是逗号分隔的要监视的路径列表。

设置转换标志(是否将媒体转换为 Plex Direct Play 格式)

-c--convert

默认为 false。

设置是立即转换媒体文件还是作为计划任务转换

-i--convert-immediately

默认为 true
如果为 true,则在将文件移动到其相应的 Plex 目录之前转换文件

设置计划的媒体文件转换任务何时开始(使用 cron 字符串)

-a--convert-cron-start

默认为 "0 0 * * *" (每天午夜)
有关 Cron 格式的信息,请参见 https://en.wikipedia.org/wiki/Cron

设置计划的媒体文件转换任务何时停止(使用 cron 字符串)

-z --convert-cron-end

默认为 "0 8 * * *" (每天早上 8 点)
有关 Cron 格式的信息,请参见 https://en.wikipedia.org/wiki/Cron
注意:如果此时正在运行作业,它将运行到完成,但不会启动新的转换

设置我们可以一次运行的并发转换线程数

--convert-threads

默认为 1
注意:初步性能测试表明,使用多个线程仍将在相同的时间内转换相同数量的文件。 单个线程将非常快速地转换一个文件,而多个线程同时转换多个文件,但是每个文件的转换速度都较慢。 总的来说,转换一批文件往往需要相同的时间。

设置是否在转换后删除原始媒体文件

--delete-original

默认为 false
注意:如果为 false,则未转换的媒体文件将与转换后的媒体文件一起放置在 plex 位置。 原始文件的文件名末尾(但在文件扩展名之前)将附加“ - original”。

设置 transcode-video 命令以使用约束平均比特率速率控制系统

--abr--average-bitrate-rcs
默认为 false
注意:要确定是否应使用此选项,请运行 transcode-video --help 并阅读有关 --abr 选项的信息。

使用 h265 编码器而不是默认的 Handbrake 编码器 (h264)

--x265
默认为 false
注意:要确定是否应使用此选项,你可能需要查看 此链接,如果你尝试在转换时大幅减小文件大小并且可以使用 h265 转换器。
如果你需要我公开 transcode-video 命令的其他选项,请创建一个新问题,我可以很容易地做到这一点。

transcode-video 命令中要使用的目标

-t--target
可以多次使用
注意:要确定是否/如何使用此选项,请运行 transcode-video --help 并阅读有关 --target 选项的信息。

要使用的转码速度

--speed--transcode-speed

默认为 medium
注意:有效选项为 default、quick 或 veryquick。 速度越快,文件越大,质量可能会降低。
quick 选项通常会产生 70-80% 更快的转码速度,而质量几乎没有可察觉的变化。
veryquick 选项通常具有 100-120% 更快的转码速度,质量差异略微明显,并且文件明显更大。

x264 速度预设

--x264-preset

默认为 medium
注意:有效选项为 veryslow、slower、slow、default、fast、faster、veryfast。
预设越快,质量越低,文件大小越大。

设置转换视频文件时要使用的容器

--convert-video-container

默认为 mp4,因为它是各种 Plex 设备中最常用的 DirectPlay 支持的容器

设置转换视频流时要使用的编解码器

--convert-video-codec

默认为 h264,因为它是 Plex 中 DirectPlay 最常用的支持编解码器

设置转换音频文件时要使用的容器

--convert-audio-container

默认为 aac(目前)
注意:我没有计划提供大量音频文件转换支持。 我知道 Plex 通常支持流式传输 aac,这就是我使用 aac 的原因,但是我对 Plex 音频流传输的了解不如我对视频流传输的要求了解得多。

设置转换音频流时要使用的编解码器

--convert-audio-codec

默认为 aac,因为它是 Plex 中 DirectPlay 最常用的支持编解码器

设置是否扫描外语音频字幕并将其刻录到视频流中

--convert-video-subtitle-scan
默认为 false
注意:这是 transcode_video 工具中的一项实验性功能。 如果出现问题,你最终可能会将错误的字幕轨道刻录到视频中。 请参阅 @donmelton 在他的 transcode_video 中有关此功能的文档。 如果你要使用此功能,强烈建议你不要使用 --delete-original 标志,以确保安全。

设置转换媒体时要使用的首选语言

--convert-language

默认为 eng
注意:使用 ISO 639-2 语言代码,我只在此项目中包含了一小部分。 如果你需要添加一个,请提交一个 issue

设置转换视频流时要使用的最大帧速率

--convert-video-max-framerate

默认为 30.0

设置当 deleteOriginal 为 false 时要用于转换作业的目录

--convert-temp-dir

默认为 /tmp/monitrConversions

设置是否应删除或保留视频媒体的字幕文件

--delete-subtitles

默认为 false

设置是否将这些配置设置保存到配置文件中

-s--save-settings
默认为 false
当前设置保存在 --config-file 路径中(默认为 ~/.config/monitr/settings.json)
注意:如果为 true,则后续 monitr 实例将从 --config-file 选项加载设置文件,并使用其配置值而不是通常的默认值。

设置要使用的默认日志记录级别

--level--log-level

默认值为 error
注意:有效选项为 error、warn、warning、info、debug、verbose。

设置要使用的日志文件

-o--log-file

默认为 nil,这意味着日志仅写入 stdout。
注意:如果设置,并且日志记录级别为 debug 或 verbose,则日志将写入指定的文件以及 stdout。


待办事项