Stub RetroAchievements integration
This commit is contained in:
parent
fe6ebce3a9
commit
2ab75b0238
65
ra.py
Normal file
65
ra.py
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
import json
|
||||||
|
import requests
|
||||||
|
from racredentials import user, key
|
||||||
|
|
||||||
|
BASE_URL = "https://retroachievements.org/API/"
|
||||||
|
WEB_URL = "https://retroachievements.org"
|
||||||
|
|
||||||
|
|
||||||
|
class Award:
|
||||||
|
def __init__(self, awarddict):
|
||||||
|
self.name = awarddict["Title"]
|
||||||
|
self.type = awarddict["AwardType"]
|
||||||
|
self.date = awarddict["AwardedAt"]
|
||||||
|
self.iconurl = WEB_URL + awarddict["ImageIcon"]
|
||||||
|
self.gameurl = WEB_URL + "/game/" + str(awarddict["AwardData"])
|
||||||
|
if awarddict["ConsoleName"] == "Events":
|
||||||
|
self.name = "~Event~ " + self.name
|
||||||
|
self.url = self.genurl()
|
||||||
|
|
||||||
|
def genurl(self):
|
||||||
|
# lower the string
|
||||||
|
name = self.name.lower()
|
||||||
|
# Only keep letters, and replace spaces
|
||||||
|
stripped = ""
|
||||||
|
for c in name.strip():
|
||||||
|
if ord("a") <= ord(c) <= ord("z") or ord("0") <= ord(c) <= ord("9"):
|
||||||
|
stripped += c
|
||||||
|
elif c == " ":
|
||||||
|
stripped += "-"
|
||||||
|
# delete multiple following dashes
|
||||||
|
splitted = stripped.split("-")
|
||||||
|
while splitted.count("") > 0:
|
||||||
|
splitted.remove("")
|
||||||
|
stripped = "-".join(splitted)
|
||||||
|
# Concatenate date
|
||||||
|
date = self.date.split("T")[0]
|
||||||
|
return f"{date}-{stripped}.gmi"
|
||||||
|
|
||||||
|
|
||||||
|
def request(path):
|
||||||
|
return json.loads(requests.get(BASE_URL + path).text)
|
||||||
|
|
||||||
|
|
||||||
|
def getAwards(user, key):
|
||||||
|
response = request(f"API_GetUserAwards.php?z={user}&y={key}&u={user}")[
|
||||||
|
"VisibleUserAwards"
|
||||||
|
]
|
||||||
|
indexed = {}
|
||||||
|
# Returns only the mastered award
|
||||||
|
# in case there's both a completed and master award
|
||||||
|
for award in [Award(x) for x in response]:
|
||||||
|
if award.name in indexed.keys():
|
||||||
|
if indexed[award.name].type == "Game Beaten":
|
||||||
|
indexed[award.name] = award
|
||||||
|
else:
|
||||||
|
indexed[award.name] = award
|
||||||
|
sorted = list(indexed.values())
|
||||||
|
sorted.sort(key=lambda x: x.date)
|
||||||
|
return sorted
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
awards = getAwards(user, key)
|
||||||
|
for award in awards:
|
||||||
|
print(award.name, award.url)
|
2
racredentials.py
Normal file
2
racredentials.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
user = "REPLACE THIS"
|
||||||
|
key = "REPLACE THIS"
|
Loading…
Reference in New Issue
Block a user