home *** CD-ROM | disk | FTP | other *** search
/ PC User 2008 February / Australian_PC_User_2008-02.iso / magstuff / files / Encode360 / Encode360Installer.msi / Cabs.w1.cab / PreProcess.VBS < prev    next >
Encoding:
Text File  |  2007-08-13  |  4.3 KB  |  113 lines

  1. '==========================================================================
  2. ' NAME:     Encode360 PreProcess Script - Matroska Subtitle Extractor
  3. ' AUTHOR:     Dan Cunningham
  4. ' DATE:     13/08/2007
  5. ' COMMENT:     This script does the following:
  6. '            Uses MKVExtract to find and extract subtitles
  7. '==========================================================================
  8. Dim oAppShell, oShell, oFSO, oNet
  9.  
  10. Set oAppShell        =    CreateObject("Shell.Application")
  11. Set oShell        =     CreateObject("WScript.Shell")
  12. Set oFSO         =     CreateObject("Scripting.FileSystemObject")
  13. Set oNet        =    CreateObject("WScript.Network")
  14.  
  15. sScriptPath        =     Left(WSH.ScriptFullName, Len(WSH.ScriptFullName)-Len(WSH.ScriptName)-1)
  16. sTempFolder        =    oShell.ExpandEnvironmentStrings("%TEMP%")
  17. ' -------------------------------------------------------------------------
  18. ' Get the name of the file to process
  19. If WScript.Arguments.Count >= 1 Then
  20.     sFileToProcess = UCase(WScript.Arguments(0))
  21.     WScript.Echo "File to process: " & sFileToProcess
  22.     If WScript.Arguments.Count >= 2 Then
  23.         sLanguage = UCase(WScript.Arguments(1))
  24.     Else
  25.         sLanguage = "ENG"
  26.     End If
  27. Else
  28.     WScript.Echo "No file to process specified on command-line"
  29.     WScript.Quit(10)
  30. End If
  31.  
  32. ' Verify our file exists
  33. If Not oFSO.FileExists(sFileToProcess) Then
  34.     WScript.Echo "File to process was not found"
  35.     WScript.Quit(11)
  36. End If
  37. ' -------------------------------------------------------------------------
  38. ' MAIN CODE
  39.  
  40. WScript.Echo "Running MKVInfo..."
  41. sOutputFile = oShell.ExpandEnvironmentStrings("%TEMP%") & "\OutputFile.Txt"
  42. oShell.Run """" & sScriptPath & "\mkvinfo.exe"" """ & sFileToProcess & """ -r " & sOutputFile,0,True
  43. 'Read temp file into an Array
  44. aOutputString = Split(UCase(oFSO.OpenTextFile(sOutputFile,1,False).ReadAll),vbCrlf) 
  45. 'Delete temp file
  46. oFSO.DeleteFile sOutputFile
  47.  
  48. GetSubtitles
  49.  
  50. Dim iSubtitleTrackNumber, sSubtitleTrackName
  51.  
  52. If iSubtitleTrackNumber = 0 And sLanguage <> "ENG" Then
  53.     WScript.Echo "No subtitles found for language: " & sLanguage & ". Defaulting to ENG..."
  54.     sLanguage = "ENG"
  55.     GetSubtitles
  56.     If iSubtitleTrackNumber = 0 Then
  57.         WScript.Echo "No subtitles found!"
  58.         WScript.Quit (2)
  59.     End If
  60. ElseIf iSubtitleTrackNumber = 0 Then
  61.     WScript.Echo "No subtitles found!"
  62.     WScript.Quit (2)
  63. End If
  64.  
  65. sOutputFile = Left(sFileToProcess, Len(sFileToProcess) - 4) & "." & sSubtitleTrackName
  66. WScript.Echo "Output File: " & sOutputFile
  67.  
  68. WScript.Echo "Running MKVExtract..."
  69. oShell.Run """" & sScriptPath & "\mkvextract.exe"" tracks """ & sFileToProcess & """ " & iSubtitleTrackNumber & ":""" & sOutputfile & """",0,True
  70.  
  71. WScript.Echo "Finished!"
  72. WScript.Quit(0)
  73.  
  74. Sub GetSubtitles
  75.     'Find the relevant lines
  76.     Dim sCurTrackNumber, sCurTrackType, sCurTrackName, bDetected
  77.     For Each sCurOutputString in aOutputString
  78.         If Instr(1,sCurOutputString,"TRACK NUMBER:",vbTextCompare) <> 0 Then
  79.             sCurTrackNumber = Trim(Replace(sCurOutputString, "|  + TRACK NUMBER:", ""))
  80.             sCurTrackType = "" : sCurTrackLanguage = "" : sCurTrackName = ""
  81.             bDetected = False
  82.         End If
  83.         If Instr(1,sCurOutputString,"TRACK TYPE:",vbTextCompare) <> 0 Then
  84.             sCurTrackType = Trim(Replace(sCurOutputString, "|  + TRACK TYPE:", ""))
  85.         End If
  86.         If Instr(1,sCurOutputString,"LANGUAGE:",vbTextCompare) <> 0 Then
  87.             sCurTrackLanguage = Trim(Replace(sCurOutputString, "|  + LANGUAGE:", ""))
  88.         End If
  89.         If Instr(1,sCurOutputString,"CODEC ID:",vbTextCompare) <> 0 Then
  90.             sCurTrackCodecID = Trim(Replace(sCurOutputString, "|  + CODEC ID:", ""))
  91.         End If
  92.         If Instr(1,sCurOutputString,"NAME:",vbTextCompare) <> 0 Then
  93.             sCurTrackName = Trim(Replace(sCurOutputString, "|  + NAME:", ""))
  94.             bDetected = True
  95.         End If
  96.         If bDetected = True And sCurTrackType = "SUBTITLES" And sCurTrackLanguage = sLanguage Then
  97.             If Instr(1, sCurTrackName, sLanguage, vbTextCompare) Then
  98.                 sCurTrackName = Replace(sCurTrackCodecID, "S_TEXT/", "")
  99.                 sCurTrackName = Replace(sCurTrackName, "UTF8", "SRT")
  100.             End If
  101.             WScript.Echo "Subtitle Track Number: " & sCurTrackNumber
  102.             WScript.Echo "Subtitle Language: " & sCurTrackLanguage
  103.             WScript.Echo "Subtitle Codec ID: " & sCurTrackCodecID
  104.             WScript.Echo "Subtitle Type: " & sCurTrackName
  105.             iSubtitleTrackNumber = sCurTrackNumber
  106.             sSubtitleTrackName = sCurTrackName
  107.             Exit For
  108.         Else
  109.             bDetected = False
  110.         End If
  111.     Next
  112. End Sub
  113.