Skip cover/metadata scraping for NoPayStation themes and DLC
This commit is contained in:
+32
-11
@@ -122,10 +122,11 @@ class CoverLoader(QObject):
|
||||
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||
|
||||
pool = ThreadPoolExecutor(max_workers=8)
|
||||
futures = {
|
||||
pool.submit(load_cover, it): i
|
||||
for i, it in enumerate(self.items)
|
||||
}
|
||||
futures = {}
|
||||
for i, it in enumerate(self.items):
|
||||
if not covers.is_scrapable(it.get("system")):
|
||||
continue # themes/DLC have no covers; keep the placeholder
|
||||
futures[pool.submit(load_cover, it)] = i
|
||||
try:
|
||||
for fut in as_completed(futures):
|
||||
if self._cancel.is_set():
|
||||
@@ -210,6 +211,8 @@ def load_cover(item, timeout=8, quick=False):
|
||||
name = item["name"]
|
||||
rid = item["release_id"]
|
||||
system = item["system"]
|
||||
if not covers.is_scrapable(system):
|
||||
return None # themes/DLC have no covers
|
||||
if system == "videos":
|
||||
return _load_video_cover(name, rid, system, timeout)
|
||||
return covers.fetch_cover(name, rid, system, timeout, quick=quick)
|
||||
@@ -429,7 +432,7 @@ class CoverShowcase(QWidget):
|
||||
if item is None:
|
||||
return
|
||||
data = item.data(Qt.UserRole)
|
||||
if data and data.get("system") != "videos":
|
||||
if data and data.get("system") not in ("videos", "theme", "dlc"):
|
||||
self.play_requested.emit(data)
|
||||
|
||||
def _on_failed(self, gen, index, name):
|
||||
@@ -467,13 +470,13 @@ class CoverShowcase(QWidget):
|
||||
if it is not None and it.get("path"):
|
||||
menu.addAction("Open containing folder", lambda: open_containing_folder(it.get("path")))
|
||||
if it is not None:
|
||||
if it.get("system") != "videos":
|
||||
if it.get("system") not in ("videos", "theme", "dlc"):
|
||||
menu.addAction("Play on PPSSPP", lambda: self.play_requested.emit(it))
|
||||
menu.addAction("Copy to PSP", lambda: self.copy_requested.emit(it))
|
||||
if it.get("on_psp"):
|
||||
menu.addAction("Delete from PSP", lambda: self.delete_psp_requested.emit(it))
|
||||
menu.addAction("Delete…", lambda: self.delete_requested.emit(it))
|
||||
if it is not None:
|
||||
if it is not None and covers.is_scrapable(it.get("system")):
|
||||
menu.addAction("Scrape…", lambda: self.scrape_requested.emit(it))
|
||||
menu.exec(self.list.mapToGlobal(pos))
|
||||
|
||||
@@ -2021,6 +2024,8 @@ class StorePage(QWidget):
|
||||
rid, system = lc
|
||||
else:
|
||||
rid, system = covers.stable_key(it["name"]), it.get("system") or "games"
|
||||
if not covers.is_scrapable(system):
|
||||
return # themes/DLC have no covers
|
||||
p = covers.cover_path(rid, system)
|
||||
if p.exists() and covers.file_is_image(p):
|
||||
item.setIcon(QIcon(_fit_pixmap(QPixmap(str(p)), self.ICON_W, self.ICON_H)))
|
||||
@@ -2187,6 +2192,9 @@ class StorePage(QWidget):
|
||||
rid, system = lc
|
||||
else:
|
||||
rid, system = covers.stable_key(it["name"]), it.get("system") or "games"
|
||||
if not covers.is_scrapable(system):
|
||||
self.details.set_metadata({})
|
||||
return
|
||||
cached = info.load(str(rid), system)
|
||||
if cached is not None:
|
||||
self.details.set_metadata(cached)
|
||||
@@ -2218,6 +2226,8 @@ class StorePage(QWidget):
|
||||
return
|
||||
lc = item.get("_lib_cover")
|
||||
rid, system = lc if lc is not None else (covers.stable_key(item["name"]), item.get("system") or "games")
|
||||
if not covers.is_scrapable(system):
|
||||
return
|
||||
dlg = ScrapeDialog(item, self, rid=rid, system=system)
|
||||
if dlg.exec() != QDialog.Accepted:
|
||||
return
|
||||
@@ -2241,7 +2251,8 @@ class StorePage(QWidget):
|
||||
menu.addAction("Download", lambda: self.download_requested.emit([it]))
|
||||
if it.get("path"):
|
||||
menu.addAction("Open containing folder", lambda: open_containing_folder(it.get("path")))
|
||||
menu.addAction("Scrape…", lambda: self._search_cover(it))
|
||||
if covers.is_scrapable(it.get("system")):
|
||||
menu.addAction("Scrape…", lambda: self._search_cover(it))
|
||||
menu.exec(self.grid.mapToGlobal(pos))
|
||||
|
||||
def _on_table_menu(self, pos):
|
||||
@@ -2256,11 +2267,14 @@ class StorePage(QWidget):
|
||||
menu.addAction("Download", lambda: self.download_requested.emit([it]))
|
||||
if it.get("path"):
|
||||
menu.addAction("Open containing folder", lambda: open_containing_folder(it.get("path")))
|
||||
menu.addAction("Scrape…", lambda: self._search_cover(it))
|
||||
if covers.is_scrapable(it.get("system")):
|
||||
menu.addAction("Scrape…", lambda: self._search_cover(it))
|
||||
menu.exec(self.table.viewport().mapToGlobal(pos))
|
||||
|
||||
def _search_cover(self, it):
|
||||
system = it.get("system") or "games"
|
||||
if not covers.is_scrapable(system):
|
||||
return
|
||||
rid = covers.stable_key(it["name"])
|
||||
dlg = ScrapeDialog({"name": it["name"], "system": system}, self, rid=rid, system=system)
|
||||
if dlg.exec() == QDialog.Accepted:
|
||||
@@ -2297,6 +2311,8 @@ class StorePage(QWidget):
|
||||
rid, system = lc
|
||||
else:
|
||||
rid, system = covers.stable_key(it["name"]), it.get("system") or "games"
|
||||
if not covers.is_scrapable(system):
|
||||
continue # themes/DLC have no covers/metadata
|
||||
key = (str(rid), system)
|
||||
if key in seen:
|
||||
continue
|
||||
@@ -4317,7 +4333,7 @@ class MainWindow(QMainWindow):
|
||||
return
|
||||
cell = self.library_table.item(item.row(), 0)
|
||||
it = cell.data(Qt.UserRole) if cell is not None else None
|
||||
if it and it.get("system") != "videos":
|
||||
if it and it.get("system") not in ("videos", "theme", "dlc"):
|
||||
self._play_item_on_ppsspp(it)
|
||||
|
||||
def _on_library_table_menu(self, pos):
|
||||
@@ -4330,7 +4346,7 @@ class MainWindow(QMainWindow):
|
||||
if not it:
|
||||
return
|
||||
menu = QMenu(self)
|
||||
if it.get("system") != "videos":
|
||||
if it.get("system") not in ("videos", "theme", "dlc"):
|
||||
menu.addAction("Play on PPSSPP", lambda: self._play_item_on_ppsspp(it))
|
||||
menu.addAction("Copy to PSP", lambda: self._copy_to_psp(it))
|
||||
if it.get("on_psp"):
|
||||
@@ -4344,6 +4360,9 @@ class MainWindow(QMainWindow):
|
||||
self.details_panel.set_item(item)
|
||||
rid = str(item["release_id"])
|
||||
system = item.get("system")
|
||||
if not covers.is_scrapable(system):
|
||||
self.details_panel.set_metadata({})
|
||||
return
|
||||
cached = info.load(rid, system)
|
||||
if cached is not None:
|
||||
self.details_panel.set_metadata(cached)
|
||||
@@ -4404,6 +4423,8 @@ class MainWindow(QMainWindow):
|
||||
item = getattr(self, "_current_item", None)
|
||||
if item is None:
|
||||
return
|
||||
if not covers.is_scrapable(item.get("system")):
|
||||
return # themes/DLC have no metadata/cover
|
||||
rid = str(item.get("release_id") or covers.stable_key(item.get("name") or ""))
|
||||
system = item.get("system") or "games"
|
||||
dlg = ScrapeDialog(item, self, rid=rid, system=system)
|
||||
|
||||
Reference in New Issue
Block a user