科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件利用Perl读写MP3标记管理音乐文件

利用Perl读写MP3标记管理音乐文件

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

CPAN为我们提供了MP3::Tag模块,该模块提供了现成的工具用来阅读和从MP3 文件中提取元数据,这使得识别某个MP3 磁盘文件得名称、艺术家、类别变成一件很简单的事情。

作者:builder.com.cn 2007年3月27日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

写MP3 标记

当然,可以做的还远不止上面那些,你还可以简单的使用MP3::Tag将新的元数据写入一个MP3文件。列表C向你演示了你如何去做。

列表C
#!/usr/bin/perl
use MP3::Tag;
$mp3 = MP3::Tag->new('track1.mp3'); # create object
$mp3->get_tags(); # read tags
if (exists $mp3->{ID3v1}) { # save track information
$mp3->{ID3v1}->title("Techno #3");
$mp3->{ID3v1}->artist("The Bungers");
$mp3->{ID3v1}->album("Bing Bong");
$mp3->{ID3v1}->year("2006");
$mp3->{ID3v1}->write_tag();
}

$mp3->close(); # destroy object

如果你仔细的看一下,就会发现这个脚本和前面的脚本有些相同处。和前面的一样,第一步是初始化一个MP3::Tag类的对象,并将你想改变的MP3文件名传递给构造函数。然后利用get_tags()方法获得当前的元数据。改变这些元数据就像给适当的对象属性赋新值一样,然后同过调用write_tag()方法将修改后的新值保存到文件中。

当然,现实中很可能我们不想将元数据硬写入脚本中。相反,我们更可能需要一个交互式的应用,可以提示用户输入艺术家,题目等信息,然后将这些数据写入MP3文件。幸运的是,应用很容易创建,只需要你目前所知道的MP3::Tag知识。看看列表D吧!

列表D
#!/usr/bin/perl
use MP3::Tag;
$filename = shift; # get filename from command line
$mp3 = MP3::Tag->new($filename);
$mp3->get_tags(); # read tags
print "Enter track title: "; # prompt for title
chomp ($title = <>);
print "Enter artist: "; # prompt for artist
chomp ($artist = <>);
print "Enter album: "; # prompt for album name
chomp ($album = <>);
print "Enter year: "; # prompt for year
chomp ($year = <>);
if (exists $mp3->{ID3v1}) { # save track information
$mp3->{ID3v1}->title($title);
$mp3->{ID3v1}->artist($artist);
$mp3->{ID3v1}->album($album);
$mp3->{ID3v1}->year($year);
$mp3->{ID3v1}->write_tag();
}
$mp3->close(); # destroy object

当在命令行调用时,这个脚本要求输入要编辑的MP3文件名。然后为该文件生成一个MP3::Tag对象,获取当前标记信息。接下来,将会生成一系列的提示,要求用户交互的输入题目,艺术家,相册和年份信息。最后这些数据通过前面讨论的write_tag()方法写回MP3文件。

这就是其工作原理,上面的脚本应该让你了解到可以利用MP3::Tag模块做些什么,甚至可能会帮助你组织你的收藏夹。到下一次时,就可以快乐的使用它。

责任编辑:德东

查看本文国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章