如何在 python 或 php 中从 mp3 的 ID3 中删除版权标签?
Posted
技术标签:
【中文标题】如何在 python 或 php 中从 mp3 的 ID3 中删除版权标签?【英文标题】:How can I remove the copyright tag from ID3 of mp3s in python or php? 【发布时间】:2012-02-03 08:31:16 【问题描述】:我有一堆很旧的 mp3 文件,没有任何版权。然而,我从那里得到它们的地方已经用它自己的网站 url 填充了版权标签。
我想知道是否有一种简单的方法可以以编程方式删除这些标签?有一个 winamp 插件可以让我为每首歌都这样做,但这不是很可行。
编辑:版权是 ID3 标签的一部分吗?
谢谢, -Roozbeh
【问题讨论】:
***.com/questions/1000132/… 除了技术方面:您的“mp3”文件确实需要很旧才能没有版权 - 因为版权是音乐的,而不是文件的,即使那样,它也会发送垃圾邮件作者去世后 70 年。所以 - 你要么处理 1920 年前的音乐 - 要么处理作者明确放入公共领域的音乐,以便他们“没有版权”。 他们已经很老了,连英文都不会…… 【参考方案1】:对于 Python,有 mutagen
库和工具,非常易于使用。
但是,如果您不希望以编程方式实际执行此操作,那么在 Windows 上可以使用免费软件应用程序 MP3Tag,我可以衷心推荐它。它会进行批量转换等等。
【讨论】:
顺便说一句,这在我的 MAC 上效果很好,但是当我在 Windows 上运行我的代码时,它会删除所有 ID3 标签,并且不允许我再修改标签......甚至不能手动修改... Windows 中出现这种行为是否有原因?【参考方案2】:您可以使用getID3 库。
示例如下:
<?php
$TaggingFormat = 'UTF-8';
require_once('../getid3/getid3.php');
// Initialize getID3 engine
$getID3 = new getID3;
$getID3->setOption(array('encoding'=>$TaggingFormat));
require_once('../getid3/write.php');
// Initialize getID3 tag-writing module
$tagwriter = new getid3_writetags;
//$tagwriter->filename = '/path/to/file.mp3';
$tagwriter->filename = 'd:/file.mp3';
$tagwriter->filename = 'P:/webroot/_dev/getID3/testfiles/_writing/2011-02-02/test.mp3';
//$tagwriter->tagformats = array('id3v1', 'id3v2.3');
$tagwriter->tagformats = array('id3v2.3');
// set various options (optional)
$tagwriter->overwrite_tags = true;
$tagwriter->overwrite_tags = false;
$tagwriter->tag_encoding = $TaggingFormat;
$tagwriter->remove_other_tags = true;
// populate data array
$TagData = array(
'title' => array('My Song'),
'artist' => array('The Artist'),
'album' => array('Greatest Hits'),
'year' => array('2004'),
'genre' => array('Rock'),
'comment' => array('excellent!'),
'track' => array('04/16'),
);
$tagwriter->tag_data = $TagData;
// write tags
if ($tagwriter->WriteTags())
echo 'Successfully wrote tags<br>';
if (!empty($tagwriter->warnings))
echo 'There were some warnings:<br>'.implode('<br><br>', $tagwriter->warnings);
else
echo 'Failed to write tags!<br>'.implode('<br><br>', $tagwriter->errors);
?>
【讨论】:
【参考方案3】:您可以只使用 VLC 播放器。点击工具->媒体信息
【讨论】:
【参考方案4】:有像 Amarok 这样的开源工具可以让您批量更改 ID3 标签。
看看:http://amarok.kde.org/
【讨论】:
它是否允许批量更改版权标签?我已经尝试了一些程序,例如 winamp 上的自动标签添加,它允许批量更改某些标签,但不能更改版权标签。 事实上,在winamp上添加自动标签之类的东西是理想的,如果它可以用实际的版权代替制作的版权。 对不起,经过进一步检查,Amarok 似乎不适合该标签。如果您熟悉 PHP,请查看 php.net/manual/en/ref.id3.php 。有一种非常简单的编程方式可以从 mp3 文件中检索和删除 id3 标签。【参考方案5】:是的,是的,这行得通! 只需下载最新版本的 VLC 媒体播放器。打开里面的mp3文件。 右键单击文件 > 选择“信息”> 在此处编辑出版商和版权信息 > 单击下面的“保存元数据”。 你完成了。 :)
【讨论】:
【参考方案6】:我的解决方案,改变你想要的路径:
import os
import shutil
from mutagen.mp3 import MP3
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith('.mp3'):
f = os.path.join(root, file)
try:
mp3 = MP3(f)
mp3.delete()
mp3.save()
print('ok')
except:
print('no ID3 tag')
print('Done')
【讨论】:
【参考方案7】:不需要任何 PHP 代码 只需复制 mp3 文件,即刻录和翻录或减少大小和时间制作一个新文件,您可以在其中指定自己的众多选项
【讨论】:
删除一首曲目的 ID3 标签需要做很多工作,更不用说 OP 提到的许多曲目了。更不用说由于再加工等而失去质量的可能性了。以上是关于如何在 python 或 php 中从 mp3 的 ID3 中删除版权标签?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JavaScript 中从 MP3 文件中读取元数据属性?
如何在 ActionScript 3 中从缓冲区 (ByteArray/Stream) 播放 MP3 声音?
如何在 Flutter 中从内部和外部存储中获取所有 mp3 文件?
如何在python中从调用cv2.imread()后得到的图片中截取一块矩形部分?