every menu works, now the downloads need fixing

This commit is contained in:
nosch
2026-03-08 01:42:59 +01:00
parent 75e4da33eb
commit d8fec74de1
7 changed files with 72 additions and 30 deletions
+1 -1
View File
@@ -47,9 +47,9 @@ def _get_telegram_posts():
if post_url not in added: if post_url not in added:
added.add(post_url) added.add(post_url)
posts.append(dict( posts.append(dict(
title=title,
author="m0nkrus", author="m0nkrus",
id=len(posts) + 1, id=len(posts) + 1,
title=title,
url=post_url url=post_url
)) ))
+15 -1
View File
@@ -9,8 +9,22 @@ def scrape_rutracker(query):
consoleLog("[core.data.scrapers.rutracker] Sent request to server") consoleLog("[core.data.scrapers.rutracker] Sent request to server")
if search: if search:
_, data, _, _, _ = split_data(search.text) _, data, _, _, _ = split_data(search.text)
sorteddata = []
return data for entry in data:
sorteddata.append(
{
"title" : entry["title"],
"author" : entry["author"],
"seeders" : entry["seeders"],
"leechers" : entry["leechers"],
"url" : entry["url"],
"id" : entry["id"],
}
)
return sorteddata
else: else:
consoleLog("[core.data.scrapers.rutracker] No search Text, returning nothing") consoleLog("[core.data.scrapers.rutracker] No search Text, returning nothing")
return [] return []
+1 -1
View File
@@ -98,7 +98,7 @@ def filter_steamrip(query: str):
Metadata = { Metadata = {
"name" : "steamrip", "name" : "steamrip",
"headers" : ["Game", "Available Downloads"], "headers" : ["Game"],
"scrapeFunc" : filter_steamrip, "scrapeFunc" : filter_steamrip,
} }
+1 -1
View File
@@ -29,8 +29,8 @@ def scrape_uztracker(query):
posts.append(dict( posts.append(dict(
title=title, title=title,
author=author,
url=url, url=url,
author=author
)) ))
return posts return posts
+49 -10
View File
@@ -13,6 +13,7 @@ from PySide6.QtWidgets import (
QHeaderView, QHeaderView,
QMessageBox, QMessageBox,
QTableWidget, QTableWidget,
QTableWidgetItem,
QTextEdit, QTextEdit,
QStyledItemDelegate, QStyledItemDelegate,
QStatusBar QStatusBar
@@ -162,11 +163,13 @@ def windowCloseHelper():
class MainWindow(QtWidgets.QMainWindow, QWidget): class MainWindow(QtWidgets.QMainWindow, QWidget):
log_signal = Signal(str) # Thread-safe signal for logging log_signal = Signal(str) # Thread-safe signal for logging
search_results_signal = Signal(list) # and searching
def __init__(self): def __init__(self):
super().__init__() super().__init__()
MainWindow._instance = self MainWindow._instance = self
self.log_signal.connect(self._on_log_signal) self.log_signal.connect(self._on_log_signal)
self.search_results_signal.connect(self._on_search_results)
pixmap = QPixmap() pixmap = QPixmap()
image_data = base64.b64decode(logo_base64) image_data = base64.b64decode(logo_base64)
@@ -248,8 +251,10 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
state.trackertable.verticalHeader().setVisible(False) state.trackertable.verticalHeader().setVisible(False)
state.trackertable.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground) state.trackertable.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
state.trackertable.viewport().setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground) state.trackertable.viewport().setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
model = state.trackertable.model()
model.dataChanged.disconnect()
state.trackertable.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeMode.ResizeToContents)
class TrackerHoverDelegate(QStyledItemDelegate): class TrackerHoverDelegate(QStyledItemDelegate):
def paint(self, painter, option, index): def paint(self, painter, option, index):
if index.row() == MainWindow._instance._tracker_hovered_row: if index.row() == MainWindow._instance._tracker_hovered_row:
@@ -491,8 +496,9 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
self.downloadList.setItemDelegateForColumn(0, delegate) self.downloadList.setItemDelegateForColumn(0, delegate)
delegate.clicked.connect(on_pause_resume_clicked) delegate.clicked.connect(on_pause_resume_clicked)
# download button triggers #! FIX THIS
#! THIS IS TEMPORARY self.dlbutton.clicked.connect(lambda: run_thread(threading.Thread(target=download_selected, args=(state.trackertable.currentItem(), state.posts, state.posts))))
self.dlbutton.clicked.connect(lambda: run_thread(threading.Thread(target=download_selected, args=(state.trackertable.currentItem(), state.posts, state.trackers[state.currenttracker]["headers"]))))
container.setLayout(containerLayout) container.setLayout(containerLayout)
self.setCentralWidget(container) self.setCentralWidget(container)
@@ -636,6 +642,24 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
self.consoleLog.verticalScrollBar().maximum() self.consoleLog.verticalScrollBar().maximum()
) )
def _on_search_results(self, headers):
if state.posts is None or state.posts == []:
self.show_empty_results(True)
return
else:
self.show_empty_results(False)
state.trackertable.clearContents()
state.trackertable.setColumnCount(len(headers))
state.trackertable.setHorizontalHeaderLabels(headers)
state.trackertable.setRowCount(len(state.posts))
for x, rowdata in enumerate(state.posts):
for y, data in enumerate(rowdata.values()):
state.trackertable.setItem(x, y, QTableWidgetItem(str(data)))
self._resize_tracker_columns()
def update_image_overlay(self, new_image_path): def update_image_overlay(self, new_image_path):
self.image = QImage(new_image_path) self.image = QImage(new_image_path)
self.pixmap = QPixmap.fromImage(self.image) self.pixmap = QPixmap.fromImage(self.image)
@@ -693,9 +717,7 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
def mousePressEvent(self, event): def mousePressEvent(self, event):
self.rutrackerlist.clearSelection() state.trackertable.clearSelection()
self.uztrackerlist.clearSelection()
self.monkruslist.clearSelection()
self.downloadList.clearSelection() self.downloadList.clearSelection()
super().mousePressEvent(event) super().mousePressEvent(event)
@@ -764,11 +786,28 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
self.emptyDownload.show() self.emptyDownload.show()
self.downloadList.hide() self.downloadList.hide()
# thank you claude # thanks claude
def _resize_tracker_columns(self):
header = state.trackertable.horizontalHeader()
col_count = header.count()
if col_count == 0:
return
for i in range(col_count):
state.trackertable.resizeColumnToContents(i)
content_widths = [header.sectionSize(i) for i in range(col_count)]
total_content_width = sum(content_widths)
remaining = state.trackertable.viewport().width() - total_content_width
extra = max(0, remaining) // col_count
header.setSectionResizeMode(QHeaderView.ResizeMode.Fixed)
for i in range(col_count):
header.resizeSection(i, content_widths[i] + extra)
def resizeEvent(self, event): def resizeEvent(self, event):
super().resizeEvent(event) super().resizeEvent(event)
table_width = state.trackertable.viewport().width() self._resize_tracker_columns()
state.trackertable.setColumnWidth(1, int(table_width * 0.3))
def contextMenuEvent(self, event: QContextMenuEvent): def contextMenuEvent(self, event: QContextMenuEvent):
if self.downloadList.underMouse(): if self.downloadList.underMouse():
+4 -15
View File
@@ -1,12 +1,13 @@
from PySide6.QtWidgets import QTableWidgetItem, QHeaderView from PySide6.QtWidgets import QTableWidgetItem, QHeaderView
from core.utils.logging.logs import consoleLog 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.rutracker import scrape_rutracker
from core.data.scrapers.uztracker import scrape_uztracker
from core.data.scrapers.monkrus import scrape_m0nkrus from core.data.scrapers.monkrus import scrape_m0nkrus
from core.data.scrapers.steamrip import filter_steamrip from core.data.scrapers.steamrip import filter_steamrip
from core.utils.data.state import state from core.utils.data.state import state
def return_pressed(self): def return_pressed(self):
self.show_empty_results(False)
search_text = self.searchbar.text() search_text = self.searchbar.text()
if search_text == "": if search_text == "":
consoleLog("Error: Can't search for nothing") consoleLog("Error: Can't search for nothing")
@@ -18,18 +19,6 @@ def return_pressed(self):
scrapefunc: function = tracker["scrapeFunc"] scrapefunc: function = tracker["scrapeFunc"]
state.posts = scrapefunc(search_text) state.posts = scrapefunc(search_text)
state.trackertable.clearContents()
if state.posts == []: from core.interface.gui import MainWindow
self.show_empty_results(True) MainWindow._instance.search_results_signal.emit(tracker["headers"])
state.trackertable.setColumnCount(len(tracker["headers"]))
state.trackertable.setHorizontalHeaderLabels(tracker["headers"])
state.trackertable.setRowCount(len(state.posts))
for x, rowdata in enumerate(state.posts):
for y, data in enumerate(rowdata.values()):
state.trackertable.setItem(x, y, QTableWidgetItem(data))
consoleLog("[searchhelper] updated table")
+1 -1
View File
@@ -37,4 +37,4 @@ def run_download_direct(magnet_uri):
def seed_magnet(magnet_uri, file_path): def seed_magnet(magnet_uri, file_path):
consoleLog(f"Seeding: {magnet_uri[:60]}") consoleLog(f"Seeding: {magnet_uri[:60]}")
add_seed(magnet_uri, file_path) add_seed(magnet_uri, file_path)