diff --git a/frontend.py b/frontend.py index c6a1733..ab5761a 100644 --- a/frontend.py +++ b/frontend.py @@ -2,7 +2,6 @@ import sys import os import random import re -import hashlib import html import logging from datetime import datetime @@ -12,9 +11,8 @@ from PyQt5.QtWidgets import ( QComboBox, QTextEdit, QDialogButtonBox, QAction, QFileDialog, QMessageBox, QInputDialog, QApplication, QAbstractItemView, QSizePolicy, QHeaderView ) -from PyQt5.QtCore import Qt, QUrl, QEvent -from PyQt5.QtGui import QColor, QIcon, QKeySequence -from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply +from PyQt5.QtCore import Qt +from PyQt5.QtGui import QColor, QIcon from backend import AnimeBackend # Set up logging @@ -108,30 +106,6 @@ Table-specific Shortcuts (apply to selected entry): buttons.accepted.connect(self.accept) layout.addWidget(buttons) -class HoverLabel(QLabel): - def __init__(self, main_window, name, url=None): - super().__init__() - self.main_window = main_window - self.url = url - self.fetched = False - self.image_file = None - if url: - self.image_file = os.path.join(main_window.image_cache_dir, hashlib.md5(url.encode()).hexdigest() + '.jpg') - name_escaped = html.escape(name) - self.setText(f'{name_escaped}') - self.setOpenExternalLinks(True) - if os.path.exists(self.image_file): - self.setToolTip(f'') - self.fetched = True - else: - self.setText(html.escape(name)) - - def enterEvent(self, event): - if self.url and not self.fetched: - self.main_window.fetch_poster(self.url, self) - self.fetched = True - super().enterEvent(event) - class CustomTableWidget(QTableWidget): def __init__(self, parent, is_pre): super().__init__() @@ -165,12 +139,6 @@ class AnimeTracker(QMainWindow): self.setWindowTitle("Anime Backlog Tracker") self.resize(800, 600) self.backend = AnimeBackend() - self.image_cache_dir = 'images' - try: - os.makedirs(self.image_cache_dir, exist_ok=True) - except Exception as e: - logging.error(f"Error creating image cache directory: {e}") - self.network_manager = QNetworkAccessManager(self) self.tab_widget = QTabWidget() self.setCentralWidget(self.tab_widget) self.create_menu() @@ -275,7 +243,13 @@ class AnimeTracker(QMainWindow): # Name name = entry[1] url = entry[7] - name_label = HoverLabel(self, name, url) + name_label = QLabel() + if url: + name_escaped = html.escape(name) + name_label.setText(f'{name_escaped}') + name_label.setOpenExternalLinks(True) + else: + name_label.setText(html.escape(name)) table.setCellWidget(row, col, name_label) col += 1 # Type @@ -378,7 +352,13 @@ class AnimeTracker(QMainWindow): # Name name = entry[1] url = entry[7] - name_label = HoverLabel(self, name, url) + name_label = QLabel() + if url: + name_escaped = html.escape(name) + name_label.setText(f'{name_escaped}') + name_label.setOpenExternalLinks(True) + else: + name_label.setText(html.escape(name)) table.setCellWidget(row, col, name_label) col += 1 # Type @@ -464,49 +444,6 @@ class AnimeTracker(QMainWindow): layout.addWidget(btn) return widget - def fetch_poster(self, url, label): - image_file = label.image_file - if os.path.exists(image_file): - label.setToolTip(f'') - return - try: - request = QNetworkRequest(QUrl(url)) - reply = self.network_manager.get(request) - reply.finished.connect(lambda: self.handle_html_reply(reply, image_file, label)) - except Exception as e: - logging.error(f"Error fetching poster from {url}: {e}") - label.setToolTip('Failed to load poster') - - def handle_html_reply(self, reply, image_file, label): - if reply.error() != QNetworkReply.NoError: - label.setToolTip('Failed to load poster') - return - try: - html = reply.readAll().data().decode('utf-8', errors='ignore') - match = re.search(r'') - except Exception as e: - logging.error(f"Error saving image to {image_file}: {e}") - label.setToolTip('Failed to load poster') - else: - label.setToolTip('Failed to load poster') - def add_anime(self): tab_index = self.tab_widget.currentIndex() if tab_index == -1: