Advertisement
Guest User

Textaloud batch mp3 conversion

a guest
Apr 16th, 2022
47
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
AutoIt 4.38 KB | None | 0 0
  1. #include <Array.au3>
  2. #include <File.au3>
  3.  
  4. Func pauseCode($waitTime)
  5.    While $waitTime > 0
  6.       ConsoleWrite($waitTime & "s" & @CRLF)
  7.       Sleep(1000)
  8.       $waitTime -= 1
  9.    WEnd
  10. EndFunc
  11.  
  12. Func waitForWinTitle_activateWin($titlePart)
  13.    Local $hWnd = "", $counter1 = 0, $counter2 = 0, $msg = ""
  14.    Do
  15.       $counter1 += 1
  16.       Sleep(100)
  17.       $hWnd = getWindowHandle($titlePart)
  18.    Until $hWnd <> 0 or $counter1 > 600
  19.    If $counter1 > 600 Then
  20.       $msg = "Error, window counter timeout" & @CRLF & $titlePart
  21.       ConsoleWrite($msg)
  22.       Return $msg
  23.    Else
  24.       Do
  25.          $counter2 += 1
  26.          WinActivate($hWnd)
  27.          Sleep(100)
  28.          If $counter2 > 60 Then
  29.             $msg = "Error, activate counter timeout" & @CRLF & $titlePart
  30.             ConsoleWrite($msg)
  31.             Return $msg
  32.          EndIf
  33.       Until WinActive($hWnd) <> 0
  34.    EndIf
  35.    Return 0
  36. EndFunc
  37.  
  38. Func getWindowHandle($titlePart)
  39.     Local $WinList = WinList()
  40.     ;_ArrayDisplay($WinList)
  41.     For $i = 1 to $WinList[0][0]
  42.         If StringInStr(($WinList[$i][0]), $titlePart) then
  43.             Return $WinList[$i][1]
  44.         EndIf
  45.     Next
  46.     Return 0
  47. EndFunc
  48.  
  49. Func getWindowHandle_checkText($titlePart, $textPart)
  50.    Local $WinList = WinList()
  51.    ;_ArrayDisplay($WinList)
  52.    For $i = 1 to $WinList[0][0]
  53.       If StringInStr(($WinList[$i][0]), $titlePart) Then
  54.          If StringInStr(WinGetText($WinList[$i][1]), $textPart) Then
  55.             Return $WinList[$i][1]
  56.          EndIf
  57.       EndIf
  58.    Next
  59.    Return 0
  60. EndFunc
  61.  
  62. Func findNetworkShare($shareNamePart)
  63.    $RemotePath = ""
  64.    $SystemDrive = ""
  65.    $strComputer = "."
  66.    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")
  67.    $colItems = $objWMIService.ExecQuery ("Select * from Win32_NetworkConnection")
  68.    For $objItem In $colItems
  69.       $SystemDrive = $objItem.LocalName
  70.       $RemotePath = $objItem.RemotePath
  71.       If StringInStr($RemotePath, $shareNamePart) Then
  72.          Return $SystemDrive & "\"
  73.       EndIf
  74.    Next
  75. EndFunc
  76.  
  77. Func TextAloudLoadStatus($searchString)
  78.    Local $out
  79.    Local $countdown = 600
  80.    While $countdown > 0
  81.       Sleep(1000)
  82.       $out = getWindowHandle_checkText("TextAloud", $searchString)
  83.       If $out <> 0 Then
  84.          ExitLoop
  85.       EndIf
  86.       $countdown -= 1
  87.       ConsoleWrite($countdown & "s, loading file" & @CRLF)
  88.    WEnd
  89. EndFunc
  90.  
  91. Func TextAloudConversionStatus($folderLoc)
  92.    Local $fSize1, $fSize2 = 0, $Mp3FilesLocs
  93.    While 1
  94.       $fSize1 = 0
  95.       $Mp3FilesLocs = _FileListToArray($folderLoc, "*", $FLTA_FILES, True)
  96.       For $i = 1 to UBound($Mp3FilesLocs) - 1
  97.          $fSize1 += FileGetSize($Mp3FilesLocs[$i])
  98.       Next
  99.       If $fSize1 = $fSize2 Then
  100.          ExitLoop
  101.       EndIf
  102.       Sleep(10000)
  103.       $fSize2 = $fSize1
  104.    WEnd
  105. EndFunc
  106.  
  107. Func TextAloudConvertFiles()
  108.    Local $sleep = 500, $split, $recName, $recLoc
  109.    Local $sDrive, $sDir, $sFileName, $sExtension
  110.    Local $NetworkDrive = findNetworkShare("ramdisk")
  111.    Local $TextFilesLocs = _FileListToArray($NetworkDrive & "recordings", "*.txt", $FLTA_FILES, True)
  112. ;~    _ArrayDisplay($TextFilesLocs, "$TextFilesLocs")
  113.    For $i = 1 to UBound($TextFilesLocs) - 1
  114.       ; loading file
  115.       waitForWinTitle_activateWin("TextAloud")
  116.       Send("^o")
  117.       waitForWinTitle_activateWin("Open")
  118.       Send($TextFilesLocs[$i])
  119.       Sleep($sleep)
  120.       Send("{ENTER}")
  121.       ; detect the end of file loading
  122.       $split = _PathSplit($TextFilesLocs[$i], $sDrive, $sDir, $sFileName, $sExtension)
  123.       ;_ArrayDisplay($split, "$split")
  124.       TextAloudLoadStatus($sFileName)
  125.       ; setup out directory
  126.       DirCreate($sDrive & $sDir & $sFileName)
  127.       ; setup out location
  128.       waitForWinTitle_activateWin("TextAloud")
  129.       Send("^{F6}")
  130.       waitForWinTitle_activateWin("Confirm Output Directory")
  131.       Send($sDrive & $sDir & $sFileName)
  132.       Sleep($sleep)
  133.       Send("{ENTER}")
  134.       ; detect conversion done
  135.       Sleep(10000)
  136.       TextAloudConversionStatus($sDrive & $sDir & $sFileName)
  137.       waitForWinTitle_activateWin("TextAloud")
  138.       Sleep($sleep)
  139.       Send("^!d")
  140.       Sleep($sleep)
  141.       FileMove($TextFilesLocs[$i], $sDrive & $sDir & $sFileName & "\" & $sFileName & $sExtension, 8)
  142.    Next
  143. EndFunc
  144.  
  145. Func find_files()
  146.    Local $file_loc, $numOfFiles, $monitorChanges = 0
  147.    Local $NetworkDrive = findNetworkShare("ramdisk")
  148.    While 1
  149.       $file_loc = _FileListToArray($NetworkDrive & "recordings", "*.txt", $FLTA_FILES, True)
  150.       $numOfFiles = UBound($file_loc) - 1
  151.       If $numOfFiles > $monitorChanges Then
  152.          $monitorChanges = $numOfFiles
  153.          TextAloudConvertFiles()
  154.       EndIf
  155.       Sleep(5000)
  156.    WEnd
  157. EndFunc
  158.  
  159. find_files()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement