很多朋友都是按照专辑名称来分文件夹保存mp3文件,即同一张专辑的mp3存在一个的目录下。但是随着收藏的音乐专辑越来越多,我们很希望把每张专辑的mp3分别制成一个播放列表,方便欣赏音乐。可是,这种专门的软件很少,而且大多不是免费的。其实我们可以用VB6来轻松实现这一功能。
现在流行的播放列表文件格式有.m3u,.pls,.asx等,这里只探讨这三种播放列表的自动生成办法。
一、实现原理
1、用记事本打开一个非空的m3u播放列表文件,形如下面的格式
File0=第一个mp3文件的路径
File1=第二个mp3文件的路径
…………
这样,可以用vb6的open、print等命令写入文件,做成播放器能够识别的.m3u格式的文件。同理,经过VB6的字符串处理后可以生成播放器能够识别的.pls和.asx文件。
2、利用vb6的FSO对象,实现对子目录的遍历(本文只遍历一层子目录)
3、利用字符串处理函数完成对非MP3、WMA文件的过滤
二、窗体设计
本程序需要使用一个Label、一个TextBox文本框、三个Command按钮,布局好的窗体见图1。点击Command1就可以生成.pls格式的列表,点击Command2可以生成asx格式的播放列表,而点击Command3会生成m3u格式的列表。
图1
TextBox让用户输入mp3专辑目录的路径。
注:以本程序为例mp3专辑目录的路径为D:\test\albumlist,在“albumlist”目录下,每张专辑占用一个目录,如“album1”目录下为music1.mp3,music2.mp3……在你的电脑上运行本程序时,需要按照类似的目录结构在text框中输入目录结构。
三、代码编写
为了调用fso,需要在“工具”-“引用”中选择“Microsoft Scripting Runtimes”一项。
Dim fso1 As New FileSystemObject
Private Sub Command1_Click()
Set fso2 = fso1.GetFolder(Text1.Text) ‘根据text1中输入的路径获得目录
For Each f1 In fso2.SubFolders ‘遍历母目录下所有子目录
Open f1.Path + "\" + f1.Name + "_播放列表.asx" For Output As #1 ‘在子目录下创建列表文件
Print #1, "
Set fso3 = fso1.GetFolder(f1.Path)
For Each f2 In fso3.Files ‘遍历每个子目录下的音乐文件
tzm = LCase(Right(f2.Name, Len(f2.Name) - InStrRev(f2.Name, "."))) ‘获得每个文件拓展名
If tzm = "mp3" Or tzm = "wma" Then ‘过滤掉非mp3、wma文件
Print #1, "
End If
Next
Print #1, "
Close #1 ‘ 关闭文件
Next
MsgBox ("指定文件夹下的 .asx 播放列表生成完毕")
End Sub
Private Sub Command2_Click()
Set fso2 = fso1.GetFolder(Text1.Text) ‘根据text1中输入的路径获得目录
For Each f1 In fso2.SubFolders ‘遍历母目录下所有子目录
Open f1.Path + "\" + f1.Name + "_播放列表.pls" For Output As #1 ‘在子目录下创建.pls列表文件
Set fso3 = fso1.GetFolder(f1.Path)
i = 0
For Each f2 In fso3.Files ‘遍历每个子目录下的音乐文件
tzm = LCase(Right(f2.Name, Len(f2.Name) - InStrRev(f2.Name, ".")))
If tzm = "mp3" Or tzm = "wma" Then
Print #1, "File" & i & "=" & f1.Path & "\" & f2.Name ‘将当前文件路径按照asx的列表格式写入到文件中
End If
i = i + 1 ‘计数器加一
Next
Close #1 ‘关闭文件
Next
MsgBox ("指定文件夹下的 .pls 播放列表生成完毕")
End Sub
生成.m3u播放列表文件的方法与生成,pls类似,这里不再给出,完整程序请参考源代码
下载程序源代码
编写好代码后按F5运行,输入MP3所在目录,点击按钮,即可自动生成对应格式的播放列表了。
四、提升
1、本文各张专辑的播放列表都保存在相应的目录下,如果想让所有列表文件保存在特定文件夹下如C盘,只需将Open f1.Path + "\" + f1.Name + "_播放列表.pls" For Output As #1
一行更改为Open "c:" + "\" + f1.Name + "_播放列表.pls" For Output As #1
2、本文程序只列举输入文件夹下一层子文件夹中的mp3文件并生成列表,大家可以想办法让他遍历所有层的子文件夹。
本程序在WindowsXp(SP2),VB6(SP6)下调试通过.