一个用于提取mp3的标签信息,生成文件名格式为“歌名-歌手.mp3”的脚本tag.pl:
用法:
[supersun@supersunHP music]$ tag.pl *mp3
----------------------------------------
文件名:梦里花-张韶涵.mp3
下面是ID3v1的信息:
一次性获取标签:
歌名: 梦里花
歌手: 张韶涵
专辑:
年份:
注释:
曲目序号: 1
流派:Other
梦里花
下面是ID3v2的信息:
----------------------------------------
文件名:平安夜-花儿乐队.mp3
下面是ID3v1的信息:
一次性获取标签:
歌名: 平安夜
歌手: 花儿乐队
专辑: 平安夜
年份: 2001
注释:
曲目序号:
流派:Other
平安夜
下面是ID3v2的信息:
#!/usr/bin/perl
use strict;
use MP3::Tag;
use Encode;
use Encode::CN;
use File::Copy;
sub mp3rename{
my $file=shift;
print "----------------------------------------\n";
print "文件名:$file\n";
my $mp3=MP3::Tag->new("$file");
#检测mp3对象中的标签
$mp3->get_tags();
if(exists $mp3->{ID3v1}){
print "下面是ID3v1的信息:\n";
#操作ID3v1标签:
my $id3v1= $mp3->{ID3v1};
print "一次性获取标签:\n\n";
#下面进行字符编码的处理,首先解码,然后在进行编码
my @tag_data=map encode ("gbk",decode("gbk",$_)),$id3v1->all();
#打印标签内容
print "歌名:\t$tag_data[0]\n";
print "歌手:\t$tag_data[1]\n";
print "专辑:\t$tag_data[2]\n";
print "年份:\t$tag_data[3]\n";
print "注释:\t$tag_data[4]\n";
print "曲目序号:\t$tag_data[5]\n";
print "流派:$tag_data[6]\n";
#去除空格及预防在进行mv操作时发生插值
$tag_data[0] =~ s/\s+//g;
# $tag_data[0] = quotemeta"$tag_data[0]";
$tag_data[1] =~ s/\s+//g;
# $tag_data[1] = quotemeta"$tag_data[1]";
print "$tag_data[0]\n";
move $file,$tag_data[0]."-".$tag_data[1].'.mp3';
# `mv $file ${tag_data[0]}"-"${tag_data[1]}'.mp3'`;
}
#对于id3v2的标签暂时还未进行处理
if(exists $mp3->{ID3v2}){
print "下面是ID3v2的信息:\n";
}else{
}
$mp3->close();
}
for my $utile (@ARGV){
mp3rename($utile);
}
|
阅读(797) | 评论(0) | 转发(0) |