一个可以读取ID3信息的类[可以很方便添加MP3了]

<!--METADATA TYPE="typelib"
UUID="00000205-0000-0010-8000-00AA006D2EA4"
NAME="ADODB Type Library"
-->
<%
'Author: 小龙 zyvslxl,[email protected] 请保留
'需指定的属性
'Path 文件的路径
'类头部分定义的属性为可以得到信息,当然不止这个,理论上可以返回任何标签值
'在Id3v2() 中的Select case FrameId(i)部分加入已知的标签,可以返回相应的内容
'因为个人知识有限,会的话请指教

'可用方法
'CreateStream 打开文件流
'pre 执行
'CloseStream 关闭文件流

Class mp3

Public Path
Public Flag
Public Title '标题
Public Artist '作者
Public Album '专集
Public IssueYear '出品年代
Public Comment '备注
Public Genre '类型
Public Tcon '流派
Public MpTime '时间
Public USLT '歌词
Private objStream

'[待扩展]
private Function Exitext()
Dim ext
ext = lcase(right(path,len(path)-inStrRev(".")))
Exitext = ext
End Function

'[转换函数,有些类型还是判断不了]
private Function bin2str(binstr,num)
on error resume next
Dim varlen,clow,ccc,skipflag ,i,biy
skipflag=0
ccc = ""
For i=1 To num
clow = MidB(binstr,i,1)
If ascb(clow)=0 then
skipflag=0
' ccc = null
Else
If skipflag=0 Then
If AscB(clow) > 127 Then
ccc =ccc & Chr(AscW(MidB(binstr,i+1,1) & clow))
skipflag=1
Else
ccc = ccc & Chr(AscB(clow))
End If
Else
skipflag=0
End If

End If
Next
bin2str = ccc
End Function

'[载入文件]
Public Function CreateStream()
on error resume next
Set objStream = Server.CreateObject("ADODB.Stream")
objStream.Type = adTypeBinary
objStream.Open
Err.clear
objStream.LoadFromFile Path
If err<>0 Then
objStream.LoadFromFile server.mappath(Path)
End If
Err.clear
End Function

'[关闭文件流]
Public Function CloseStream()
objStream.close
Set objStream = nothing
End Function

'[标志信息]
Public Function id()
Dim Comm
objStream.position =0
Comm = objStream.Read(3)
id = bin2str(Comm)
End Function

'[ID3V2信息读取]
Private Function Id3v2()
Dim FrameID()
Dim FrameSize()
Dim FrameSize1()
Dim Flags()
Dim Frame()
Dim MaxSize
Dim i
i = 0

objStream.position = 6
MaxSize = TopSize(objStream.Read(4))
'response.write "<font color=red>"&MaxSize&"</font><br>"

Do While ObjStream.Position < MaxSize
ReDim Preserve FrameID(i),FrameSize(i),FrameSize1(i),Flags(i),Frame(i)
FrameID(i) = bin2str(objStream.Read(4),4)
If Isnull (FrameId(i)) or FrameId(i)="" Then Exit Do
FrameSize(i) = Size(objStream.Read(4))
If Isnull (FrameSize(i)) or FrameSize(i)= 0 Then Exit Do
objStream.Read(2) '[Flag]
'objStream.Read(1)
Frame(i) = bin2str(objStream.Read(FrameSize(i)),FrameSize(i))
i = i+1
Loop

'[依次赋值给属性]
Dim j
j = i-1
For i = 0 to j
'response.write i
Select case Ucase(FrameId(i))
Case "TIT2" : Title = cstr(Frame(i))
Case "COMM" : Comment = cstr(Frame(i))
Case "TPE1" : Artist = cstr(Frame(i))
Case "TALB" : Album = cstr(Frame(i))
Case "TYER" : IssueYear = cstr(Frame(i))
Case "TCON" : TCON = cstr(Frame(i))
Case "TIME" : MPTIME = cstr(Frame(i))
Case "USLT" : USLT = cstr(Frame(i))
End Select
Next
End Function

'[获取标签帧长度/某个具体标签内容长度]
Private Function Size(num)
Size = Null
Dim a,b,c,d
a = midb

时间: 2016-02-05

一个可以读取ID3信息的类[可以很方便添加MP3了]的相关文章

javascript-刚学js数组,用js写一个学生信息,当读取学生信息里一个对象时,输出其全部信息

问题描述 刚学js数组,用js写一个学生信息,当读取学生信息里一个对象时,输出其全部信息 刚学js数组,用js写一个学生信息,当读取学生信息里一个对象时,输出其全部信息 解决方案 http://blog.csdn.net/lxp1021/article/details/6632678 解决方案二: <script> function Student(name,classname){ this.name = name; this.class = classname; this.toString

Python读取mp3中ID3信息的方法_python

本文实例讲述了Python读取mp3中ID3信息的方法.分享给大家供大家参考.具体分析如下: pyid3不好用,常常有不认识的. mutagen不错,不过默认带的easyid3不会读取注释,需要手工hack一下 Python代码如下: from mutagen.mp3 import MP3 import mutagen.id3 from mutagen.easyid3 import EasyID3 EasyID3.valid_keys["comment"]="COMM::'X

c# NameValueCollection类读取配置信息_实用技巧

我首先介绍配置文件中的写法: 1.在VS2005中的工程下建立一个config文件,名称为App.config,并如下编辑: 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="StartParameters" type="System.Configu

html-本人菜鸟一枚,请教大神一个关于CSS中ID和类选择器不能用,而标签选择器能用的问题

问题描述 本人菜鸟一枚,请教大神一个关于CSS中ID和类选择器不能用,而标签选择器能用的问题 FIREFOX浏览器,代码如下: HTML代码片段: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> @import url(template/default/styl

C#读取XML文件——自定义类

C#本身也带有读取XML文件的类,但是许久未曾接触C#了,为了练练手,自己写了一个具有简单功能的类,实现了读取xml文件,查找元素,插入结点等功能.实现如下: XmlDoc类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.IO; namespace ConsoleCSharp { class XmlDoc { internal static st

用于获得硬盘物理信息的类

介绍: 有很多时候我需要知道机器的一些物理信息(比如激活技术),所以我就利用放高考假的时间,封装了一个可以获得硬盘的物理信息的类,方便大家.此类在我的机器上测试效果如下: CGetMachineInfo类简介: 类名: CGetMachineInfo 类中的一些要说明的函数: 功能 int ReadPhysicalDriveInNT (void) 在NT内核系统下读取硬盘的物理信息 int ReadDrivePortsInWin9X (void) 在9X内核系统下读取硬盘的物理信息 int Re

java.util.zip创建和读取zip文件的类

写了一个用java.util.zip创建和读取zip文件的类 跟大家分享一下 里面用了递归调用 呵呵 近期用了不少递归调用!有空总结一下! /** TestZip.java coding by Serol Luo. [email protected] 2003/07/03 http://www.chinaunix.net/forum/viewforum.php?f=26 转载请保留此信息 */ import java.util.*; import java.util.zip.*; import

ASP.NET Core的配置(1):读取配置信息

提到"配置"二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来我们已经习惯了将结构化的配置信息定义在这两个文件之中.到了.NET Core的时候,很多我们习以为常的东西都发生了改变,其中也包括定义配置的方式.总的来说,新的配置系统显得更加轻量级,并且具有更好的扩展性,其最大的特点就是支持多样化的数据源.我们可以采用内存的变量作为配置的数据源,也可以直接配置定义在持久化的文件甚至数据库中. 由

【转】C#读取文件信息的三个步骤

原文链接:http://developer.51cto.com/art/200908/145675.htm   在通常的C#开发中,你是怎么通过C#读取文件信息的?C#给我们提供了非常强大的类库(又一次吹捧了.NET一番),里面封装了几乎所有我们可以想到的和我们没有想到的类,流是读取文件的一般手段,使用流读取.是的没错,那么你真的会用它读取文件中的数据了么?真的能读完全么? 通常我们使用C#读取文件信息使用如下的步骤: 1.声明并使用File的OpenRead实例化一个文件流对象,就像下面这样