9次发布
0.3.1 | 2022年6月5日 |
---|---|
0.3.0 | 2021年2月24日 |
0.2.0 | 2021年2月17日 |
0.1.5 | 2021年1月3日 |
0.1.1 | 2019年2月24日 |
#379 在 多媒体
32 每月下载量
10MB
167 行
此工具封装了 rust-id3 库,提供了一种轻松操作MP3文件中嵌入的封面艺术的方法。嵌入的图像通常会被音乐播放器和缩略图生成器识别。
该项目是为了我个人使用而制作的,因此可能存在不是所有情况下都理想的假设。如果它不适合您,请打开 一个GitHub问题。
包含三个可执行文件
id3-image-embed
id3-image-extract
id3-image-remove
以下是它们的使用总结。您也可以使用 --help
来获取更多信息。
嵌入
要将图像嵌入到MP3文件中,请使用 id3-image-embed
id3-image-embed <music-file.mp3> [image-file.jpg]
该图像不一定是JPEG,只要 image 库接受即可。但是,它将被嵌入为JPEG,没有特定的原因,只是看起来像是一个合理的默认选择。
ID3标签将存储为ID3v2.3,并直接在音乐文件中写入。
图像文件路径是可选的——如果省略,程序将寻找与音乐文件同名的图像,但扩展名为"jpg"。这有点具体,但与默认提取文件名相匹配,使得提取→编辑→嵌入变得容易。
提取
要从MP3中提取嵌入的图像文件,请使用 id3-image-extract
id3-image-extract <music-file.mp3> [image-file.jpg]
图像文件路径是可选的——如果省略,图像将与音乐文件同名,但扩展名为jpg
。如果已存在同名图像文件,它将被静默覆盖。如果歌曲文件没有嵌入的图像,您将收到错误消息。
您可以为脚本目的附加一个 -v
或 --verbose
标志,以将图像文件名输出到stdout。
删除
使用 id3-image-remove
从MP3文件中删除所有嵌入的图像
id3-image-remove <music-file.mp3>
如果您不喜欢封面艺术并希望“清理”MP3文件,这可能很有用。工具在删除之前会要求确认,以防出错。如果您正在为脚本目的使用它,可以附加 --no-confirm
来避免此步骤。
附加脚本
您可以使用 id3-image-extract
来构建一个“预览”工具,快速查看图像的封面艺术。您只需要一个临时文件名来提取到。
#! /bin/sh
set -e
if [ $# -lt 1 ]; then
echo "USAGE: id3-image-preview <music-file.mp3>"
exit 1
fi
music_file=$1
# Create an auto-removed file when script exits
image_file=$(mktemp --suffix='.jpg')
exec 3>"$image_file"
rm "$image_file"
id3-image-extract "$music_file" "$image_file"
// Would probably work with `open` on a mac, but hasn't been tested:
xdg-open "$image_file"
您还可以编写一个脚本,使用GUI文件选择器选择要嵌入的图像。您需要使用 zenity
来完成这个任务。
#! /bin/sh
set -e
if [ $# -lt 1 ]; then
echo "USAGE: id3-image-gui-embed <music-file.mp3>"
exit 1
fi
music_file=$1
# Pick the image file with a file chooser
image_file=$(zenity --file-selection --filename="$(pwd)/" --title="Select Cover Art")
id3-image-embed "$music_file" "$image_file"
这个特定的弹出窗口不会仅过滤图像,因为我无法找出如何在 zenity 中创建一个通用的“图像”过滤器。您可以将 --file-filter='*.jpg'
添加到 zenity 以仅显示 JPEG 文件。
当这些脚本附加到GUI文件管理器时尤其方便。我首选的,Thunar,允许“自定义操作”,这些操作可以插入其中。
测试所用的音乐
Christian Bakker 的电梯音乐尝试1:http://www.jamendo.com/en/list/a98147/echoes-from-the-past
可能未来的工作
- 在提取时不要静默覆盖图像
- 允许不同的输出格式
- 允许不同的ID3版本
- 允许嵌入/提取多个图像(目前,只能提取第一个)
- 用更简单的CLI解决方案替换 structopt + clap -- 简单项目的许多依赖项
依赖项
~8MB
~118K SLoC