blob: 4e42002e7561a5267aed2394e25f6b73c34e06c6 [file] [log] [blame]
' lame.vbs WindowsScript wrapper v0.5, 06/15/2001
' $id$
'
' *Purpose*
' Use this WindowsScript to encode WAVs using drag&drop:
' 0. make sure you have windows script host v5.1 on your system
' (enter 'cscript' in a DOS-Box and compare version number)
' 1. adjust the path settings below to fit your needs
' 2a. put this file somewhere on the desktop
' 3a. drag one or more wav-files on the icon and watch them being lamed.
'
' 2b. start->execute, enter "sendto", drag the script or a link to it in
' sendto window (adjust names and icon as you like)
' 3b. select wave-file(s) and send it via the send-to menu to LAME!
'
' You may wish to create copies of this file with different options set.
'
' If you would like a GUI: try to enable the HTML UI (see below)
'
' Ralf Kempkens, ralf.kempkens@epost.de
'
'
' *History*
' V0.5 * lame.vbs will automatically decode if the file has a .mp3 extension
' * now explicitly refuses to accept folders
' V0.4 * creates single .mp3 extensions, now ID3 options in HTML interface
' V0.3 * fixed bug that prevented lame.exe to be located in a path that
' contained a space
' * experimental HTML UI support (disabled by default)
' V0.2 added multiple file support
' V0.1 initial release
' *** change path to your needs ***
path = "D:\Audio\Lame\Lame386\" '!!! must end with a backslash !!!
lame = "lame.exe"
' *** change default options to your needs ***
opts = "--preset hifi"
' *** HTML GUI (experimental) ***
useGUI = False
' it set to True, opens file lameGUI.html residing in the same path as lame.exe
' to choose options. Please look at the example HTML-file for further information.
' no changes needed below this line
' ##########################################################################
Dim wsh, args, infile, fs
title="LAME Script"
' get input files
Set wsh = WScript.CreateObject("WScript.Shell")
Set args = WScript.Arguments
If args.Count = 0 Then
MsgBox "LAME mp3 encoder/decoder frontend script." & vbCR & _
"Please use drag & drop to specify input files.", vbInformation, title
WScript.Quit
End If
' check path
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FileExists(path & lame) Then
MsgBox "Could not find LAME!" & vbCR & "(looked for '" & path & lame & "')", vbCritical, title
WScript.Quit
End If
' start GUI
if useGUI Then
set ie=WScript.CreateObject("InternetExplorer.Application", "ie_")
ie.navigate(path & "lameGUI.html")
do
WScript.Sleep 100
loop until ie.ReadyState=4 'wait for GUI
ie.Width=640
ie.Height=600
ie.Toolbar=false
ie.Statusbar=false
ie.visible=true
'link to GUI
set document=ie.document
document.forms.lameform.okbutton.onClick=GetRef("okbutton")
'wait for user pressing ok...
do
WScript.Sleep 300
loop until process
end if
'process files
For i = 0 To args.Count-1
infile = args(i)
' check input file
If fso.FolderExists(infile) Then
MsgBox "'" & infile & "' is a folder!" & vbCR & _
title & " only handles proper files.", vbInformation, title
Else
If Not fso.FileExists(infile) Then
MsgBox "Error opening input-file" & vbCR & "'" & infile & "'", vbCritical , title
Else
' run lame
If(LCase(getExtension(infile))="mp3") Then 'decode
ret = wsh.Run(Chr(34) & path & lame & CHR(34) & " --decode " & _
Chr(34) & infile & Chr(34) & Chr(32) & Chr(34) & _
getBasename(infile) & ".wav" & Chr(34), 1, True)
Else ' encode
ret = wsh.Run(Chr(34) & path & lame & CHR(34) & Chr(32) & opts & Chr(32) & _
Chr(34) & infile & Chr(34) & Chr(32) & Chr(34) & _
getBasename(infile) & ".mp3" & Chr(34), 1, True)
End If
' diagnostics
Select Case ret
Case (0) 'okeydokey
Case (-1)
MsgBox "LAME aborted by user!", vbExclamation, title
Case (1)
MsgBox "Error returned by LAME!" & vbCR & "(Check LAME options and input file formats.)" & vbCR & "Used Options: " & opts, vbCritical, title
Case Else
MsgBox "Received unknown LAME return-code: " & ret, vbCritical, title
End Select
End If
End If
Next
WScript.Quit
' *******************************************************************
' utility functions
Function getBasename(filespec)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(filespec)
getBasename = f.ParentFolder & "\" & fso.GetBaseName(filespec)
End Function
Function getExtension(filespec)
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFile(filespec)
getExtension = fso.GetExtensionName(filespec)
End Function
' *******************************************************************
' manage link to IE HTML-interface
sub okbutton
'process inputs
opts=document.all.lameoptions.Value
ie.Quit
MsgBox "LAME options:" & vbCR & opts, vbInformation, title
end sub
sub ie_onQuit
process=True
end sub
'eof