扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者: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领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者