Chinaunix首页 | 论坛 | 博客
  • 博客访问: 102296
  • 博文数量: 7
  • 博客积分: 1695
  • 博客等级: 上尉
  • 技术积分: 420
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-03 15:03
文章分类

全部博文(7)

文章存档

2008年(7)

我的朋友
最近访客

分类:

2008-06-30 12:55:08

一个用于提取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) |
给主人留下些什么吧!~~