Add support for bundles
This commit is contained in:
parent
44b7a0a37f
commit
6355dd47c1
2 changed files with 16 additions and 7 deletions
|
@ -34,10 +34,14 @@ class ShopGameInfo(QWidget, Ui_shop_info):
|
||||||
self.dev.setText(self.tr("Loading"))
|
self.dev.setText(self.tr("Loading"))
|
||||||
self.image.setPixmap(QPixmap())
|
self.image.setPixmap(QPixmap())
|
||||||
self.data = data
|
self.data = data
|
||||||
|
is_bundle = False
|
||||||
|
for i in data["categories"]:
|
||||||
|
if "bundles" in i.get("path", ""):
|
||||||
|
is_bundle = True
|
||||||
|
|
||||||
# init API request
|
# init API request
|
||||||
locale = QLocale.system().name().split("_")[0]
|
locale = QLocale.system().name().split("_")[0]
|
||||||
url = f"https://store-content.ak.epicgames.com/api/{locale}/content/products/{slug}"
|
url = f"https://store-content.ak.epicgames.com/api/{locale}/content/{'products' if not is_bundle else 'bundles'}/{slug}"
|
||||||
# game = api_utils.get_product(slug, locale)
|
# game = api_utils.get_product(slug, locale)
|
||||||
self.request = self.manager.get(QNetworkRequest(QUrl(url)))
|
self.request = self.manager.get(QNetworkRequest(QUrl(url)))
|
||||||
self.request.finished.connect(self.data_received)
|
self.request.finished.connect(self.data_received)
|
||||||
|
@ -55,6 +59,7 @@ class ShopGameInfo(QWidget, Ui_shop_info):
|
||||||
logging.info(self.slug, error.errorString())
|
logging.info(self.slug, error.errorString())
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
|
logger.error("Data failed")
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
|
@ -88,3 +93,4 @@ class ShopGameInfo(QWidget, Ui_shop_info):
|
||||||
|
|
||||||
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)
|
||||||
|
|
||||||
|
|
|
@ -46,6 +46,7 @@ class ShopGame:
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def from_json(cls, api_data: dict, search_data: dict):
|
def from_json(cls, api_data: dict, search_data: dict):
|
||||||
|
print(api_data)
|
||||||
if isinstance(api_data, list):
|
if isinstance(api_data, list):
|
||||||
for product in api_data:
|
for product in api_data:
|
||||||
if product["_title"] == "home":
|
if product["_title"] == "home":
|
||||||
|
@ -53,22 +54,24 @@ class ShopGame:
|
||||||
break
|
break
|
||||||
|
|
||||||
tmp = cls()
|
tmp = cls()
|
||||||
tmp.title = api_data.get("productName", "undefined")
|
if "pages" in api_data.keys():
|
||||||
|
api_data = api_data["pages"][0]
|
||||||
|
tmp.title = api_data.get("productName", api_data.get("_title", "fail"))
|
||||||
tmp.image_urls = _ImageUrlModel.from_json(search_data["keyImages"])
|
tmp.image_urls = _ImageUrlModel.from_json(search_data["keyImages"])
|
||||||
links = api_data["pages"][0]["data"]["socialLinks"]
|
links = api_data["data"]["socialLinks"]
|
||||||
tmp.links = []
|
tmp.links = []
|
||||||
for item in links:
|
for item in links:
|
||||||
if item.startswith("link"):
|
if item.startswith("link"):
|
||||||
tmp.links.append(tuple((item.replace("link", ""), links[item])))
|
tmp.links.append(tuple((item.replace("link", ""), links[item])))
|
||||||
tmp.available_voice_langs = api_data["pages"][0]["data"]["requirements"]["languages"]
|
tmp.available_voice_langs = api_data["data"]["requirements"]["languages"]
|
||||||
tmp.reqs = []
|
tmp.reqs = []
|
||||||
for i, system in enumerate(api_data["pages"][0]["data"]["requirements"]["systems"]):
|
for i, system in enumerate(api_data["data"]["requirements"]["systems"]):
|
||||||
tmp.reqs.append({"name": system["systemType"], "value": []})
|
tmp.reqs.append({"name": system["systemType"], "value": []})
|
||||||
for req in system["details"]:
|
for req in system["details"]:
|
||||||
tmp.reqs[i]["value"].append(tuple((req["minimum"], req["recommended"])))
|
tmp.reqs[i]["value"].append(tuple((req["minimum"], req["recommended"])))
|
||||||
|
|
||||||
tmp.publisher = api_data["pages"][0]["data"]["meta"].get("publisher", "undefined")
|
tmp.publisher = api_data["data"]["meta"].get("publisher", "undefined")
|
||||||
tmp.developer = api_data["pages"][0]["data"]["meta"].get("developer", "undefined")
|
tmp.developer = api_data["data"]["meta"].get("developer", "undefined")
|
||||||
tmp.price = search_data['price']['totalPrice']['fmtPrice']['originalPrice']
|
tmp.price = search_data['price']['totalPrice']['fmtPrice']['originalPrice']
|
||||||
tmp.discount_price = search_data['price']['totalPrice']['fmtPrice']['discountPrice']
|
tmp.discount_price = search_data['price']['totalPrice']['fmtPrice']['discountPrice']
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue