lib_func.py 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. from PyQt5.QtCore import QObject, pyqtSignal, QThread
  2. import os
  3. from util import my_util, constants
  4. class ReadFile(QObject):
  5. trigger = pyqtSignal(dict)
  6. def __init__(self):
  7. super(ReadFile, self).__init__()
  8. self._dir = ""
  9. self._stop_flag = False
  10. def update_work_dir(self, _dir):
  11. self._dir = _dir
  12. self._stop_flag = False
  13. def work(self):
  14. if not self._dir:
  15. return
  16. for fp in os.listdir(self._dir):
  17. if self._stop_flag:
  18. return
  19. _file = f"{self._dir}/{fp}"
  20. if os.path.isfile(_file):
  21. self.trigger.emit(my_util.gen_q_data(constants.AITEST_FILE_NAME, fp))
  22. QThread.sleep(1)
  23. with open(_file, "rb") as f:
  24. while True:
  25. if self._stop_flag:
  26. self.trigger.emit(my_util.gen_q_data(constants.AITEST_FILE_END, 0))
  27. return
  28. buf = f.read(640)
  29. if not buf:
  30. self.trigger.emit(my_util.gen_q_data(constants.AITEST_FILE_END, 1))
  31. QThread.sleep(1)
  32. break
  33. else:
  34. self.trigger.emit(my_util.gen_q_data(constants.AITEST_FILE_BUF, buf))
  35. QThread.msleep(16)
  36. self.trigger.emit(my_util.gen_q_data(constants.AITEST_FILE_END, 2))
  37. def stop_work(self):
  38. self._stop_flag = True
  39. class SendAudio(QObject):
  40. def __init__(self, queue):
  41. super(SendAudio, self).__init__()
  42. self.queue = queue
  43. self._stop_flag = False
  44. self.send_audio = None
  45. def update_func(self, send_func):
  46. self.send_audio = send_func
  47. def work(self):
  48. while True:
  49. if self._stop_flag:
  50. return
  51. if not self.queue.empty():
  52. buf = self.queue.get()
  53. if self.send_audio:
  54. self.send_audio(buf)
  55. continue
  56. QThread.msleep(20)
  57. def stop_work(self):
  58. self._stop_flag = True
  59. class WriteResult(QObject):
  60. def __init__(self, queue):
  61. super(WriteResult, self).__init__()
  62. self.queue = queue
  63. self._stop_flag = False
  64. self._file = None
  65. def update_filename(self, file_name):
  66. self._file = file_name
  67. def work(self):
  68. while True:
  69. if self._stop_flag:
  70. return
  71. if not self.queue.empty():
  72. text = self.queue.get()
  73. f = open(self._file, "a", encoding="utf-8")
  74. f.write(text)
  75. f.close()
  76. continue
  77. QThread.msleep(20)
  78. def stop_work(self):
  79. self._stop_flag = True