如何在 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()后得到的图片中截取一块矩形部分?

如何在flutter中从record_mp3包中为api上传mp3文件

android - 如何在我的音乐播放器中从文件管理器播放 mp3 文件?