import requests, psutil, sys, requests.auth, urllib3, time print("tinyrunes starting") port = 0 token = 0 page = 0 userid = 0 champ = 0 urllib3.disable_warnings() def get_port_and_token(): global port,token for proc in psutil.process_iter(['name', 'cmdline']): if "LeagueClientUx" in proc.info['name']: for c in proc.cmdline(): str = c.split("=")[0][2:] if (str == "remoting-auth-token"): token = c.split("=")[1] if (str == "app-port"): port = c.split("=")[1] if port != 0 and token != 0: print(f"found league! port {port}, token {token}") else: print("could not find league :( is the game running, or are you on anything-but-macos?") sys.exit() def setup_tinyrunes_page(): global page r = local_req("get", "lol-perks/v1/pages") chk = False for rune in r: if rune["name"] == "tinyrunes": chk = True page = rune["id"] if (chk == False): print("trying to make a tinyrunes page...") success = make_tinyrunes(8200, [8214, 8009, 8017, 8210, 8226, 8237, 5005, 5008, 5002], 8000) if (success): print("made tinyrunes page!") else: print("tinyrunes rune page not found, and we couldent make one. please make a rune page called \"tinyrunes\"! (are you below level 10?)") sys.exit() else: print("rune page found!") def setup_user_id(): global userid r = local_req("get", "lol-summoner/v1/current-summoner") if ("summonerId" in r and "displayName" in r): userid = r["summonerId"] print(f"welcome, {r['displayName']}!") else: print("couldent find summonerId... are you logged in?") sys.exit() def make_tinyrunes(primary, selected, sub): global page rune = { "name": "tinyrunes", "primaryStyleId": primary, "selectedPerkIds": selected, "subStyleId": sub } r = local_req("post", "lol-perks/v1/pages", rune) if ("id" in r and r["isValid"] == True): page = r["id"] return True else: return False def delete_tinyrunes(): local_req("delete", f"lol-perks/v1/pages/{page}") pass def wait_for_chara(): global champ done = False state = 0 # 0 = waiting for champ select, # 1 = waiting for champ pick # 2 = waiting for lock in, print("waiting for you to enter champion select...!") while (not done): champselect = local_req("get", "lol-champ-select/v1/session") if (state == 0): if ("errorCode" in champselect): #wait to enter champ select... pass elif ("myTeam" in champselect): state = 1 print("waiting for you to pick a champion...!") else: print("?????? what is going on") if (state == 1): if ("errorCode" in champselect): state = 0 print("oh! i guess you got kicked out of champ select... back to the start~") else: for member in champselect["myTeam"]: if (member["summonerId"] == userid and member["championId"] != 0): print("okay! i'll wait for everyone to lock in, and then go grab your runes~") state = 2 if (state == 2): if ("errorCode" in champselect): state = 0 print("oh! i guess you got kicked out of champ select... back to the start~") elif (champselect["timer"]["phase"] == "FINALIZATION"): print("everyones locked in, i'll go fetch your runes!") for member in champselect["myTeam"]: if (member["summonerId"] == userid): champ = member["championId"] return time.sleep(1) def gettem_runes(): print("fetching the runes...") roons = requests.get(f"https://axe.lolalytics.com/mega/?ep=rune&p=d&v=1&cid={champ}&lane=default").json() roon = roons["summary"]["runes"]["pick"]["set"] pag = roons["summary"]["runes"]["pick"]["page"] pri = 8000 + 100 * pag["pri"] sub = 8000 + 100 * pag["sec"] sel = [*roon["pri"], *roon["sec"], *roon["mod"]] print("setting the runes...") delete_tinyrunes() make_tinyrunes(pri, sel, sub) print("all ready! glhf <3") def local_req(type, url, data = ""): if type == "post": r = requests.post(f"https://127.0.0.1:{port}/{url}", auth=requests.auth.HTTPBasicAuth("riot", token), verify=False, json=data) elif type == "get": r = requests.get(f"https://127.0.0.1:{port}/{url}", auth=requests.auth.HTTPBasicAuth("riot", token), verify=False) elif type == "delete": r = requests.delete(f"https://127.0.0.1:{port}/{url}", auth=requests.auth.HTTPBasicAuth("riot", token), verify=False) ret = "bruh" try: ret = r.json() except: ret = r.text() finally: return ret get_port_and_token() setup_user_id() setup_tinyrunes_page() wait_for_chara() gettem_runes()