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:
added.add(post_url)
posts.append(dict(
title=title,
author="m0nkrus",
id=len(posts) + 1,
title=title,
url=post_url
))
+15 -1
View File
@@ -9,8 +9,22 @@ def scrape_rutracker(query):
consoleLog("[core.data.scrapers.rutracker] Sent request to server")
if search:
_, 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:
consoleLog("[core.data.scrapers.rutracker] No search Text, returning nothing")
return []
+1 -1
View File
@@ -98,7 +98,7 @@ def filter_steamrip(query: str):
Metadata = {
"name" : "steamrip",
"headers" : ["Game", "Available Downloads"],
"headers" : ["Game"],
"scrapeFunc" : filter_steamrip,
}
+1 -1
View File
@@ -29,8 +29,8 @@ def scrape_uztracker(query):
posts.append(dict(
title=title,
author=author,
url=url,
author=author
))
return posts
+49 -10
View File
@@ -13,6 +13,7 @@ from PySide6.QtWidgets import (
QHeaderView,
QMessageBox,
QTableWidget,
QTableWidgetItem,
QTextEdit,
QStyledItemDelegate,
QStatusBar
@@ -162,11 +163,13 @@ def windowCloseHelper():
class MainWindow(QtWidgets.QMainWindow, QWidget):
log_signal = Signal(str) # Thread-safe signal for logging
search_results_signal = Signal(list) # and searching
def __init__(self):
super().__init__()
MainWindow._instance = self
self.log_signal.connect(self._on_log_signal)
self.search_results_signal.connect(self._on_search_results)
pixmap = QPixmap()
image_data = base64.b64decode(logo_base64)
@@ -248,8 +251,10 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
state.trackertable.verticalHeader().setVisible(False)
state.trackertable.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):
def paint(self, painter, option, index):
if index.row() == MainWindow._instance._tracker_hovered_row:
@@ -491,8 +496,9 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
self.downloadList.setItemDelegateForColumn(0, delegate)
delegate.clicked.connect(on_pause_resume_clicked)
# download button triggers
#! THIS IS TEMPORARY self.dlbutton.clicked.connect(lambda: run_thread(threading.Thread(target=download_selected, args=(state.trackertable.currentItem(), state.posts, state.posts))))
#! FIX THIS
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)
self.setCentralWidget(container)
@@ -636,6 +642,24 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
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):
self.image = QImage(new_image_path)
self.pixmap = QPixmap.fromImage(self.image)
@@ -693,9 +717,7 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
def mousePressEvent(self, event):
self.rutrackerlist.clearSelection()
self.uztrackerlist.clearSelection()
self.monkruslist.clearSelection()
state.trackertable.clearSelection()
self.downloadList.clearSelection()
super().mousePressEvent(event)
@@ -764,11 +786,28 @@ class MainWindow(QtWidgets.QMainWindow, QWidget):
self.emptyDownload.show()
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):
super().resizeEvent(event)
table_width = state.trackertable.viewport().width()
state.trackertable.setColumnWidth(1, int(table_width * 0.3))
self._resize_tracker_columns()
def contextMenuEvent(self, event: QContextMenuEvent):
if self.downloadList.underMouse():
+4 -15
View File
@@ -1,12 +1,13 @@
from PySide6.QtWidgets import QTableWidgetItem, QHeaderView
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.uztracker import scrape_uztracker
from core.data.scrapers.monkrus import scrape_m0nkrus
from core.data.scrapers.steamrip import filter_steamrip
from core.utils.data.state import state
def return_pressed(self):
self.show_empty_results(False)
search_text = self.searchbar.text()
if search_text == "":
consoleLog("Error: Can't search for nothing")
@@ -18,18 +19,6 @@ def return_pressed(self):
scrapefunc: function = tracker["scrapeFunc"]
state.posts = scrapefunc(search_text)
state.trackertable.clearContents()
if state.posts == []:
self.show_empty_results(True)
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")
from core.interface.gui import MainWindow
MainWindow._instance.search_results_signal.emit(tracker["headers"])
+1 -1
View File
@@ -37,4 +37,4 @@ def run_download_direct(magnet_uri):
def seed_magnet(magnet_uri, file_path):
consoleLog(f"Seeding: {magnet_uri[:60]}")
add_seed(magnet_uri, file_path)
add_seed(magnet_uri, file_path)