问题标签 [eyed3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
535 浏览

bash - Bash:如何将变量用作具有多组引号的参数

我有一个装满 mp3 的文件夹,我想删除所有 id3 用户文本帧(replaygain 除外)——我写的这段代码会做到这一点,但它会循环遍历每个文件,为每个找到的标签删除它。这导致脚本在每个 mp3 上循环多次以执行我想要的任务。

这是有效的代码:

我想提高效率,并像这样对每个 mp3 使用变量中的每个条目一次:

但我不知道该怎么做。我想我通过尝试使用变量中的开关一次制作所有列表来接近,但有一些奇怪的字符转义问题我无法弄清楚。

它制作了一个这样的列表(我尝试了双引号而不是单引号,并转义了双引号):

但我不能像这样成功地将它作为变量传递给 eyeD3:

我要么得到一个错误

“eyeD3:错误:无法识别的参数:信用:'专辑艺术家ID:'专辑ID:'专辑发行国家:'专辑状态:'专辑类型:'艺术家ID:'发行组ID:'01 - Do The Joy.mp3 02 - Love.mp3 03 - So Light Is Her Footfall.mp3 04 - Be A Bee.mp3 05 - Missing the Light Of The Day.mp3 06 - Tropical disease.mp3 07 - Heaven's Light.mp3 08 - Night Hunter.mp3 09 - Sing Sang Sung.mp3 10 - 吃我的节拍.mp3 11 - 你可以告诉每个人.mp3 12 - 非洲天鹅绒.mp3"

或者,如果我尝试使用转义引号,我最终会在现有标签之上添加更多重复标签,例如

它曾经在哪里

也许有一种更简单的方法来做我想做的事?

编辑:

eyeD3 命令的语法根据帮助:

举个例子:

应该从该目录中的所有 mp3 中删除带有 ALBUMARTISTSORT 描述的用户文本框架标签

带有一个文件的 eyeD3 的典型输出(输入 *mp3 只会为目录中的所有 mp3 生成多个条目)

0 投票
1 回答
1493 浏览

python - Python eyed3 检查嵌入图像

我需要一个脚本来检查整个目录中没有嵌入图像的 mp3 文件。这个函数应该返回这样一个列表。

使用另一个函数,我遍历每个目录和子目录并获取所有文件路径。然后我检查它们是否是 mp3 文件,如果不是,我删除它们。所以最后我有一个包含 173 个 mp3 文件的列表(在我的例子中)。文件路径是正确的,但是,上面的函数给了我错误。

输出 :

我做错了什么?

编辑: 我在检查图像之前打印出来f,似乎我的函数在崩溃之前已经检查了 20~ 个文件。

我修好了它:

但是,我真的不明白tag为什么None...

0 投票
0 回答
140 浏览

python - Python for 循环错误

我有一个完整的 mp3 文件的文件路径列表。

上面的代码打印“True”和一些文件路径。此特定文件没有 id3,因此 if 语句应该为真,并且此文件路径以后应该不再存在。不知何故,它仍在列表中,稍后会导致崩溃。

好吧,首先我检查该文件路径是否在列表中,我得到输出“True”,所以它在那里。然后我遍历列表中的每个文件路径,如果到达该文件路径,它应该打印“Gotcha”。然而,事实并非如此!怎么了?!

编辑:
我在for循环中删除了if语句之后的部分来测试一些东西,现在我得到了输出“Gotcha”。

0 投票
1 回答
2407 浏览

python - Python Eyed3 警告

我的一些 mp3 文件似乎有非标准类型。当我遍历它们时(我必须在我的程序中这样做),我会收到大量这样的警告:

如何防止 eyed3 打印它们?

编辑:我在加载文件时收到此警告,例如:

0 投票
1 回答
14913 浏览

python - 如何解码cp1252字符串?

我得到一个带有 eyeD3 的 mp3 标签(ID V1),并想了解它的编码。这是我尝试的:

如果我使用在线工具来解码该值,它表示可以通过更改编码将值Zемфира转换为正确值,并通过更改编码(如.ZемфираCP1252 → UTF-8ZåìôèðàCP1252 → CP1251

我应该怎么做才能从中Zемфира得到mp3artist_v1.encode('cp1252').decode('cp1251')效果很好,但是我怎样才能自动理解可能的编码(只有 3 种编码是可能的 - cp1251, cp1252, utf-8?我打算使用以下代码:

但这无济于事,因为我应该先用一个字符集编码,然后再用另一个字符集解码。

0 投票
1 回答
1739 浏览

python - 如何将 utf8 转换为 cp1251 以写入 mp3 文件的 ID3_V1 标签?

ID3_V1 仅支持latin1编码。为了用俄语字符编写 V1 标签,cp1251使用了编码。我想将数据从 V2 标签(unicode)复制到 V1 标签。我使用 eyeD3 使用以下代码获得 V2 标签:

返回以下内容:

看起来setAlbum需要utf-8字符串(?):

但是,如果我尝试这样做tag.setAlbum(mp3album_v2.encode('cp1251').encode('utf-8')),那么我会收到错误消息UnicodeDecodeError: 'utf8' codec can't decode byte 0xc6 in position 0: invalid continuation byte

0 投票
1 回答
3457 浏览

python - 在 Python 中使用 EyeD3 设置 ID3 注释

我在带有 mp3 文件的文件夹中有以下 python 脚本:

“流派”已正确设置或更改,但我的评论只是添加了一些垃圾。我在评论中添加了 winamp 中的“测试”,在我运行脚本并从命令行输出 ID3 信息后,我看到了:

我是否以错误的方式传递“评论”?

0 投票
1 回答
2128 浏览

linux - 使用 eyeD3 重命名 Bash 脚本中的 ID3 标签

我有以下脚本,它可以在目录中找到任何带有.mp3扩展名的incoming文件并将其移动到complete目录中——它工作得很好!

现在,我已经安装了 eyeD3 ( http://eyed3.nicfit.net/index.html ),并且我试图在整个过程中的某个地方重命名Title标签,然后再将它移到complete目录中。

我已经尝试了以下(以及更多),但它们都不起作用:

  1. 试图在同一行中完成所有操作...

  2. 试图通过拆分来做到这一点......

  3. 即使只是试图让 eyeD3 重命名标签,没有别的......

我知道我做错了什么,但我搜索了高低,我能找到的对 eyeD3 的新手支持几乎为零。那里的东西往往是python脚本,无论如何都不能真正做我需要的事情。

有人知道我要去哪里错了吗?

为了清楚起见,我想用相同的标题重命名此目录中每个 mp3 文件的标签,但所有 mp3 都有不同的文件名,这就是我使用通配符而不是文件名的原因。也许我这样做是错误的?

0 投票
1 回答
1184 浏览

linux - 使用 Bash 重命名和移动通配符文件

我正在尝试使用此 bash 脚本执行以下操作,但我遇到了困难..

1) 在 /usr/incoming/ 目录中找到每个扩展名为 .mp3 的文件

2) 使用 eyeD3 剥离所有现有的 ID3 标签

3) 使用 eyeD3 将标题标签“NEW NAME”写回文件

4) 使用 mv 将每个扩展名为 .mp3 的文件重命名为 latest.mp3,然后强制将其移动(因此它将覆盖任何其他同名文件)到 usr/complete 目录。

除了最后一点(No.4)之外,这一切都在工作。

我知道我用 mv 命令做错了,但我不确定是什么。

这是代码:

谁能告诉我我的方式的错误?;)

0 投票
2 回答
2656 浏览

python - 使用 eye3d 和 python 获取 mp3 播放时间

我很难使用 eye3d python 模块返回 mp3 的播放时间......我可以使用以下内容检索标签信息等:

但无法掌握如何使用此处看到的“class eyed3.core.AudioInfo [source]”(http://eyed3.nicfit.net/api/eyed3.html)来获得播放时间。我只是想返回歌曲的长度(然后最终遍历播放列表以找到播放列表的播放时间)。

谢谢