管理媒体的脚本
media-management-scripts的Python项目详细描述
媒体管理脚本
这是一组用于管理媒体文件(如电影或电视节目)的命令行工具。
安装
安装工具:
pip安装媒体管理脚本
您还需要安装其他程序:
Mac操作系统
brew安装ffmpeg对话框
ubuntu
apt install ffmpeg dialog
TVDB
如果要使用TVDB执行某些命令,请在https://www.thetVDB.com上创建一个帐户,然后在此处创建API密钥
创建一个包含以下内容的文件
[tvdb]username=<your_user_name>userkey=<your_user_key>apikey=<your_api_key>
用法
将--help
传递给子命令以获取详细帮助。下面将详细介绍主要功能。
大多数重命名或移动文件的命令都有一个dry run模式(-n
或--dry run
),该模式将输出操作,以便您可以验证结果。
主要工具
转换
元数据
重命名
搜索
电视重命名
帮助输出 将视频文件转换为不同的视频或音频编解码器 获取文件的元数据的简单输出。或者以json格式获取大量元数据 重命名文件的灵活工具 根据模板重命名文件。 模板可以通过用${…}包围来包含变量或表达式。函数可以像 以下变量可用: 提供以下功能: 正则表达式:
如果包含正则表达式,则匹配组(0=完全匹配,>;0=匹配组)在列表"re"或"regex"中可用。
如果可能的话,每个匹配组都会转换为int,因此填充了零的int将丢失零。 示例: 在目录中搜索匹配参数的视频文件。注意:这可能需要很长时间,因为它必须读取每个文件的元数据。
您可以使用缓存元数据的 如果视频有多个流,则比较意味着至少有一个流匹配。 可用参数: 视频: 音频: 字幕: 其他: 元数据: 功能: 示例: 将目录中的文件重命名为sxxeyy 例如,如果你撕下了一些battlestar galactica的图片,你可能会有一个类似这样的文件结构: 结果 您可以通过创建文件 您可以看到哪些工具与管理介质一起使用
配置文件示例usage: manage-media [-h] [-v]
Sub commands
combine-subtitles Combine a video files with subtitle file
combine-all Combine a directory tree of video files with subtitle
file
concat-mp4 Concat multiple mp4 files together
convert Convert a file
find-episodes Find Season/Episode/Part using file names
itunes Attempts to rename iTunes episodes to the standard
Plex format.
metadata Show metadata for a file
compare Compare metadata between files
compare-directory Show metadata for a file
movie-rename Renames a file based on TheMovieDB
rename Renames a set of files to the specified template
select-streams Extract specific streams in a video file to a new file
split Split a file
subtitles Convert subtitles to SRT
tv-rename Renames files in a directory to sXXeYY. Can also use
TVDB to name files (<show> - SxxeYY - <episode_name>)
optional arguments:
-h, --help show this help message and exit
-v, --version Display version
转换
示例:
管理媒体转换--视频编解码器h264<;输入>;<;输出>;
管理媒体转换--视频编解码器HEVC<;输入>;<;输出>;
管理媒体转换--视频编解码器HEVC--音频编解码器AC3<;输入>;<;输出>;
管理媒体转换--vc hevc--ac copy<;input>;<;output>;
管理媒体转换--缩放480
管理媒体转换--VC H264--取消交错
管理媒体转换--vc h264--大容量<;输入目录>;<;输出目录>;
元数据
简单输出
管理媒体元数据<;输入>;
Battlestar Galatica (2003) - s00e01 - Battlestar Galactica The Miniseries (1).mkv
Directory: /Volumes/Media/TV Shows/Battlestar Galactica/Season 0/
Title: Battlestar Galactica: Season 1 (Disc 1)
Size: 6.8GB
Format: matroska,webm
Duration: 1h34m39s
Bitrate: 10117 Kbps
Video: h264 8 bit (1920x1080)
Audio:
aac (eng, 5.1)
Subtitles: eng, spa, fra
Ripped: True
json
管理媒体元数据--json<;input>;
{"file":"/Volumes/Media/TV Shows/Battlestar Galactica/Season 0/Battlestar Galatica (2003) - s00e01 - Battlestar Galactica The Miniseries (1).mkv","title":"Battlestar Galactica: Season 1 (Disc 1)","duration":5679.362,"duration_str":"1h34m39s","size":7354722701,"size_str":"6.8GB","resolution":"HIGH_DEF","bit_rate":10359928,"bit_rate_str":"10117 Kbps","ripped":true,"format":"matroska,webm","format_long_name":"Matroska / WebM","mime_type":"video/x-matroska","tags":{"title":"Battlestar Galactica: Season 1 (Disc 1)","RIPPED":"true","ENCODER":"Lavf57.56.100"},"video_streams":[...],"audio_streams":[...],"subtitle_streams":[...],"other_streams":[...],"chapters":[...],"interlace":null}
重命名
${upper(i)}
或${i upper}
那样调用
i
/索引
-正在重命名的当前文件的索引wo_ext
-不带扩展名的文件名basename
ext
-当前文件的文件扩展名(不带".")文件名
-当前文件的文件名(basename)re
/regex
-regex匹配组的列表(使用re[0]
,re[1]
等)大写
-大写输入小写
-小写输入if empty(a,b,c)
-如果a为空,则b,否则clpad(a,b:int)
-左焊盘a到长度b(默认为2+),带空格zpad(a,b:int)
-左焊盘a到长度b(默认为2+)带零lpad
/zpad
-默认情况下,pad至少为2个字符。如果有100多个文件,则为3个字符、1000多个文件、4个字符等。Input: S02E04.mp4
Regex: S(\d+)E(\d+)
Template: 'Season ${re[1]} Episode ${re[2]}.{ext}'
Result: 'Season 2 Episode 4.mp4'
Template: 'Season ${re[1] | zpad} Episode ${zpad(re[2], 3)}.{ext}'
Results: 'Season 02 Episode 004.mp4'
Input: whatever.mp4
Regex: S(\d+)E(\d)
Template: 'Season ${ifempty(re[1], 'unknown', re[1])} Episode ${re[2]}.{ext}'
Result: 'Season unknown Episode .mp4'
搜索
--db<;file
加速同一目录中的多个搜索。v.codec
-视频编解码器(h264、h265、mpeg2等)v.width
-视频像素宽度v.height
-视频像素高度a.codec
-音频编解码器(AAC,AC3)a.频道
-音频频道的数量(立体声=2、5.1=6等)a.lang
-音频曲目的语言
s.codec
-字幕编解码器(srt、hdmv-pgs、mov-text等)s.lang
-字幕曲目的语言
翻录
-视频是否标记为翻录比特率
-总平均比特率分辨率
-分辨率名称(低分辨率、高分辨率等)meta.xyz
-遵循基本的JSON元数据输出is null(xyz)
-如果值为null,则返回true
全部(xyz)
-检查所有流而不是一个流匹配
v.codec=h264
v.codec=h264和a.codec=aac和a.channels=2
a.codec=aac和(v.codec=h265或v.codec=h264)
a.codec=aac和v.codec输入[h265,h264]
s.lang!=发动机
v.height<;1080
全部(a.codec)=AAC
电视重命名
管理媒体电视重命名-s 1-e1--tvdb--show"battlestar galactica"--输出"bsg/seasy 1"bsg\u seasure1\u光盘*
BRG
配置
~/.config/mms/config.ini
来配置在何处查找各种可执行文件。默认情况下,命令将使用路径中的可执行文件。[main]ffmpeg=/path/to/ffmpeg
推荐PyPI第三方库