1
0
Fork 0
mirror of synced 2024-06-28 11:11:15 +12:00

Shop info does not work, but the app does not crash

This commit is contained in:
Dummerle 2021-06-04 00:01:54 +02:00
parent 78474d18c3
commit 654788410a
2 changed files with 31 additions and 12 deletions

View file

@ -1,18 +1,21 @@
import json
import logging
import os import os
import webbrowser 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.QtGui import QPixmap
from PyQt5.QtNetwork import QNetworkAccessManager from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
from PyQt5.QtWidgets import QWidget from PyQt5.QtWidgets import QWidget
from rare.ui.components.tabs.store.shop_game_info import Ui_shop_info 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): class ShopGameInfo(QWidget, Ui_shop_info):
slug = "" slug = ""
# TODO GANZ VIEL
def __init__(self): def __init__(self):
super(ShopGameInfo, self).__init__() super(ShopGameInfo, self).__init__()
self.setupUi(self) self.setupUi(self)
@ -20,16 +23,32 @@ class ShopGameInfo(QWidget, Ui_shop_info):
self.manager = QNetworkAccessManager() self.manager = QNetworkAccessManager()
def update_game(self, slug: str): def update_game(self, slug: str):
locale = QLocale.system().name().split("_")[0]
game = api_utils.get_product(slug, locale)
self.slug = slug self.slug = slug
self.title.setText(game[0]["productName"]) locale = QLocale.system().name().split("_")[0]
self.image.setPixmap( url = f"https://store-content.ak.epicgames.com/api/{locale}/content/products/{slug}"
QPixmap(os.path.expanduser(f"~/.cache/rare/cache/{game[0]['productName']}.png")).scaled(180, # game = api_utils.get_product(slug, locale)
int(180 * 9 / 16), self.request = self.manager.get(QNetworkRequest(QUrl(url)))
transformMode=Qt.SmoothTransformation)) 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): def button_clicked(self):
webbrowser.open("https://www.epicgames.com/store/de/p/" + self.slug) webbrowser.open("https://www.epicgames.com/store/de/p/" + self.slug)

View file

@ -6,7 +6,7 @@ from json import JSONDecodeError
import requests import requests
from PyQt5 import QtGui 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 QStringListModel
from PyQt5.QtGui import QPixmap from PyQt5.QtGui import QPixmap
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply