zwc-king 发表于 2011-4-25 01:23

发一个制作CUE文件的小程序,比比FOOBAR2000的cuesheet_creator.dll好用

大家应该也会像我一样,有很多专辑没有CUE文件,只能把文件一个一个拉进去,导致FOOBAR2000显示的专辑名和艺术家名都是空,甚至用cuesheet_creator.dll生成CUE文件,曲名也都是数字而已。
      现我发一个能根据对"flac", ".ape", ".wav", ".dts", ".mp3", ".wma"生成CUE文件的小程序,懂编程的人还能再进行改善。这个程序主要是来自网上,我再加了点小功能。用了它,方便快捷。
使用说明:双击CreateCue_pub.vbs,然后把音乐文件所在的目录输入,点确定,程序就会把音乐文件所在文件夹名当成是专辑名和专辑艺术家名,而遇到是音乐文件属性里有写明艺术家的,程序还能列出来,方便mp3之类的音乐文件。只要不断地运行此程序,并把目录输入,就可以很快捷地把没有CUE文件的音乐文件都变成有CUE文件的专辑,方便FOOBAR2000播放与自己查找。
    举例:L:\music\群星.-.[中国民歌集锦].专辑.(MP3)下的MP3:

PERFORMER "群星.-.[中国民歌集锦].专辑.(MP3)"
TITLE "群星.-.[中国民歌集锦].专辑.(MP3)"
FILE "01.采蘑菇的小姑娘.mp3" WAVE
TRACK 1 AUDIO
    TITLE "01.采蘑菇的小姑娘"
    PERFORMER "靳小才"
    INDEX 01 00:00:00
FILE "02.歌唱农村新面貌.mp3" WAVE
TRACK 2 AUDIO
    TITLE "02.歌唱农村新面貌"
    PERFORMER "罗天婵"
    INDEX 01 00:00:00


程序可能有些杀软会报毒,本身没事的。程序如下:
'名称:cue(索引)文件生成脚本
'功能:为分轨flac、ape、wav、dts、mp3、wma生成分轨专用cue(索引)文件
'作者:朱鹏东&钟文创
'此脚本可自由转播,但须保留以上信息。
'
'-------------------------
'Function area
Function testProfix(ByVal str1)
    Dim prefix
    prefix = Array("flac", ".ape", ".wav", ".dts", ".mp3", ".wma")
    testProfix = False
    For Each pfix In prefix
      If LCase(Right(str1, 4)) = pfix Then
            testProfix = True
            Exit For
      End If
    Next
End Function

Function getFileName(ByVal file)
    getFileName = Left(file, Len(file) - InStr(StrReverse(file), "."))
End Function

Function createItem(ByVal folder,ByVal file, ByVal PERFORMER, ByVal i)
    createItem = "FILE """ & file & """ WAVE" & vbCrLf
    createItem = createItem & "TRACK " & i & " AUDIO" & vbCrLf
    createItem = createItem & "    TITLE """ & getFileName(file) & """" & vbCrLf

Set oShell = CreateObject("Shell.Application")
Set oDir = oShell.NameSpace(folder+"\")
Set oFile = oDir.ParseName(file)
PERFORMER2 =oDir.GetDetailsOf(oFile,13)
If PERFORMER2 <> "" then
    createItem =createItem & "    PERFORMER """ & PERFORMER2 & """" & vbCrLf
End if
Set oFile = Nothing
Set oDir = Nothing
Set oShell = Nothing
    'createItem = createItem & "    PERFORMER """ & PERFORMER & """" & vbCrLf
    createItem = createItem & "    INDEX 01 00:00:00"
End Function



'--------------------------
Set fs = CreateObject("scripting.filesystemobject")
Dim PERFORMER, cueFile, Response
cueFile = "\CDImage.cue"
folder = InputBox("请输入目录,默认为当前目录", "输入目录")
If folder = "" Then

systemfolder = fs.GetFolder(CreateObject("wscript.shell").currentdirectory)
folder =systemfolder
arrFolderPath = Split(systemfolder, "\")
TITLEandPERFORMER = arrFolderPath(UBound(arrFolderPath))
Else
arrFolderPath = Split(folder, "\")
TITLEandPERFORMER = arrFolderPath(UBound(arrFolderPath))
End If

If fs.FileExists(folder & cueFile) Then
    Response = MsgBox("文件" & folder & cueFile & "已经存在,按确定后退出!", vbOKOnly + vbExclamation, "错误")
    Wscript.Quit
End If
Set tf = fs.opentextfile(folder & cueFile, 8, True)
strInput = TITLEandPERFORMER   '去掉此句时,下面两句要启用
'strInput = InputBox("请输入艺术家,默认为文件夹名", "输入艺术家")
'If strInput = "" Then strInput = TITLEandPERFORMER

PERFORMER = strInput
tf.Writeline "PERFORMER """ & strInput & """"
strInput = TITLEandPERFORMER'去掉此句时,下面两句要启用
'strInput = InputBox("请输入专辑名称,默认为文件夹名", "输入专辑名称")
'If strInput = "" Then strInput = TITLEandPERFORMER
tf.Writeline "TITLE """ & strInput & """"

Set fd = fs.GetFolder(folder)
Set fc = fd.Files

Dim position
position = 1
For Each f1 In fc
    If testProfix(f1.Name) Then
      tf.Writeline createItem(folder,f1.Name, PERFORMER, position)
      


      position = position + 1
    End If
Next

'Response = MsgBox("完成生成索引文件", vbOKOnly, "完成")

程序在此:

ztdn0315 发表于 2011-4-25 11:04

在哪里?看不见难道在浮云里?

patch 发表于 2011-4-25 21:15

不错,已试用了:victory:

dingjiali 发表于 2011-4-25 21:21

下载一个试用,先谢谢楼主~!

lhc 发表于 2011-4-25 21:31

下载一个,谢了

JA-HI 发表于 2011-4-25 22:01

zwc-king 发表于 2011-4-26 01:24

我之前本想对没有CUE文件的专辑一个一个用FOOBAR2000的cuesheet_creator.dll来生成CUE文件,结果发现得花费十多分钟,而一想到我有九十多个专辑,要22个小时,我差点晕倒。后来改了这个程序,总共才花了一个多小时就搞定了那九十多个专辑,不过我为这个程序加上一个读取艺术家的功能,却花了我三个小时,那天搞定这个程序,都凌晨五点了:(

abc666 发表于 2011-5-19 11:01

楼主积了德了!!!以前都是靠手动生成和修改,用了这个真方便,愿好人一生平安!!!

hjs 发表于 2011-5-19 11:44

下来试试,谢谢楼主!

诗情 发表于 2011-5-19 13:44

有用,谢谢楼主分享!

hjs 发表于 2011-5-19 14:18

该软件对于一张专辑每首音乐分成一个文件的很是有用。但是对于一张专辑只是一个APE文件的,生成的CUE文件也只是一首曲子,和播放该ape文件的效果一致。用文本打开CUE文件内容如下:
PERFORMER "感受穿越时空Cabeiri - Inner Thoughts 2011"
TITLE "感受穿越时空Cabeiri - Inner Thoughts 2011"
FILE "Cabeiri - Inner Thoughts.flac" WAVE
TRACK 1 AUDIO
    TITLE "Cabeiri - Inner Thoughts"
    INDEX 01 00:00:00

能够正常使用的CUE文件的内容如下:
REM GENRE Ambient
REM DATE 2011
REM DISCID 7910A708
REM COMMENT "ExactAudioCopy v0.99pb5"
PERFORMER "Cabeiri"
TITLE "Inner Thoughts"
FILE "Cabeiri - Inner Thoughts.flac" WAVE
TRACK 01 AUDIO
    TITLE "Rise Up"
    PERFORMER "Cabeiri"
    INDEX 01 00:00:00
TRACK 02 AUDIO
    TITLE "Hot Liquid"
    PERFORMER "Cabeiri"
    INDEX 01 07:38:51
TRACK 03 AUDIO
    TITLE "Adorable View"
    PERFORMER "Cabeiri"
    INDEX 01 16:45:27
TRACK 04 AUDIO
    TITLE "Innermost Call"
    PERFORMER "Cabeiri"
    INDEX 01 27:14:52
TRACK 05 AUDIO
    TITLE "Voices"
    PERFORMER "Cabeiri"
    INDEX 01 36:04:53
TRACK 06 AUDIO
    TITLE "New Land"
    PERFORMER "Cabeiri"
    INDEX 00 44:54:67
    INDEX 01 44:56:67
TRACK 07 AUDIO
    TITLE "Hidden Secrets"
    PERFORMER "Cabeiri"
    INDEX 01 53:14:27
TRACK 08 AUDIO
    TITLE "Voyager"
    PERFORMER "Cabeiri"
    INDEX 01 63:15:24

忘楼主改进。

zwc-king 发表于 2011-5-19 19:35

回复 11# hjs


    该软件对于一张专辑每首音乐分成一个文件的很是有用。但是对于一张专辑只是一个APE文件的,生成的CUE文件也只是一首曲子,和播放该ape文件的效果一致。
你的这个要求,得靠手动。就算是EAC分析出来的CUE,也是得手动不断修改的。

scstar 发表于 2011-5-22 10:31

本帖最后由 scstar 于 2011-5-22 10:34 编辑

确实灰常好用哈,CUE代入了曲目信息,自动保存在专辑夹子里。。谢谢!

zwc-king 发表于 2011-5-23 00:27

确实灰常好用哈,CUE代入了曲目信息,自动保存在专辑夹子里。。谢谢!
scstar 发表于 2011-5-22 10:31 http://bbs.hifidiy.net/images/common/back.gif
老兄总结了两个优点,说得好

fu12can 发表于 2011-5-23 08:39

:victory:

jmjx315 发表于 2011-5-23 11:04

下来试试,谢谢楼主!

yzb55 发表于 2011-8-19 16:49

这个程序可不是一般的好,简直棒极了!

整轨转分轨的cue能弄一个吗?

zwc-king 发表于 2011-8-19 19:22

回复 17# yzb55
要对整轨的做一个CUE?这个得靠自己找曲目了。
如果已经有分轨,但没有曲目,而且分轨名称是简单的序列号,也只能自己一个一个改了。

alan26517889 发表于 2011-8-19 20:25

绝了!我佩服!真是太棒了!

张华 发表于 2011-8-20 07:57

这个很实用,谢过楼主~~
页: [1] 2
查看完整版本: 发一个制作CUE文件的小程序,比比FOOBAR2000的cuesheet_creator.dll好用