diff --git a/rare/components/tabs/shop/shop_info.py b/rare/components/tabs/shop/shop_info.py index a331a643..cb1680dd 100644 --- a/rare/components/tabs/shop/shop_info.py +++ b/rare/components/tabs/shop/shop_info.py @@ -1,18 +1,21 @@ +import json +import logging import os import webbrowser +from json import JSONDecodeError -from PyQt5.QtCore import QLocale, Qt +from PyQt5.QtCore import QLocale, Qt, QUrl from PyQt5.QtGui import QPixmap -from PyQt5.QtNetwork import QNetworkAccessManager +from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply from PyQt5.QtWidgets import QWidget from rare.ui.components.tabs.store.shop_game_info import Ui_shop_info -from rare.utils import api_utils class ShopGameInfo(QWidget, Ui_shop_info): slug = "" + # TODO GANZ VIEL def __init__(self): super(ShopGameInfo, self).__init__() self.setupUi(self) @@ -20,16 +23,32 @@ class ShopGameInfo(QWidget, Ui_shop_info): self.manager = QNetworkAccessManager() def update_game(self, slug: str): - locale = QLocale.system().name().split("_")[0] - game = api_utils.get_product(slug, locale) self.slug = slug - self.title.setText(game[0]["productName"]) - self.image.setPixmap( - QPixmap(os.path.expanduser(f"~/.cache/rare/cache/{game[0]['productName']}.png")).scaled(180, - int(180 * 9 / 16), - transformMode=Qt.SmoothTransformation)) + locale = QLocale.system().name().split("_")[0] + url = f"https://store-content.ak.epicgames.com/api/{locale}/content/products/{slug}" + # game = api_utils.get_product(slug, locale) + self.request = self.manager.get(QNetworkRequest(QUrl(url))) + self.request.readyRead.connect(self.data_received) + self.request.finished.connect(self.request.deleteLater if self.request else None) - self.dev.setText(game[0]["data"]["meta"]["developer"][0]) + def data_received(self): + logging.info(f"Data of game {self.slug} received") + if self.request: + if self.request.error() == QNetworkReply.NoError: + try: + game = json.loads(self.request.readAll().data().decode())[0] + except JSONDecodeError: + return + else: + return + else: + return + self.title.setText(game["productName"]) + self.image.setPixmap( + QPixmap(os.path.expanduser(f"~/.cache/rare/cache/{game['productName']}.png")).scaled(180, + int(180 * 9 / 16), + transformMode=Qt.SmoothTransformation)) + self.dev.setText(game["data"]["meta"]["developer"][0]) def button_clicked(self): webbrowser.open("https://www.epicgames.com/store/de/p/" + self.slug) diff --git a/rare/components/tabs/shop/shop_widget.py b/rare/components/tabs/shop/shop_widget.py index efc0ce18..06ad233b 100644 --- a/rare/components/tabs/shop/shop_widget.py +++ b/rare/components/tabs/shop/shop_widget.py @@ -6,7 +6,7 @@ from json import JSONDecodeError import requests from PyQt5 import QtGui -from PyQt5.QtCore import Qt, pyqtSignal, QUrl, QByteArray, QJsonDocument, QJsonParseError, QObjectCleanupHandler, \ +from PyQt5.QtCore import Qt, pyqtSignal, QUrl, QByteArray, QJsonDocument, QJsonParseError, \ QStringListModel from PyQt5.QtGui import QPixmap from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply