The goal is to help people who can't or don't want to read
-
git clone git@github.com:fallra1n/text-reproducer.git
-
(P.S)Только один(в первый) раз! chmod +x req_install.sh ./req_install.sh
(P.S) не хотел писать "pip install req...", так как это не сработает из-за спецефичных пакетов, для начала нужно поставить различные библиотеки на машину типо libspeak1(если это убунту) или espeak(для arch), поэтому в будущем это скрипт будет изменен!
-
(P.S)Только один(в первый) раз! chmod +x run_test.sh ./run_test.sh
-
(P.S)Только один(в первый) раз! chmod +x run_app.sh ./run_app.sh
-
Для воспроизведения текста используется библиотека pyttsx3.
-
Для графики используется библиотека tkinter.
-
Кнопка выбрать файл функционирует средствами Tkinter'a.
-
Итак, воспроизведение каждого файла происходит в отдельном процессе, этот процесс создается и запускается в функции play_text в файле src/app/widgets_handlers.py:
new_process = multiprocessing.Process(target=run, args=(last_file_path, )) new_process.start()
-
if last_process_pid != -1: os.kill(last_process_pid, signal.SIGSTOP)
А будить мы будем c помощью сигнала 'SIGCONT' (code):
elif last_process_pid != -1: os.kill(last_process_pid, signal.SIGCONT)
-
if last_process_pid != -1: os.kill(last_process_pid, signal.SIGKILL)
<project>
|-- src
| |-- app
| | |-- app.py
| | |-- widgets_handlers.py
| |
| |-- back
| | |-- text_reproducer.py
| | |-- session.py
| |
| |-- main.py
|
|-- tests
| |-- test_paths.py
|
|-- README <- мы тут
-
В app.py объявлен класс App, который реализует графику и кнопки с помощью tkinter'а в своих методах.
-
В main.py создается экземпляр класса App после вызывается метод Run, в котором все инициализируется и запускается окошко.
-
К каждой кнопке подвешивается свой хэндлер, все хэндлеры и вспомогательные функции объявлены в файле widgets_handlers.py.
-
В файле back/session.py реализуется класс Session, который в своем методе воспроизводит переданный файл с помощью библиотеки pyttsx3.
-
В обработчике кнопки старт создается процесс, в который для исполнения передается функция Run из файла back/text_reproducer.py в котором создается обеъкт класса Session и вызывается метод Run.