diff --git a/core/interface/gui.py b/core/interface/gui.py index f1e323e..cdc2f7f 100644 --- a/core/interface/gui.py +++ b/core/interface/gui.py @@ -14,7 +14,6 @@ from PySide6.QtWidgets import ( QSpinBox, QTabWidget, QProgressBar, - QTextEdit, ) from PySide6.QtGui import QIcon, QAction import darkdetect @@ -209,7 +208,7 @@ class MainWindow(QtWidgets.QMainWindow, QWidget): api_url_container = QWidget() api_url_layout = QHBoxLayout() - api_url = QTextEdit() + api_url = QLineEdit() api_url_layout.addWidget(QLabel("API Server URL:")) api_url_layout.addWidget(api_url) api_url_container.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) @@ -224,7 +223,7 @@ class MainWindow(QtWidgets.QMainWindow, QWidget): download_path_container = QWidget() download_path_layout = QHBoxLayout() - download_path = QTextEdit() + download_path = QLineEdit() download_path_layout.addWidget(QLabel("Download Path:")) download_path_layout.addWidget(download_path) download_path_container.setSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Fixed) @@ -258,9 +257,8 @@ class MainWindow(QtWidgets.QMainWindow, QWidget): save_btn = QPushButton("Save") cancel_btn = QPushButton("Cancel") - save_btn.clicked.connect(lambda: save_settings(thread_box.value(), close_settings, api_url.toPlainText(), download_path.toPlainText(), speed_limit.value())) + save_btn.clicked.connect(lambda: save_settings(thread_box.value(), close_settings, api_url.text(), download_path.text(), speed_limit.value())) - cancel_btn.clicked.connect(dialog.reject) print(thread_box.value()) layout.addWidget(cancel_btn) @@ -270,5 +268,37 @@ class MainWindow(QtWidgets.QMainWindow, QWidget): dialog.exec() + # this needs a cleanup + def return_pressed(self): + search_text = self.searchbar.text() + if search_text == "": + if state.debug: + print("Error: Can't search for nothing") + return + if state.debug: + print("User searched for:", search_text) + if state.tracker == "uztracker": + response = asyncio.run(scrape_uztracker(search_text)) + if state.tracker == "rutracker": + response = scrape_rutracker(search_text) + if response: + if state.tracker == "uztracker": + state.post_titles, state.post_urls, = response + self.softwareList.clear() + if state.post_titles: + self.softwareList.addItems(state.post_titles) + if state.tracker == "rutracker": + _, state.posts, _, _ = split_data(response) + state.post_titles, _ = format_data(state.posts) + self.softwareList.clear() + self.softwareList.addItems(state.post_titles) + if not response: + if state.debug: + print(f"No Results found for \"{search_text}\"") + self.softwareList.clear() + self.softwareList.addItem("No Results") # replace with no results text in center + - \ No newline at end of file + def update_progress(self): + progress = dlprogress() + self.progressbar.setValue(progress) diff --git a/core/network/aria2_integration.py b/core/network/aria2_integration.py index 81fe0c5..44b778a 100644 --- a/core/network/aria2_integration.py +++ b/core/network/aria2_integration.py @@ -1,6 +1,8 @@ import aria2p import subprocess from core.utils.data.state import state +from plyer import notification +import time def run_aria2p(): global aria2 @@ -37,12 +39,27 @@ def aria2server(): def dlprogress(): try: - download2 = aria2.get_downloads() - if download2: - for download in download2: + downloads = aria2.get_downloads() + if downloads: + for download in downloads: progress = download.progress_string(0) progress_int = int(progress.strip('%')) return progress_int return 0 except: return 0 + +def send_notification(): + while True: + try: + downloads = aria2.get_downloads() + if downloads: + for download in downloads: + if download.is_complete: + # notification.notify("Download Complete" + print("yet") + time.sleep(5) + except Exception as e: + if state.debug: + print(f"Notification Error: {e}") + break diff --git a/main.py b/main.py index 9cc7612..700aeef 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,9 @@ from core.interface.gui import MainWindow from core.utils.data.state import state from core.network.aria2_integration import aria2server +from core.network.aria2_integration import send_notification +from core.utils.wrappers import run_thread +import threading from core.utils.config.config import read_config from PySide6 import QtWidgets import qdarktheme @@ -23,6 +26,7 @@ def run_gui(): sys.exit(app.exec()) def run_aria2server(): + run_thread(threading.Thread(target=send_notification)) aria2process = aria2server() return aria2process diff --git a/requirements.txt b/requirements.txt index 01db689..97505f6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,3 +6,4 @@ aria2p==0.12.1 pyinstaller==6.15.0 pyqtdarktheme==0.1.7 aiohttp==3.13.0 +plyer==2.1.0