Shop info does not work, but the app does not crash
This commit is contained in:
parent
78474d18c3
commit
654788410a
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue