diff --git a/Pipfile b/Pipfile index cbe3cde..cff5b2b 100644 --- a/Pipfile +++ b/Pipfile @@ -7,6 +7,9 @@ name = "pypi" pyqt5 = "*" flask = "*" pipfile-requirements = "*" +pylama = "*" +ffmpeg = "*" +pip = "*" [dev-packages] diff --git a/Pipfile.lock b/Pipfile.lock index 7e7c947..7d1d3d3 100644 --- a/Pipfile.lock +++ b/Pipfile.lock @@ -1,7 +1,7 @@ { "_meta": { "hash": { - "sha256": "d986f44bfa27a57188fed41e7e43825d0bc692e044d329c780330a8b4a3c597f" + "sha256": "a59428c79a266fc1237cdd4e74b0803bb5f39803495f1fc6c134df7333cdc2bc" }, "pipfile-spec": 6, "requires": { @@ -24,6 +24,13 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3, 3.4'", "version": "==7.1.2" }, + "ffmpeg": { + "hashes": [ + "sha256:6931692c890ff21d39938433c2189747815dca0c60ddc7f9bb97f199dba0b5b9" + ], + "index": "pypi", + "version": "==1.4" + }, "flask": { "hashes": [ "sha256:4efa1ae2d7c9865af48986de8aeb8504bf32c7f3d6fdc9353d34b21f4b127060", @@ -87,13 +94,20 @@ "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", "version": "==1.1.1" }, + "mccabe": { + "hashes": [ + "sha256:ab8a6258860da4b6677da4bd2fe5dc2c659cff31b3ee4f7f5d64e79735b80d42", + "sha256:dd8d182285a0fe56bace7f45b5e7d1a6ebcbf524e8f3bd87eb0f125271b8831f" + ], + "version": "==0.6.1" + }, "packaging": { "hashes": [ - "sha256:05af3bb85d320377db281cf254ab050e1a7ebcbf5410685a9a407e18a1f81236", - "sha256:eb41423378682dadb7166144a4926e443093863024de508ca5c9737d6bc08376" + "sha256:24e0da08660a87484d1602c30bb4902d74816b6985b93de36926f5bc95741858", + "sha256:78598185a7008a470d64526a8059de9aaa449238f280fc9eb6b13ba6c4109093" ], "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", - "version": "==20.7" + "version": "==20.8" }, "pipfile-requirements": { "hashes": [ @@ -103,6 +117,38 @@ "index": "pypi", "version": "==0.3.0" }, + "pycodestyle": { + "hashes": [ + "sha256:2295e7b2f6b5bd100585ebcb1f616591b652db8a741695b3d8f5d28bdc934367", + "sha256:c58a7d2815e0e8d7972bf1803331fb0152f867bd89adf8a01dfd55085434192e" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.6.0" + }, + "pydocstyle": { + "hashes": [ + "sha256:19b86fa8617ed916776a11cd8bc0197e5b9856d5433b777f51a3defe13075325", + "sha256:aca749e190a01726a4fb472dd4ef23b5c9da7b9205c0a7857c06533de13fd678" + ], + "markers": "python_version >= '3.5'", + "version": "==5.1.1" + }, + "pyflakes": { + "hashes": [ + "sha256:0d94e0e05a19e57a99444b6ddcf9a6eb2e5c68d3ca1e98e90707af8152c90a92", + "sha256:35b2d75ee967ea93b55750aa9edbbf72813e06a66ba54438df2cfac9e3c27fc8" + ], + "markers": "python_version >= '2.7' and python_version not in '3.0, 3.1, 3.2, 3.3'", + "version": "==2.2.0" + }, + "pylama": { + "hashes": [ + "sha256:9bae53ef9c1a431371d6a8dca406816a60d547147b60a4934721898f553b7d8f", + "sha256:fd61c11872d6256b019ef1235be37b77c922ef37ac9797df6bd489996dddeb15" + ], + "index": "pypi", + "version": "==7.7.1" + }, "pyparsing": { "hashes": [ "sha256:c203ec8783bf771a155b207279b9bccb8dea02d8f0c9e5f8ead507bc3246ecc1", @@ -149,6 +195,13 @@ "markers": "python_version >= '3.5'", "version": "==12.8.1" }, + "snowballstemmer": { + "hashes": [ + "sha256:209f257d7533fdb3cb73bdbd24f436239ca3b2fa67d56f6ff88e86be08cc5ef0", + "sha256:df3bac3df4c2c01363f3dd2cfa78cce2840a79b9f1c2d2de9ce8d31683992f52" + ], + "version": "==2.0.0" + }, "toml": { "hashes": [ "sha256:806143ae5bfb6a3c6e736a764057db0e6a0e05e338b5630894a5f779cabb4f9b", diff --git a/requirements.txt b/requirements.txt index 46a5b23..0f72a4b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,10 +4,16 @@ Flask==1.1.2 itsdangerous==1.1.0 Jinja2==2.11.2 MarkupSafe==1.1.1 -packaging==20.7 +mccabe==0.6.1 +packaging==20.8 pipfile-requirements==0.3.0 +pycodestyle==2.6.0 +pydocstyle==5.1.1 +pyflakes==2.2.0 +pylama==7.7.1 pyparsing==2.4.7 PyQt5==5.15.2 PyQt5-sip==12.8.1 +snowballstemmer==2.0.0 toml==0.10.2 Werkzeug==1.0.1 diff --git a/src/gui/ui/mainwindow.ui b/src/gui/ui/mainwindow.ui index fb77751..6ed3f62 100644 --- a/src/gui/ui/mainwindow.ui +++ b/src/gui/ui/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 864 - 959 + 496 + 711 @@ -16,8 +16,8 @@ - 500 - 900 + 0 + 0 @@ -25,26 +25,56 @@ + + + 0 + 0 + + + + + 200 + 0 + + - Plik audio pierwszego rozmówcy + Plik audio 1 rozmówcy + + + 0 + 0 + + + + + 150 + 0 + + - Imię pierwszego rozmówcy + Imię 1 rozmówcy + + + 120 + 0 + + Dodaj audio 1 @@ -56,26 +86,56 @@ + + + 0 + 0 + + + + + 200 + 0 + + - Plik audio drugiego rozmówcy + Plik audio 2 rozmówcy + + + 0 + 0 + + + + + 150 + 0 + + - Imię drugieo rozmówcy + Imię 2 rozmówcy + + + 120 + 0 + + Dodaj audio 2 @@ -104,14 +164,14 @@ - 200 - 200 + 0 + 150 300 - 300 + 150 @@ -147,7 +207,7 @@ - 300 + 16777215 35 @@ -186,14 +246,14 @@ - 200 - 200 + 0 + 150 300 - 300 + 150 @@ -229,7 +289,7 @@ - 300 + 16777215 35 @@ -272,14 +332,14 @@ - 200 - 200 + 0 + 150 300 - 300 + 150 @@ -318,7 +378,7 @@ - 300 + 16777215 35 @@ -357,14 +417,14 @@ - 200 - 200 + 0 + 150 300 - 300 + 150 @@ -400,7 +460,7 @@ - 300 + 16777215 35 @@ -445,8 +505,8 @@ - 100 - 50 + 0 + 30 @@ -521,7 +581,7 @@ 0 0 - 864 + 496 32 diff --git a/src/python/classes/mainwindow.py b/src/python/classes/mainwindow.py index f837ebb..131c774 100644 --- a/src/python/classes/mainwindow.py +++ b/src/python/classes/mainwindow.py @@ -1,5 +1,6 @@ from PyQt5.QtGui import QPixmap from PyQt5.QtWidgets import * +from PyQt5.QtCore import Qt from src.python.ui.mainwindow_ui import Ui_MainWindow @@ -53,24 +54,25 @@ class MainWindow(QMainWindow, Ui_MainWindow): else: pixmap = QPixmap(file) + scaled_pixmap = pixmap.scaled(pixmap.size(), Qt.KeepAspectRatio) if image_number == 1: self.preview_label_avatar_1.setProperty('path', file) - self.preview_label_avatar_1.setPixmap(pixmap) + self.preview_label_avatar_1.setPixmap(scaled_pixmap) elif image_number == 2: self.preview_label_avatar_2.setProperty('path', file) - self.preview_label_avatar_2.setPixmap(pixmap) + self.preview_label_avatar_2.setPixmap(scaled_pixmap) elif image_number == 3: self.preview_label_avatar_3.setProperty('path', file) - self.preview_label_avatar_3.setPixmap(pixmap) + self.preview_label_avatar_3.setPixmap(scaled_pixmap) elif image_number == 4: self.preview_label_avatar_4.setProperty('path', file) - self.preview_label_avatar_4.setPixmap(pixmap) + self.preview_label_avatar_4.setPixmap(scaled_pixmap) print(F"[*] Zaimportowano garfikę {image_number} z pliku: '{file}'.") - print(F"Rodzielczość {pixmap.width()}x{pixmap.height()}") + print(F"[*] Rodzielczość grafiki: {pixmap.width()}x{pixmap.height()}") def open_audio_import(self, audio_number: int): dialog = QFileDialog() @@ -92,3 +94,8 @@ class MainWindow(QMainWindow, Ui_MainWindow): self.line_edit_audio_2.setText(file) print(F"[*] Zaimportowano ścieżkę {audio_number} pliku: '{file}'.") + + def generate_video_podcast(self): + # TODO: Change to pure python + """Generate podcast based on values from UI.""" + pass \ No newline at end of file diff --git a/src/python/ui/mainwindow_ui.py b/src/python/ui/mainwindow_ui.py index a645779..6103cef 100644 --- a/src/python/ui/mainwindow_ui.py +++ b/src/python/ui/mainwindow_ui.py @@ -14,37 +14,63 @@ from PyQt5 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") - MainWindow.resize(864, 959) + MainWindow.resize(496, 711) self.central_widget = QtWidgets.QWidget(MainWindow) - self.central_widget.setMinimumSize(QtCore.QSize(500, 900)) + self.central_widget.setMinimumSize(QtCore.QSize(0, 0)) self.central_widget.setObjectName("central_widget") self.verticalLayout = QtWidgets.QVBoxLayout(self.central_widget) self.verticalLayout.setObjectName("verticalLayout") self.h_layout_select_audio_1 = QtWidgets.QHBoxLayout() self.h_layout_select_audio_1.setObjectName("h_layout_select_audio_1") self.line_edit_audio_1 = QtWidgets.QLineEdit(self.central_widget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.line_edit_audio_1.sizePolicy().hasHeightForWidth()) + self.line_edit_audio_1.setSizePolicy(sizePolicy) + self.line_edit_audio_1.setMinimumSize(QtCore.QSize(200, 0)) self.line_edit_audio_1.setText("") self.line_edit_audio_1.setObjectName("line_edit_audio_1") self.h_layout_select_audio_1.addWidget(self.line_edit_audio_1) self.line_edit_name_1 = QtWidgets.QLineEdit(self.central_widget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.line_edit_name_1.sizePolicy().hasHeightForWidth()) + self.line_edit_name_1.setSizePolicy(sizePolicy) + self.line_edit_name_1.setMinimumSize(QtCore.QSize(150, 0)) self.line_edit_name_1.setText("") self.line_edit_name_1.setObjectName("line_edit_name_1") self.h_layout_select_audio_1.addWidget(self.line_edit_name_1) self.button_audio_1 = QtWidgets.QPushButton(self.central_widget) + self.button_audio_1.setMinimumSize(QtCore.QSize(120, 0)) self.button_audio_1.setObjectName("button_audio_1") self.h_layout_select_audio_1.addWidget(self.button_audio_1) self.verticalLayout.addLayout(self.h_layout_select_audio_1) self.h_layout_select_audio_2 = QtWidgets.QHBoxLayout() self.h_layout_select_audio_2.setObjectName("h_layout_select_audio_2") self.line_edit_audio_2 = QtWidgets.QLineEdit(self.central_widget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.line_edit_audio_2.sizePolicy().hasHeightForWidth()) + self.line_edit_audio_2.setSizePolicy(sizePolicy) + self.line_edit_audio_2.setMinimumSize(QtCore.QSize(200, 0)) self.line_edit_audio_2.setText("") self.line_edit_audio_2.setObjectName("line_edit_audio_2") self.h_layout_select_audio_2.addWidget(self.line_edit_audio_2) self.line_edit_name_2 = QtWidgets.QLineEdit(self.central_widget) + sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) + sizePolicy.setHorizontalStretch(0) + sizePolicy.setVerticalStretch(0) + sizePolicy.setHeightForWidth(self.line_edit_name_2.sizePolicy().hasHeightForWidth()) + self.line_edit_name_2.setSizePolicy(sizePolicy) + self.line_edit_name_2.setMinimumSize(QtCore.QSize(150, 0)) self.line_edit_name_2.setText("") self.line_edit_name_2.setObjectName("line_edit_name_2") self.h_layout_select_audio_2.addWidget(self.line_edit_name_2) self.button_audio_2 = QtWidgets.QPushButton(self.central_widget) + self.button_audio_2.setMinimumSize(QtCore.QSize(120, 0)) self.button_audio_2.setObjectName("button_audio_2") self.h_layout_select_audio_2.addWidget(self.button_audio_2) self.verticalLayout.addLayout(self.h_layout_select_audio_2) @@ -63,8 +89,8 @@ class Ui_MainWindow(object): sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.preview_label_avatar_1.sizePolicy().hasHeightForWidth()) self.preview_label_avatar_1.setSizePolicy(sizePolicy) - self.preview_label_avatar_1.setMinimumSize(QtCore.QSize(200, 200)) - self.preview_label_avatar_1.setMaximumSize(QtCore.QSize(300, 300)) + self.preview_label_avatar_1.setMinimumSize(QtCore.QSize(0, 150)) + self.preview_label_avatar_1.setMaximumSize(QtCore.QSize(300, 150)) self.preview_label_avatar_1.setFrameShape(QtWidgets.QFrame.Box) self.preview_label_avatar_1.setScaledContents(True) self.preview_label_avatar_1.setAlignment(QtCore.Qt.AlignCenter) @@ -78,7 +104,7 @@ class Ui_MainWindow(object): sizePolicy.setHeightForWidth(self.button_select_avatar_1.sizePolicy().hasHeightForWidth()) self.button_select_avatar_1.setSizePolicy(sizePolicy) self.button_select_avatar_1.setMinimumSize(QtCore.QSize(200, 35)) - self.button_select_avatar_1.setMaximumSize(QtCore.QSize(300, 35)) + self.button_select_avatar_1.setMaximumSize(QtCore.QSize(16777215, 35)) self.button_select_avatar_1.setObjectName("button_select_avatar_1") self.w_layout_avatar_1.addWidget(self.button_select_avatar_1) self.w_layout_avatars_1_and_2.addLayout(self.w_layout_avatar_1) @@ -92,8 +118,8 @@ class Ui_MainWindow(object): sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.preview_label_avatar_2.sizePolicy().hasHeightForWidth()) self.preview_label_avatar_2.setSizePolicy(sizePolicy) - self.preview_label_avatar_2.setMinimumSize(QtCore.QSize(200, 200)) - self.preview_label_avatar_2.setMaximumSize(QtCore.QSize(300, 300)) + self.preview_label_avatar_2.setMinimumSize(QtCore.QSize(0, 150)) + self.preview_label_avatar_2.setMaximumSize(QtCore.QSize(300, 150)) self.preview_label_avatar_2.setFrameShape(QtWidgets.QFrame.Box) self.preview_label_avatar_2.setScaledContents(True) self.preview_label_avatar_2.setAlignment(QtCore.Qt.AlignCenter) @@ -107,7 +133,7 @@ class Ui_MainWindow(object): sizePolicy.setHeightForWidth(self.button_select_avatar_2.sizePolicy().hasHeightForWidth()) self.button_select_avatar_2.setSizePolicy(sizePolicy) self.button_select_avatar_2.setMinimumSize(QtCore.QSize(200, 35)) - self.button_select_avatar_2.setMaximumSize(QtCore.QSize(300, 35)) + self.button_select_avatar_2.setMaximumSize(QtCore.QSize(16777215, 35)) self.button_select_avatar_2.setObjectName("button_select_avatar_2") self.w_layout_avatar_2.addWidget(self.button_select_avatar_2) self.w_layout_avatars_1_and_2.addLayout(self.w_layout_avatar_2) @@ -124,8 +150,8 @@ class Ui_MainWindow(object): sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.preview_label_avatar_3.sizePolicy().hasHeightForWidth()) self.preview_label_avatar_3.setSizePolicy(sizePolicy) - self.preview_label_avatar_3.setMinimumSize(QtCore.QSize(200, 200)) - self.preview_label_avatar_3.setMaximumSize(QtCore.QSize(300, 300)) + self.preview_label_avatar_3.setMinimumSize(QtCore.QSize(0, 150)) + self.preview_label_avatar_3.setMaximumSize(QtCore.QSize(300, 150)) self.preview_label_avatar_3.setFrameShape(QtWidgets.QFrame.Box) self.preview_label_avatar_3.setTextFormat(QtCore.Qt.RichText) self.preview_label_avatar_3.setScaledContents(True) @@ -140,7 +166,7 @@ class Ui_MainWindow(object): sizePolicy.setHeightForWidth(self.button_select_avatar_3.sizePolicy().hasHeightForWidth()) self.button_select_avatar_3.setSizePolicy(sizePolicy) self.button_select_avatar_3.setMinimumSize(QtCore.QSize(200, 35)) - self.button_select_avatar_3.setMaximumSize(QtCore.QSize(300, 35)) + self.button_select_avatar_3.setMaximumSize(QtCore.QSize(16777215, 35)) self.button_select_avatar_3.setObjectName("button_select_avatar_3") self.w_layout_avatar_3.addWidget(self.button_select_avatar_3) self.w_layout_avatars_3_and_4.addLayout(self.w_layout_avatar_3) @@ -154,8 +180,8 @@ class Ui_MainWindow(object): sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth(self.preview_label_avatar_4.sizePolicy().hasHeightForWidth()) self.preview_label_avatar_4.setSizePolicy(sizePolicy) - self.preview_label_avatar_4.setMinimumSize(QtCore.QSize(200, 200)) - self.preview_label_avatar_4.setMaximumSize(QtCore.QSize(300, 300)) + self.preview_label_avatar_4.setMinimumSize(QtCore.QSize(0, 150)) + self.preview_label_avatar_4.setMaximumSize(QtCore.QSize(300, 150)) self.preview_label_avatar_4.setFrameShape(QtWidgets.QFrame.Box) self.preview_label_avatar_4.setScaledContents(True) self.preview_label_avatar_4.setAlignment(QtCore.Qt.AlignCenter) @@ -169,7 +195,7 @@ class Ui_MainWindow(object): sizePolicy.setHeightForWidth(self.button_select_avatar_4.sizePolicy().hasHeightForWidth()) self.button_select_avatar_4.setSizePolicy(sizePolicy) self.button_select_avatar_4.setMinimumSize(QtCore.QSize(200, 35)) - self.button_select_avatar_4.setMaximumSize(QtCore.QSize(300, 35)) + self.button_select_avatar_4.setMaximumSize(QtCore.QSize(16777215, 35)) self.button_select_avatar_4.setObjectName("button_select_avatar_4") self.w_layout_avatar_4.addWidget(self.button_select_avatar_4) self.w_layout_avatars_3_and_4.addLayout(self.w_layout_avatar_4) @@ -187,7 +213,7 @@ class Ui_MainWindow(object): self.label_threshold_description.setObjectName("label_threshold_description") self.h_layout_threshold.addWidget(self.label_threshold_description) self.lcd_number_of_threshold = QtWidgets.QLCDNumber(self.central_widget) - self.lcd_number_of_threshold.setMinimumSize(QtCore.QSize(100, 50)) + self.lcd_number_of_threshold.setMinimumSize(QtCore.QSize(0, 30)) self.lcd_number_of_threshold.setMaximumSize(QtCore.QSize(200, 50)) self.lcd_number_of_threshold.setFrameShape(QtWidgets.QFrame.Box) self.lcd_number_of_threshold.setFrameShadow(QtWidgets.QFrame.Raised) @@ -222,7 +248,7 @@ class Ui_MainWindow(object): self.h_line_3.raise_() MainWindow.setCentralWidget(self.central_widget) self.menu_bar = QtWidgets.QMenuBar(MainWindow) - self.menu_bar.setGeometry(QtCore.QRect(0, 0, 864, 32)) + self.menu_bar.setGeometry(QtCore.QRect(0, 0, 496, 32)) self.menu_bar.setObjectName("menu_bar") self.menu_project = QtWidgets.QMenu(self.menu_bar) self.menu_project.setObjectName("menu_project") @@ -262,11 +288,11 @@ class Ui_MainWindow(object): def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "MagicPodcast")) - self.line_edit_audio_1.setPlaceholderText(_translate("MainWindow", "Plik audio pierwszego rozmówcy")) - self.line_edit_name_1.setPlaceholderText(_translate("MainWindow", "Imię pierwszego rozmówcy")) + self.line_edit_audio_1.setPlaceholderText(_translate("MainWindow", "Plik audio 1 rozmówcy")) + self.line_edit_name_1.setPlaceholderText(_translate("MainWindow", "Imię 1 rozmówcy")) self.button_audio_1.setText(_translate("MainWindow", "Dodaj audio 1")) - self.line_edit_audio_2.setPlaceholderText(_translate("MainWindow", "Plik audio drugiego rozmówcy")) - self.line_edit_name_2.setPlaceholderText(_translate("MainWindow", "Imię drugieo rozmówcy")) + self.line_edit_audio_2.setPlaceholderText(_translate("MainWindow", "Plik audio 2 rozmówcy")) + self.line_edit_name_2.setPlaceholderText(_translate("MainWindow", "Imię 2 rozmówcy")) self.button_audio_2.setText(_translate("MainWindow", "Dodaj audio 2")) self.preview_label_avatar_1.setText(_translate("MainWindow", "Podgląd - rozmówcy aktywni")) self.button_select_avatar_1.setText(_translate("MainWindow", "Rozmówcy - aktywni"))