diff --git a/ra.py b/ra.py new file mode 100644 index 0000000..30ff68a --- /dev/null +++ b/ra.py @@ -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) diff --git a/racredentials.py b/racredentials.py new file mode 100644 index 0000000..5db61a4 --- /dev/null +++ b/racredentials.py @@ -0,0 +1,2 @@ +user = "REPLACE THIS" +key = "REPLACE THIS"