2021-06-04 10:01:54 +12:00
|
|
|
import json
|
|
|
|
import logging
|
2021-06-04 09:23:55 +12:00
|
|
|
import os
|
|
|
|
import webbrowser
|
2021-06-04 10:01:54 +12:00
|
|
|
from json import JSONDecodeError
|
2021-06-04 09:23:55 +12:00
|
|
|
|
2021-06-04 10:01:54 +12:00
|
|
|
from PyQt5.QtCore import QLocale, Qt, QUrl
|
2021-06-04 09:23:55 +12:00
|
|
|
from PyQt5.QtGui import QPixmap
|
2021-06-04 10:01:54 +12:00
|
|
|
from PyQt5.QtNetwork import QNetworkAccessManager, QNetworkRequest, QNetworkReply
|
2021-06-04 09:23:55 +12:00
|
|
|
from PyQt5.QtWidgets import QWidget
|
|
|
|
|
|
|
|
from rare.ui.components.tabs.store.shop_game_info import Ui_shop_info
|
|
|
|
|
|
|
|
|
|
|
|
class ShopGameInfo(QWidget, Ui_shop_info):
|
|
|
|
slug = ""
|
|
|
|
|
2021-06-04 10:01:54 +12:00
|
|
|
# TODO GANZ VIEL
|
2021-06-04 09:23:55 +12:00
|
|
|
def __init__(self):
|
|
|
|
super(ShopGameInfo, self).__init__()
|
|
|
|
self.setupUi(self)
|
|
|
|
self.pushButton.clicked.connect(self.button_clicked)
|
|
|
|
self.manager = QNetworkAccessManager()
|
|
|
|
|
|
|
|
def update_game(self, slug: str):
|
|
|
|
self.slug = slug
|
2021-06-04 10:01:54 +12:00
|
|
|
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)
|
|
|
|
|
|
|
|
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"])
|
2021-06-04 09:23:55 +12:00
|
|
|
self.image.setPixmap(
|
2021-06-04 10:01:54 +12:00
|
|
|
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])
|
2021-06-04 09:23:55 +12:00
|
|
|
|
|
|
|
def button_clicked(self):
|
|
|
|
webbrowser.open("https://www.epicgames.com/store/de/p/" + self.slug)
|