| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 | 
							- '''
 
-    (C) 2019 Raryel C. Souza
 
-     This program is free software: you can redistribute it and/or modify
 
-     it under the terms of the GNU General Public License as published by
 
-     the Free Software Foundation, either version 3 of the License, or
 
-     (at your option) any later version.
 
-     This program is distributed in the hope that it will be useful,
 
-     but WITHOUT ANY WARRANTY; without even the implied warranty of
 
-     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
-     GNU General Public License for more details.
 
-     You should have received a copy of the GNU General Public License
 
-     along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
- '''
 
- from PyQt5.QtCore import QThread
 
- from PyQt5.QtCore import pyqtSignal
 
- from pathlib import Path
 
- from pytranscriber.util.srtparser import SRTParser
 
- from pytranscriber.util.util import MyUtil
 
- from pytranscriber.control.ctr_autosub import Ctr_Autosub
 
- import os
 
- class Thread_Exec_Autosub(QThread):
 
-     signalLockGUI = pyqtSignal()
 
-     signalResetGUIAfterCancel = pyqtSignal()
 
-     signalResetGUIAfterSuccess = pyqtSignal()
 
-     signalProgress = pyqtSignal(str, int)
 
-     signalProgressFileYofN = pyqtSignal(str)
 
-     signalErrorMsg = pyqtSignal(str)
 
-     def __init__(self, objParamAutosub):
 
-         self.objParamAutosub = objParamAutosub
 
-         self.running = True
 
-         QThread.__init__(self)
 
-     def __updateProgressFileYofN(self, currentIndex, countFiles ):
 
-         self.signalProgressFileYofN.emit("File " + str(currentIndex+1) + " of " +str(countFiles))
 
-     def listenerProgress(self, string, percent):
 
-         self.signalProgress.emit(string, percent)
 
-     def __generatePathOutputFile(self, sourceFile):
 
-         #extract the filename without extension from the path
 
-         base = os.path.basename(sourceFile)
 
-         #[0] is filename, [1] is file extension
 
-         fileName = os.path.splitext(base)[0]
 
-         #the output file has same name as input file, located on output Folder
 
-         #with extension .srt
 
-         pathOutputFolder = Path(self.objParamAutosub.outputFolder)
 
-         outputFileSRT = pathOutputFolder / (fileName + ".srt")
 
-         outputFileTXT = pathOutputFolder / (fileName + ".txt")
 
-         return [outputFileSRT, outputFileTXT]
 
-     def __runAutosubForMedia(self, index, langCode):
 
-         sourceFile = self.objParamAutosub.listFiles[index]
 
-         outputFiles = self.__generatePathOutputFile(sourceFile)
 
-         outputFileSRT = outputFiles[0]
 
-         outputFileTXT = outputFiles[1]
 
-         #run autosub
 
-         fOutput = Ctr_Autosub.generate_subtitles(source_path = sourceFile,
 
-                                     output = outputFileSRT,
 
-                                     src_language = langCode,
 
-                                     listener_progress = self.listenerProgress)
 
-         #if nothing was returned
 
-         if not fOutput:
 
-             self.signalErrorMsg.emit("Error! Unable to generate subtitles for file " + sourceFile + ".")
 
-         elif fOutput != -1:
 
-             #if the operation was not canceled
 
-             #updated the progress message
 
-             self.listenerProgress("Finished", 100)
 
-             #parses the .srt subtitle file and export text to .txt file
 
-             SRTParser.extractTextFromSRT(str(outputFileSRT))
 
-             if self.objParamAutosub.boolOpenOutputFilesAuto:
 
-                 #open both SRT and TXT output files
 
-                 MyUtil.open_file(outputFileTXT)
 
-                 MyUtil.open_file(outputFileSRT)
 
-     def __loopSelectedFiles(self):
 
-         self.signalLockGUI.emit()
 
-         langCode = self.objParamAutosub.langCode
 
-         #if output directory does not exist, creates it
 
-         pathOutputFolder = Path(self.objParamAutosub.outputFolder)
 
-         if not os.path.exists(pathOutputFolder):
 
-             os.mkdir(pathOutputFolder)
 
-         #if there the output file is not a directory
 
-         if not os.path.isdir(pathOutputFolder):
 
-             #force the user to select a different output directory
 
-             self.signalErrorMsg.emit("Error! Invalid output folder. Please choose another one.")
 
-         else:
 
-             #go ahead with autosub process
 
-             nFiles = len(self.objParamAutosub.listFiles)
 
-             for i in range(nFiles):
 
-                 #does not continue the loop if user clicked cancel button
 
-                 if not Ctr_Autosub.is_operation_canceled():
 
-                     self.__updateProgressFileYofN(i, nFiles)
 
-                     self.__runAutosubForMedia(i, langCode)
 
-             #if operation is canceled does not clear the file list
 
-             if Ctr_Autosub.is_operation_canceled():
 
-                 self.signalResetGUIAfterCancel.emit()
 
-             else:
 
-                 self.signalResetGUIAfterSuccess.emit()
 
-     def run(self):
 
-         Ctr_Autosub.init()
 
-         self.__loopSelectedFiles()
 
-         self.running = False
 
-     def cancel(self):
 
-        Ctr_Autosub.cancel_operation()
 
 
  |