| ' 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 |