From 4bf2e9af81dbe1fe4b2e6afbe11415f47db236d4 Mon Sep 17 00:00:00 2001 From: Vxrtrauter <101264710+Vxrtrauter@users.noreply.github.com> Date: Sun, 1 Mar 2026 23:14:10 +0100 Subject: [PATCH 1/9] feat: add download existence checks and improve log removal feedback --- src/core/utils/logging/loghandler.py | 15 +++++++++++---- src/core/utils/logging/logs.py | 4 +++- src/main.py | 3 ++- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/core/utils/logging/loghandler.py b/src/core/utils/logging/loghandler.py index 9a424a3..9569a20 100644 --- a/src/core/utils/logging/loghandler.py +++ b/src/core/utils/logging/loghandler.py @@ -1,6 +1,8 @@ -from core.utils.logging.logs import consoleLog +from core.utils.logging.logs import consoleLog, remove_download_log from core.utils.network.download import run_download_direct +import os + def split_data(data): count = data.count @@ -16,6 +18,11 @@ def check_completed(downloads, resume): run_download_direct(download.magnet_uri) consoleLog(f"Resuming {download.title}") - - - +def check_downloads(downloads): + for download in downloads: + if os.path.exists(download.path): + consoleLog(f"Existing Download: {download.title}") + else: + consoleLog(f"Inexistent Download: {download.title}") + remove_download_log(download.magnet_uri) + \ No newline at end of file diff --git a/src/core/utils/logging/logs.py b/src/core/utils/logging/logs.py index 7fd0ca9..b7a43c2 100644 --- a/src/core/utils/logging/logs.py +++ b/src/core/utils/logging/logs.py @@ -77,10 +77,12 @@ def remove_download_log(magnet_uri) -> DownloadList: else: downloads = [] + magnet_link = (magnet_uri or "").strip() + title = next((getattr(d, 'title', 'Unknown') for d in downloads if (getattr(d, 'magnet_uri', None) or '').strip() == magnet_link or (getattr(d, 'url', None) or '').strip() == magnet_link)) downloads = [d for d in downloads if (getattr(d, 'magnet_uri', None) or "").strip() != magnet_link and (getattr(d, 'url', None) or "").strip() != magnet_link] - consoleLog(f"Removed {magnet_link} from Log File") + consoleLog(f"Removed {title} from Log File") download_list = DownloadList(data=downloads, count=len(downloads)) with open(downloads_file, "w") as file: diff --git a/src/main.py b/src/main.py index 0f263c0..4d52c35 100644 --- a/src/main.py +++ b/src/main.py @@ -5,7 +5,7 @@ from core.network.libtorrent_misc import send_notification, update_log from core.utils.logging.logs import get_download_logs from core.utils.general.shutdown import closehelper, shutdown_event from core.utils.general.wrappers import run_thread -from core.utils.logging.loghandler import split_data, check_completed +from core.utils.logging.loghandler import split_data, check_completed, check_downloads from core.network.interface import list_interfaces, init_interfaces from core.utils.config.config import read_config from PySide6 import QtWidgets @@ -60,6 +60,7 @@ if __name__ == "__main__": consoleLog("Started Thread: update_log") run_thread(threading.Thread(target=check_completed, args=(downloads, state.autoresume))) consoleLog("Started Thread: check_completed") + check_downloads(downloads) elapsed = time.perf_counter() - start_time consoleLog(f"Initialization completed in {elapsed:.2f}s. Launching GUI") run_gui() From 4175f82967f578eb9870078a45b835a063e741e0 Mon Sep 17 00:00:00 2001 From: Vxrtrauter <101264710+Vxrtrauter@users.noreply.github.com> Date: Tue, 3 Mar 2026 21:56:28 +0100 Subject: [PATCH 2/9] feat: add windowCloseHelper function and integrate it into keyboard interrupt handling --- src/core/interface/gui.py | 5 ++++- src/main.py | 15 +++++---------- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/src/core/interface/gui.py b/src/core/interface/gui.py index 5654b84..8bd4b75 100644 --- a/src/core/interface/gui.py +++ b/src/core/interface/gui.py @@ -18,7 +18,7 @@ from PySide6.QtWidgets import ( QStyledItemDelegate, ) -from PySide6.QtGui import QIcon, QCloseEvent, QImage, QPixmap, QContextMenuEvent +from PySide6.QtGui import QIcon, QCloseEvent, QImage, QPixmap, QContextMenuEvent, QGuiApplication import darkdetect import threading import platform @@ -67,6 +67,9 @@ def download_update(latest_version): sys.exit(0) +def windowCloseHelper(): + QGuiApplication.quit() + class MainWindow(QtWidgets.QMainWindow, QWidget): log_signal = Signal(str) # Thread-safe signal for logging diff --git a/src/main.py b/src/main.py index 4d52c35..1743652 100644 --- a/src/main.py +++ b/src/main.py @@ -1,4 +1,4 @@ -from core.interface.gui import MainWindow +from core.interface.gui import MainWindow, windowCloseHelper from core.utils.data.state import state from core.utils.logging.logs import consoleLog from core.network.libtorrent_misc import send_notification, update_log @@ -14,15 +14,9 @@ import qdarktheme import threading import platform import signal -import argparse import sys import time - -parser = argparse.ArgumentParser() -parser.add_argument("--debug", action="store_true") -args = parser.parse_args() - def run_gui(): app = QtWidgets.QApplication.instance() or QtWidgets.QApplication(sys.argv) qdarktheme.setup_theme("auto") @@ -39,14 +33,13 @@ def run_gui(): def keyboardinterrupthandler(signum, frame): closehelper() + windowCloseHelper() -if __name__ == "__main__": +def main(): start_time = time.perf_counter() read_config() logs = get_download_logs() _, downloads = split_data(logs) - if args.debug: - state.debug = args.debug # override of read_config signal.signal(signal.SIGINT, keyboardinterrupthandler) consoleLog("Starting SoftwareManager...") consoleLog("Fetching Network Interfaces...") @@ -65,3 +58,5 @@ if __name__ == "__main__": consoleLog(f"Initialization completed in {elapsed:.2f}s. Launching GUI") run_gui() +if __name__ == "__main__": + main() From 90124fd9c8739f5bf12599996246aca1a4687840 Mon Sep 17 00:00:00 2001 From: KeksNino Date: Wed, 4 Mar 2026 14:07:43 +0100 Subject: [PATCH 3/9] fix: smaller author column in search tab --- src/core/interface/gui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/interface/gui.py b/src/core/interface/gui.py index 8bd4b75..6d03f90 100644 --- a/src/core/interface/gui.py +++ b/src/core/interface/gui.py @@ -157,7 +157,7 @@ class MainWindow(QtWidgets.QMainWindow, QWidget): header = table.horizontalHeader() header.setSectionResizeMode(0, QHeaderView.ResizeMode.Stretch) header.setSectionResizeMode(1, QHeaderView.ResizeMode.Fixed) - header.resizeSection(1, 500) + header.resizeSection(1, 200) header.setStretchLastSection(False) return table From 34a50e1a1bf752b31b7d3a44ec2017ae026a6646 Mon Sep 17 00:00:00 2001 From: Vxrtrauter <101264710+Vxrtrauter@users.noreply.github.com> Date: Wed, 4 Mar 2026 19:11:31 +0100 Subject: [PATCH 4/9] refactor: rename scraping functions for consistency and improve data handling --- src/core/data/scrapers/monkrus.py | 2 +- src/core/data/scrapers/rutracker.py | 4 +- src/core/data/scrapers/uztracker.py | 100 +++++++---------------- src/core/interface/utils/searchhelper.py | 43 +++------- src/core/utils/network/jsonhandler.py | 4 +- 5 files changed, 48 insertions(+), 105 deletions(-) diff --git a/src/core/data/scrapers/monkrus.py b/src/core/data/scrapers/monkrus.py index 7acac5e..67e64f3 100644 --- a/src/core/data/scrapers/monkrus.py +++ b/src/core/data/scrapers/monkrus.py @@ -57,7 +57,7 @@ def _get_telegram_posts(): return(posts) -def scrape_monkrus_telegram(query): +def scrape_m0nkrus(query): posts = _get_telegram_posts() filtered_posts = [] diff --git a/src/core/data/scrapers/rutracker.py b/src/core/data/scrapers/rutracker.py index 58aecf7..d30ec48 100644 --- a/src/core/data/scrapers/rutracker.py +++ b/src/core/data/scrapers/rutracker.py @@ -3,8 +3,8 @@ from core.utils.data.state import state from core.utils.logging.logs import consoleLog -def scrape_rutracker(search_text): - search = requests.get(f"{state.api_url}/search?q={search_text}") +def scrape_rutracker(query): + search = requests.get(f"{state.api_url}/search?q={query}") consoleLog("Sent request to server") if search: try: diff --git a/src/core/data/scrapers/uztracker.py b/src/core/data/scrapers/uztracker.py index 1531f9c..dc111a4 100644 --- a/src/core/data/scrapers/uztracker.py +++ b/src/core/data/scrapers/uztracker.py @@ -1,83 +1,43 @@ import requests import threading from bs4 import BeautifulSoup +from urllib.parse import urljoin from core.utils.data.state import state from core.utils.logging.logs import consoleLog from core.utils.general.wrappers import run_thread +def scrape_uztracker(query): + base_url="https://uztracker.net/" + search_url = f"{base_url.rstrip('/')}/tracker.php?nm={query}" + consoleLog(search_url) + posts = [] -global url_uztracker -url_uztracker = "https://uztracker.net/tracker.php?nm=" - -def init_uztracker(): - global up - global soup try: - response = requests.get(url_uztracker, timeout=10) - if response.status_code == 200: - up = True - else: - up = False - consoleLog(f"Uztracker seems down, status code: {response.status_code}") - except requests.exceptions.RequestException as e: - consoleLog(f"Request Exception on {url_uztracker}:") - consoleLog(str(e)) - consoleLog("Is the Site down?") - up = False - -run_thread(threading.Thread(target=init_uztracker)) - -def scrape_uztracker(search): - if up: - search_url = url_uztracker + search - consoleLog(search_url) - result = False - global results - global resulttitles - results = [] - resulttitles = [] - - try: - resultCount = 0 - response = requests.get(search_url) - response.raise_for_status() - soup = BeautifulSoup(response.text, 'html.parser') - links = soup.find_all('a', class_="genmed tLink", href=lambda x: x and x.startswith('./viewtopic')) - for link in links: - if link.b: - resultCount += 1 - results.append(link['href']) - resulttitles.append(link.b.text) - result = True - - if result: - return resulttitles, results - - if not result: - # add popup in gui for no result - return None - - except requests.RequestException as e: - if result: - consoleLog(f"Failed to fetch {search_url}: {e}") - return None - else: - consoleLog("Error: Uztracker down") - return None, None - -def get_post_title(post_url): - if up: - response = requests.get(post_url) + response = requests.get(search_url) + response.raise_for_status() soup = BeautifulSoup(response.text, 'html.parser') - maintitle = soup.find(class_='tt-text') - if maintitle: - return maintitle.text - else: - consoleLog("Program not found") - else: - consoleLog("Error: Uztracker down") - return None + links = soup.find_all('a', class_="genmed tLink", href=lambda x: x and x.startswith('./viewtopic')) + + for link in links: + if link.b: + title = link.b.text + url = urljoin(base_url, link['href']) + + author_link = link.find_parent('td').find('a', class_="med ts-text") + author = author_link.text.strip() if author_link else "Unknown" + + posts.append(dict( + title=title, + url=url, + author=author + )) + + return posts + + except requests.RequestException as e: + if posts: + consoleLog(f"Failed to fetch {search_url}: {e}") + return None - diff --git a/src/core/interface/utils/searchhelper.py b/src/core/interface/utils/searchhelper.py index b38bc2b..0fb2210 100644 --- a/src/core/interface/utils/searchhelper.py +++ b/src/core/interface/utils/searchhelper.py @@ -2,10 +2,16 @@ from PySide6.QtWidgets import QTableWidgetItem from core.utils.logging.logs import consoleLog from core.data.scrapers.uztracker import scrape_uztracker from core.data.scrapers.rutracker import scrape_rutracker -from core.data.scrapers.monkrus import scrape_monkrus_telegram -from core.utils.network.jsonhandler import split_data, format_data, format_data_m0nkrus +from core.data.scrapers.monkrus import scrape_m0nkrus +from core.utils.network.jsonhandler import split_data, format_data, format_data_minimal from core.utils.data.state import state +scrapers = { + "uztracker": scrape_uztracker, + "rutracker": scrape_rutracker, + "m0nkrus": scrape_m0nkrus +} + def return_pressed(self): search_text = self.searchbar.text() if search_text == "": @@ -13,29 +19,7 @@ def return_pressed(self): return consoleLog(f"User searched for: {search_text}") - if state.tracker == "uztracker": - response = scrape_uztracker(search_text) - if response: - state.post_titles, state.post_urls = response - state.tracker_list[state.tracker].clear() - if state.post_titles and len(state.post_titles) > 0: - state.tracker_list[state.tracker].setHorizontalHeaderLabels(["Post Title", "Author"]) - state.tracker_list[state.tracker].setRowCount(len(state.post_titles)) - for i, author in enumerate(state.post_author): - state.tracker_list[state.tracker].setItem(i, 1, QTableWidgetItem(author)) - for i, title in enumerate(state.post_titles): - state.tracker_list[state.tracker].setItem(i, 0, QTableWidgetItem(title)) - self.show_empty_results(False) - else: - consoleLog(f"No Results for {search_text}") - state.tracker_list[state.tracker].clear() - self.show_empty_results(True) - else: - consoleLog(f"No response from uztracker") - state.tracker_list[state.tracker].clear() - self.show_empty_results(True) - - elif state.tracker == "rutracker": + if state.tracker == "rutracker": response = scrape_rutracker(search_text) if response: _, state.posts, _, _, cached = split_data(response) @@ -64,15 +48,14 @@ def return_pressed(self): state.tracker_list[state.tracker].clear() self.show_empty_results(True) - elif state.tracker == "m0nkrus": - state.posts = scrape_monkrus_telegram(search_text) - + elif state.tracker is not None: + state.posts = scrapers[state.tracker](search_text) if state.posts == []: consoleLog(f"No Results for {search_text}") state.tracker_list[state.tracker].clear() self.show_empty_results(True) else: - state.post_titles, _, state.post_author = format_data_m0nkrus(state.posts) + state.post_author, state.post_titles, state.post_urls = format_data_minimal(state.posts) self.show_empty_results(False) state.tracker_list[state.tracker].clear() state.tracker_list[state.tracker].setHorizontalHeaderLabels(["Post Title", "Author"]) @@ -80,4 +63,4 @@ def return_pressed(self): for i, author in enumerate(state.post_author): state.tracker_list[state.tracker].setItem(i, 1, QTableWidgetItem(author)) for i, title in enumerate(state.post_titles): - state.tracker_list[state.tracker].setItem(i, 0, QTableWidgetItem(title)) + state.tracker_list[state.tracker].setItem(i, 0, QTableWidgetItem(title)) \ No newline at end of file diff --git a/src/core/utils/network/jsonhandler.py b/src/core/utils/network/jsonhandler.py index bd8805f..b3e353f 100644 --- a/src/core/utils/network/jsonhandler.py +++ b/src/core/utils/network/jsonhandler.py @@ -20,12 +20,12 @@ def format_data(data): return post_titles, post_links, post_author, post_seeders, post_leechers -def format_data_m0nkrus(data): +def format_data_minimal(data): post_author = [post["author"] for post in data] post_titles = [post["title"] for post in data] post_links = [post["url"] for post in data] - return post_titles, post_links, post_author + return post_author, post_titles, post_links From 3915e114a3eee802b25de9917c38c5e95e2a2e50 Mon Sep 17 00:00:00 2001 From: KeksNino Date: Wed, 4 Mar 2026 20:28:55 +0100 Subject: [PATCH 5/9] fix: logging in uztracker scraper and search for non-ascii letters and remove unused imports --- src/core/data/scrapers/uztracker.py | 11 +++++------ src/core/interface/utils/searchhelper.py | 2 +- src/core/utils/data/state.py | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/core/data/scrapers/uztracker.py b/src/core/data/scrapers/uztracker.py index dc111a4..e1ea77e 100644 --- a/src/core/data/scrapers/uztracker.py +++ b/src/core/data/scrapers/uztracker.py @@ -1,10 +1,7 @@ import requests -import threading from bs4 import BeautifulSoup from urllib.parse import urljoin -from core.utils.data.state import state from core.utils.logging.logs import consoleLog -from core.utils.general.wrappers import run_thread def scrape_uztracker(query): base_url="https://uztracker.net/" @@ -13,7 +10,10 @@ def scrape_uztracker(query): posts = [] try: - response = requests.get(search_url) + response = requests.get( + f"{search_url.rstrip('/')}/tracker.php", + params={'nm': query}, + ) response.raise_for_status() soup = BeautifulSoup(response.text, 'html.parser') links = soup.find_all('a', class_="genmed tLink", href=lambda x: x and x.startswith('./viewtopic')) @@ -35,8 +35,7 @@ def scrape_uztracker(query): return posts except requests.RequestException as e: - if posts: - consoleLog(f"Failed to fetch {search_url}: {e}") + consoleLog(f"Failed to fetch {search_url}: {e}") return None diff --git a/src/core/interface/utils/searchhelper.py b/src/core/interface/utils/searchhelper.py index 0fb2210..be8a6cb 100644 --- a/src/core/interface/utils/searchhelper.py +++ b/src/core/interface/utils/searchhelper.py @@ -63,4 +63,4 @@ def return_pressed(self): for i, author in enumerate(state.post_author): state.tracker_list[state.tracker].setItem(i, 1, QTableWidgetItem(author)) for i, title in enumerate(state.post_titles): - state.tracker_list[state.tracker].setItem(i, 0, QTableWidgetItem(title)) \ No newline at end of file + state.tracker_list[state.tracker].setItem(i, 0, QTableWidgetItem(title)) diff --git a/src/core/utils/data/state.py b/src/core/utils/data/state.py index 0d38ce8..ee5fa8c 100644 --- a/src/core/utils/data/state.py +++ b/src/core/utils/data/state.py @@ -8,7 +8,7 @@ class AppState(QObject): def __init__(self): super().__init__() - self.posts: List[Dict[str, Any]] = [] + self.posts: list[Any] | None = None self.post_titles: Optional[List] = None self.post_urls: Optional[List] = None self.post_author: List[str] = [] From 89fd8b4ebb9d3c9fcad03bcdf10ca162df4d2295 Mon Sep 17 00:00:00 2001 From: Vxrtrauter <101264710+Vxrtrauter@users.noreply.github.com> Date: Wed, 4 Mar 2026 20:58:56 +0100 Subject: [PATCH 6/9] fix: fix scraping for uztracker posts to support displaying authors properly --- src/core/data/scrapers/uztracker.py | 31 +++++++++++---------------- src/core/interface/gui.py | 2 +- src/core/utils/network/jsonhandler.py | 2 +- 3 files changed, 15 insertions(+), 20 deletions(-) diff --git a/src/core/data/scrapers/uztracker.py b/src/core/data/scrapers/uztracker.py index dc111a4..4c1a2de 100644 --- a/src/core/data/scrapers/uztracker.py +++ b/src/core/data/scrapers/uztracker.py @@ -1,10 +1,7 @@ import requests -import threading from bs4 import BeautifulSoup from urllib.parse import urljoin -from core.utils.data.state import state from core.utils.logging.logs import consoleLog -from core.utils.general.wrappers import run_thread def scrape_uztracker(query): base_url="https://uztracker.net/" @@ -16,27 +13,25 @@ def scrape_uztracker(query): response = requests.get(search_url) response.raise_for_status() soup = BeautifulSoup(response.text, 'html.parser') - links = soup.find_all('a', class_="genmed tLink", href=lambda x: x and x.startswith('./viewtopic')) - + links = soup.find_all('tr', class_="tCenter hl-tr", id=lambda x: x and x.startswith('tor_')) for link in links: - if link.b: - title = link.b.text - url = urljoin(base_url, link['href']) + + theme_link = link.find('a', class_="genmed tLink", href=lambda x: x and x.startswith('./viewtopic')) + url = urljoin(base_url, theme_link['href']) + title = theme_link.b.text + author_link = link.find('a', class_="med") + author = author_link.text.strip() if author_link else "Unknown" - author_link = link.find_parent('td').find('a', class_="med ts-text") - author = author_link.text.strip() if author_link else "Unknown" - - posts.append(dict( - title=title, - url=url, - author=author - )) + posts.append(dict( + title=title, + url=url, + author=author + )) return posts except requests.RequestException as e: - if posts: - consoleLog(f"Failed to fetch {search_url}: {e}") + consoleLog(f"Failed to fetch {search_url}: {e}") return None diff --git a/src/core/interface/gui.py b/src/core/interface/gui.py index 6d03f90..8bd4b75 100644 --- a/src/core/interface/gui.py +++ b/src/core/interface/gui.py @@ -157,7 +157,7 @@ class MainWindow(QtWidgets.QMainWindow, QWidget): header = table.horizontalHeader() header.setSectionResizeMode(0, QHeaderView.ResizeMode.Stretch) header.setSectionResizeMode(1, QHeaderView.ResizeMode.Fixed) - header.resizeSection(1, 200) + header.resizeSection(1, 500) header.setStretchLastSection(False) return table diff --git a/src/core/utils/network/jsonhandler.py b/src/core/utils/network/jsonhandler.py index b3e353f..9b205fe 100644 --- a/src/core/utils/network/jsonhandler.py +++ b/src/core/utils/network/jsonhandler.py @@ -25,7 +25,7 @@ def format_data_minimal(data): post_titles = [post["title"] for post in data] post_links = [post["url"] for post in data] - return post_author, post_titles, post_links + return post_author, post_titles, post_links From a7c71b37f5790079631a0ddf1539c68470fe2c28 Mon Sep 17 00:00:00 2001 From: Vxrtrauter <101264710+Vxrtrauter@users.noreply.github.com> Date: Wed, 4 Mar 2026 21:00:37 +0100 Subject: [PATCH 7/9] refactor: remove duplicate stripping --- src/core/data/scrapers/uztracker.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/core/data/scrapers/uztracker.py b/src/core/data/scrapers/uztracker.py index 7ea5cb3..96b672f 100644 --- a/src/core/data/scrapers/uztracker.py +++ b/src/core/data/scrapers/uztracker.py @@ -10,15 +10,12 @@ def scrape_uztracker(query): posts = [] try: - response = requests.get( - f"{search_url.rstrip('/')}/tracker.php", - params={'nm': query}, - ) + response = requests.get(search_url) response.raise_for_status() soup = BeautifulSoup(response.text, 'html.parser') links = soup.find_all('tr', class_="tCenter hl-tr", id=lambda x: x and x.startswith('tor_')) for link in links: - + theme_link = link.find('a', class_="genmed tLink", href=lambda x: x and x.startswith('./viewtopic')) url = urljoin(base_url, theme_link['href']) title = theme_link.b.text From d6e418d045d9e24d1cfe6ad3ee1d869ffbaa10b3 Mon Sep 17 00:00:00 2001 From: KeksNino Date: Wed, 4 Mar 2026 21:14:25 +0100 Subject: [PATCH 8/9] fix: crash when there are no results in search tab --- src/core/interface/gui.py | 8 ++++---- src/core/interface/utils/searchhelper.py | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/core/interface/gui.py b/src/core/interface/gui.py index 8bd4b75..8ed66a4 100644 --- a/src/core/interface/gui.py +++ b/src/core/interface/gui.py @@ -513,12 +513,12 @@ class MainWindow(QtWidgets.QMainWindow, QWidget): event.accept() def set_tracker(self, _): + old_tracker = state.tracker state.tracker = self.tracker_list.currentText() - while self.horizontal_layout.count(): - item = self.horizontal_layout.takeAt(0) - if item.widget(): - item.widget().setParent(None) + old_widget = state.tracker_list[old_tracker] + self.horizontal_layout.removeWidget(old_widget) + old_widget.setParent(None) tracker_widget = state.tracker_list[state.tracker] self.horizontal_layout.addWidget(tracker_widget) diff --git a/src/core/interface/utils/searchhelper.py b/src/core/interface/utils/searchhelper.py index be8a6cb..9dae1a5 100644 --- a/src/core/interface/utils/searchhelper.py +++ b/src/core/interface/utils/searchhelper.py @@ -55,7 +55,7 @@ def return_pressed(self): state.tracker_list[state.tracker].clear() self.show_empty_results(True) else: - state.post_author, state.post_titles, state.post_urls = format_data_minimal(state.posts) + state.post_author, state.post_titles, state.post_urls = format_data_minimal(state.posts) self.show_empty_results(False) state.tracker_list[state.tracker].clear() state.tracker_list[state.tracker].setHorizontalHeaderLabels(["Post Title", "Author"]) From e50ef32c66a85a81a825b38b6fe0b15881657738 Mon Sep 17 00:00:00 2001 From: Vxrtrauter <101264710+Vxrtrauter@users.noreply.github.com> Date: Thu, 5 Mar 2026 23:19:08 +0100 Subject: [PATCH 9/9] refactor: clean up imports and remove unused code in scrapers and download modules --- src/core/data/scrapers/rutracker.py | 4 +--- src/core/data/scrapers/uztracker.py | 5 +---- src/core/utils/network/download.py | 8 +------- 3 files changed, 3 insertions(+), 14 deletions(-) diff --git a/src/core/data/scrapers/rutracker.py b/src/core/data/scrapers/rutracker.py index d30ec48..bf67bb5 100644 --- a/src/core/data/scrapers/rutracker.py +++ b/src/core/data/scrapers/rutracker.py @@ -2,7 +2,6 @@ import requests from core.utils.data.state import state from core.utils.logging.logs import consoleLog - def scrape_rutracker(query): search = requests.get(f"{state.api_url}/search?q={query}") consoleLog("Sent request to server") @@ -12,10 +11,9 @@ def scrape_rutracker(query): except Exception: consoleLog("No results found / No response from server") return None - else: return None -# This function utilizes the SoftwareManager server - source code can be found under the "server" branch. +# This function utilizes the SoftwareManager server - source code can be found under the SoftwareManager-Server repository. diff --git a/src/core/data/scrapers/uztracker.py b/src/core/data/scrapers/uztracker.py index 96b672f..956629f 100644 --- a/src/core/data/scrapers/uztracker.py +++ b/src/core/data/scrapers/uztracker.py @@ -32,7 +32,4 @@ def scrape_uztracker(query): except requests.RequestException as e: consoleLog(f"Failed to fetch {search_url}: {e}") - return None - - - + return None \ No newline at end of file diff --git a/src/core/utils/network/download.py b/src/core/utils/network/download.py index 31b6bf0..26d866a 100644 --- a/src/core/utils/network/download.py +++ b/src/core/utils/network/download.py @@ -1,12 +1,9 @@ -from core.utils.data.state import state from core.utils.logging.logs import consoleLog from core.utils.data.tracker import get_item_url from core.utils.data.tracker import get_magnet_link from core.network.libtorrent_wrapper import add_download from core.utils.general.wrappers import run_thread from core.utils.logging.logs import add_download_log -import time - import threading @@ -26,7 +23,4 @@ def run_download(item, posts, post_titles): add_download_log(item, post_url, magnet_uri, False) def run_download_direct(magnet_uri): - add_download(magnet_uri) - - - + add_download(magnet_uri) \ No newline at end of file