批处理媒体的命令行工具
batchmp的Python项目详细描述
状态: 偶尔开发的雨天周末项目:)
要求:
- python 3.4.x或更高版本
安装:
- 从pypi:
$pip install batchmp
- 最新源代码库:
$pip install git+https://github.com/akpw/batch mp tools.git
博客:
说明
对媒体文件进行批处理管理,从基本属性(如文件名、标签/插图元数据)到媒体内容的高级操作。
该项目是用python 3.4编写的,目前由三个主要的命令行实用程序组成。这三种方法共享应用于生成的文件系统条目流的各种转换的核心概念,因此它们也共享相同的全局选项集。一个快速检查的方法是运行:
$ renamer -h
$ tagger -h
$ bmfp -h
它将显示全局选项以及每个工具的特定命令。可以使用类似的方法获取有关命令级别的更多信息,例如了解有关 默认情况下,工具总是在实际处理之前(只要可能)可视化目标更改。 有关每个实用程序的更多详细信息: 重命名程序是一个多平台批量重命名工具。除了基于regexp的replace、添加文本/日期等常见操作外,它还支持高级操作,如replace期间的可扩展模板处理、跨嵌套目录的多级索引、展开文件夹和清理非媒体文件。
最简单的是,重命名器可用于打印当前目录的内容: 没有命令参数,重命名器使用 对于当前文件夹的所有子目录中的所有M4A文件的多级索引: 使用 标记器管理媒体元数据,如标记和图片。在多个嵌套目录上设置所选媒体文件中的那些文件现在变得轻而易举了,只需几个简单的命令就可以在几乎任何实际可想象的音频/视频媒体格式上统一工作。虽然易于使用,标记器支持高级元数据操作,例如基于regexp的替换、可扩展的模板处理等。例如,将title标记设置为相应的文件名,后跟track和tracktotal标记的值: 上面的命令显示了一些可用的全局选项: bmfp都是关于高效的媒体内容处理,例如各种格式之间的转换、标准化音量、分割/分割媒体文件、去噪由于处理媒体文件通常会消耗资源,因此bmfp被设计为利用多核处理器。默认情况下,它会自动将作业分解为单独的任务,然后在可用的CPU内核上作为单独的进程运行。
bmfp是在ffmpeg上构建的,需要在命令行中安装并提供。bmfp可以看作是一个批处理ffmpeg运行程序,旨在使ffmpeg的常见使用变得容易,同时又不限制其全部功率。 例如,要将上述示例中的所有文件从m4a转换为flac: 要检查结果,我们只需使用标记器的打印媒体文件信息的能力: 从一个简短的一瞥,一切看起来都很好。bmfp使用ffmpeg进行实际的转换,同时处理所有其他事情,如保存标签/图片等。 我将在以后的博客中继续提供更多的示例和常见用例。 "MP3"、"MP4"、"M4A"、"M4V"、"AIFF"、"ASF"、"QuickTime/MOV",
'flac'、'monkeysaudio'、'musepack',
"ogg flac"、"ogg speex"、"ogg theora"、"ogg vorbis",
"真音频"、"wavpack"、"optimfrog"
通过ffmpeg支持:"avi"、"flv"、"mkv"、"mka" 运行测试renamer replace的更多信息
$ renamer replace -h
$ renamer
print
作为默认命令。这也适用于$tagger
和$bmfp
,每个工具都显示与其预期用途相关的信息。
更高级一点,查看第7层嵌套文件夹中隐藏的内容: $ renamer print -sl 7
$ renamer -r -in '*.m4a' index
/Desktop/_test/Gould
|-/1
|- 01 Glenn Gould French Suite 1 In D, BWV812 1 Allemande.m4a
|- 02 Glenn Gould French Suite 1 In D, BWV812 2 Courante.m4a
|- 03 Glenn Gould French Suite 1 In D, BWV812 3 Sarabande.m4a
|-/2
|- 01 Bach, Johann Sebastian French Suite 5 In G Major, BWV816 1 Allemande.m4a
|- 02 Bach, Johann Sebastian French Suite 5 In G Major, BWV816 2 Courante.m4a
|- 03 Bach, Johann Sebastian French Suite 5 In G Major, BWV816 3 Sarabande.m4a
|-/_Art
6 files, 3 folders
Proceed? [y/n]:
-sq
开关也支持顺序索引。这里有一个重要的细节,默认情况下,重命名程序是可视化目标更改,并在实际执行任何操作之前请求继续操作的权限。 $ tagger -r -in '*BWV816 1*' set --title '$filename, $track of $tracktotal'
Targeted after processing:
/Desktop/_test/Gould
|-/1
|-/2
|- Bach, Johann Sebastian French Suite 5 In G Major, BWV816 1 Allemande.m4a
Title: Bach, Johann Sebastian French Suite 5 In G Major, BWV816 1 Allemande, 1 of 26
Album: Bach French Suites BWV 812-817 Vol. II; Glenn Gould
Artist: Glenn Gould
Album Artist: Glenn Gould
Genre: Classical
Composer: Johann Sebastian Bach (1685-1750)
Year: 1994
Track: 1/26
Disk: 2/2
|-/Art
1 files, 3 folders
Proceed? [y/n]: n
-r
用于递归到嵌套文件夹和-in
选择媒体文件。在上面的例子中,只选择了一个文件(为了输出简洁),这也可以通过使用文件源模式的-f
来实现。 $ bmfp -r convert -la -tf FLAC
-tf
开关指定目标格式,而-la
显式地告诉bmfp进行无损转换。 $ tagger -r -in '*BWV816 1*' print -st -ss
/Users/AKPower/Desktop/_test/Gould
|-/1
|-/2
|- 7.4MB Bach, Johann Sebastian French Suite 5 in G major, BWV816 1 Allemande.flac
Title: French Suite 5 in G major, BWV 816 - 1 Allemande
Album: Bach French Suites BWV 812-817 Vol. II; Glenn Gould
Artist: Glenn Gould
Album Artist: Glenn Gould
Genre: Classical
Composer: Johann Sebastian Bach (1685-1750)
Year: 1994
Track: 1/26
Disk: 2/2
Format: FLAC
Duration: 0:01:48, Bit rate: 548kb/s, Sample rate: 44100Hz, Bit depth: 16
|-/_backup_15Mar25_094341
|- 7.9MB Bach, Johann Sebastian French Suite 5 in G major, BWV816 1 Allemande.m4a
Title: French Suite 5 in G major, BWV 816 - 1 Allemande
Album: Bach French Suites BWV 812-817 Vol. II; Glenn Gould
Artist: Glenn Gould
Album Artist: Glenn Gould
Genre: Classical
Composer: Johann Sebastian Bach (1685-1750)
Year: 1994
Track: 1/26
Disk: 2/2
Format: ALAC
Duration: 0:01:48, Bit rate: 579kb/s, Sample rate: 44100Hz, Bit depth: 16
|-/Art
2 files, 4 folders
Total size: 15.2MB
cli命令的简要说明(使用-h展开单个命令的详细信息)
重命名程序
Batch renaming of files and directories
. source directory or source file modes
. visualises original / targeted folders structure before actual processing
. supports recursion, can optionally stop at specified end_level
. supports flattening folders beyond specified target_level
. supports include / exclude patterns (Unix style)
. display sorting:
.. by size/date, ascending/descending
. action commands:
.. print Prints source directory
.. flatten Flatten all folders below target level, moving the
files up at the target level. By default, deletes all empty flattened folders
.. index Adds index to files and directories names
.. replace RegExp-based replace in files and directories names. Supports expandable templates,
such as $dirname, $pardirname, $atime, $ctime, etc. For media files, also can process
tag-based templates such as $title, $album, $artist, $albumartist, $genre, $year, $track,
etc.
.. add_date Adds date to files and directories names
.. add_text Adds text to files and directories names
.. remove Removes n characters from files and directories names
.. capitalize Capitalizes words in files / directories names
.. delete Delete selected files and directories
Usage: renamer [-h] [-d DIR] [-f FILE] [Global Options] {Commands} [Commands Options]
Global Options:
Input source mode:
[-d, --dir] Source directory (default is the current directory)
[-f, --file] File to process
Recursion mode:
[-r, --recursive] Recurse into nested folders
[-el, --end-level] End level for recursion into nested folders
Filter files or folders:
[-in, --include] Include: Unix-style name patterns separated by ';'
[-ex, --exclude] Exclude: Unix-style name patterns separated by ';'
(excludes hidden files by default)
[-fd, --filter-dirs] Enable Include/Exclude patterns on directories
[-af, --all-files] Disable Include/Exclude patterns on files
(shows hidden files excluded by default)
Miscellaneous:
[-s, --sort]{na|nd|sa|sd} Sort order for files / folders (name | date, asc | desc)
[-ni, nested-indent] Indent for printing nested directories
[-q, --quiet] Do not visualise changes / show messages during processing
Commands:
{print, index, add_date, add_text, remove, replace, capitalize, flatten, delete, version, info}
$ renamer {command} -h #run this for detailed help on individual commands
标记器
支持的格式:
0
$ renamer -h
$ tagger -h
$ bmfp -h
bmfp(需要ffmpeg)
1
$ renamer -h
$ tagger -h
$ bmfp -h
安装开发版本
$python setup.py develop
$python setup.py test
推荐PyPI第三方库