From e54b3362f9bddb6638d46cfc82c1e08dc5023c1a Mon Sep 17 00:00:00 2001 From: Vxrtrauter <101264710+Vxrtrauter@users.noreply.github.com> Date: Fri, 10 Apr 2026 19:25:18 +0200 Subject: [PATCH] fix: steamrip scraper freezing whole manager on second search and update notification popup settings and improve megadb notification handling --- src/data/hosts/megadb.py | 6 +++++- src/data/sources/steamrip.py | 11 +++++------ src/interface/dialogs/notificationpopup.py | 6 +++++- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/data/hosts/megadb.py b/src/data/hosts/megadb.py index e73989d..129a10b 100644 --- a/src/data/hosts/megadb.py +++ b/src/data/hosts/megadb.py @@ -17,13 +17,17 @@ def show_megadb_notification(): text="Beware of malicious Ads. Make sure to have an adblocker installed.\n" '
Visit uBlock Origin', darkmode=False if state.window_transparency else True ) + notification_popup.setTextFormat(Qt.TextFormat.RichText) notification_popup.setTextInteractionFlags(Qt.TextInteractionFlag.TextBrowserInteraction) + if state.window_transparency is True: notification_popup.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground) + button = notification_popup.addButton("Don't show again", QMessageBox.ButtonRole.AcceptRole) button.clicked.connect(lambda: setattr(state, "show_megadb_notification", False)) - save_settings(show_megadb_notification=False) + + save_settings(show_megadb_notification=state.show_megadb_notification) notification_popup.exec() def scrape_megadb(url): diff --git a/src/data/sources/steamrip.py b/src/data/sources/steamrip.py index e6c605c..9b349dc 100644 --- a/src/data/sources/steamrip.py +++ b/src/data/sources/steamrip.py @@ -9,23 +9,22 @@ import webbrowser import requests import time import re +import copy class SteamripScraper: name = "steamrip" headers = ["Game"] is_magnet = False - def __init__(self): self.cache = { "data": [], "last_fetched": 0 } self.cache_expiry = 300 def scrape_steamrip_links(self): - current_time = time.time() - if self.cache["data"] != [] and (current_time - self.cache["last_fetched"] < self.cache_expiry): - return self.cache["data"] + if self.cache["data"] and (current_time - self.cache["last_fetched"] < self.cache_expiry): + return copy.deepcopy(self.cache["data"]) try: url = f"https://steamrip.com/games-list-page/" @@ -71,7 +70,7 @@ class SteamripScraper: soup = BeautifulSoup(response.text, "html.parser") download_link_elements = soup.find_all("a",class_="shortc-button") - download_links = ["buzzheavier", "gofile", "vikingfile", "megadb"] + download_links = ["", "", "", ""] for download_link in download_link_elements: pure = download_link.attrs.get("href") @@ -89,7 +88,7 @@ class SteamripScraper: ret = [] for link in download_links: - if len(link) != 1: + if link != "": ret.append(link) return ret diff --git a/src/interface/dialogs/notificationpopup.py b/src/interface/dialogs/notificationpopup.py index 4b18d8d..4c5dc40 100644 --- a/src/interface/dialogs/notificationpopup.py +++ b/src/interface/dialogs/notificationpopup.py @@ -1,4 +1,5 @@ from PySide6.QtWidgets import QMessageBox +from utils.data.state import state import qdarktheme class NotificationPopup(QMessageBox): @@ -6,7 +7,10 @@ class NotificationPopup(QMessageBox): super().__init__(parent) if darkmode is True: - qdarktheme.setup_theme("auto") + custom_colors = {} + if state.accent_color: + custom_colors["primary"] = state.accent_color + qdarktheme.setup_theme("auto", custom_colors=custom_colors if custom_colors else None) self.setIcon(QMessageBox.Icon.Information) self.setWindowTitle(title)