#image #id3 #mp3

bin+lib id3-image-rs

将图像嵌入MP3文件的工具(分支,更新和扩展API)

3 个版本

0.4.2 2022年10月1日
0.4.1 2022年6月5日
0.4.0 2022年3月22日

#379 in 多媒体

MIT 许可证

10MB
192

id3-image-rs

Build Status

该项目是 id3_image 库的分支,具有扩展API和更新的依赖关系。

对于这项工作,99.9%的功劳应该归功于 此库的初始作者


此工具封装了 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中创建一个通用的“图像”过滤器。您可以通过向zenity添加--file-filter='*.jpg'来显示仅JPEG文件。

当与GUI文件管理器结合使用时,这些脚本特别方便。我首选的一个是Thunar,它允许“自定义操作”,这两个可以插入。

测试中使用的音乐

Christian Bakker的Elevator Music Attempt 1: http://www.jamendo.com/en/list/a98147/echoes-from-the-past

可能未来的工作

  • 在提取时不静默覆盖图像
  • 允许不同的输出格式
  • 允许不同的ID3版本
  • 允许嵌入/提取多个图像(目前,只能提取第一个)
  • 用更简单的CLI解决方案替换structopt + clap —— 对于一个简单的项目来说,有很多依赖关系

依赖关系

~16MB
~117K SLoC