def save_gosu_player(region: str): lol_gosu_names = [] try: challenger_league = cass.get_challenger_league(queue=queueType, region=region) challenger_entries = challenger_league.entries for challenger in challenger_entries: lol_gosu_names.append(challenger.summoner.account_id) grandmaster_league = cass.get_grandmaster_league(queue=queueType, region=region) grandmaster_entries = grandmaster_league.entries for grandmaster in grandmaster_entries: lol_gosu_names.append(grandmaster.summoner.account_id) master_league = cass.get_master_league(queue=queueType, region=region) master_entries = master_league.entries for master in master_entries: lol_gosu_names.append(master.summoner.account_id) except: print("Server error raise. Wait for 1 second.") time.sleep(1) pass return lol_gosu_names
def print_leagues(summoner_name: str, region: str): summoner = Summoner(name=summoner_name, region=region) print("Name:", summoner.name) print("ID:", summoner.id) # leagues = cass.get_leagues(summoner) leagues = summoner.leagues for league in leagues: print(league.name) print() print(leagues.fives.name) for entry in leagues.fives: print(entry.summoner.name, entry.league_points) print(entry.tier) print(entry.division) print(entry.region) print(entry.queue) print(entry.name) print() print() print("Challenger:") challenger = cass.get_challenger_league(queue=Queue.ranked_solo) print(challenger.name)
def test_readme(): summoner = cass.get_summoner(name="Kalturi", region="NA") "{name} is a level {level} summoner on the {region} server.".format(name=summoner.name, level=summoner.level, region=summoner.region) champions = cass.get_champions(region="NA") random_champion = random.choice(champions) "He enjoys playing champions such as {name}.".format(name=random_champion.name) challenger_league = cass.get_challenger_league(queue=cass.Queue.ranked_solo_fives, region="NA") best_na = challenger_league[0].summoner "He's not as good as {name} at League, but probably a better python programmer!".format(name=best_na.name)
def test_leagues(): summoner_name = "Spartan324" region = "NA" summoner = Summoner(name=summoner_name, region=region) "Name:", summoner.name "ID:", summoner.id # positions = cass.get_league_positions(summoner, region=region) positions = summoner.league_positions if positions.fives.promos is not None: # If the summoner is in their promos, print some info "Promos progress:", positions.fives.promos.progress "Promos wins", positions.fives.promos.wins "Promos losses:", positions.fives.promos.losses "Games not yet played in promos:", positions.fives.promos.not_played "Number of wins required to win promos:", positions.fives.promos.wins_required else: "The summoner is not in their promos." "Name and id of leagues this summoner is in:" for league in positions: league.name league.league_id leagues = cass.get_leagues(summoner) leagues = summoner.leagues "Name of leagues this summoner is in (called from a different endpoint):" for league in leagues: #league.name league.id f"Listing all summoners in {leagues.fives.id}" for entry in leagues.fives: entry.summoner.name, entry.league_points, leagues.fives.tier, entry.division "Challenger League name and id:" challenger = cass.get_challenger_league(queue=Queue.ranked_solo_fives, region=region) # challenger.name challenger.id "Grandmaster League name and id:" grandmaster = cass.get_grandmaster_league(queue=Queue.ranked_solo_fives, region=region) # grandmaster.name grandmaster.id "Master League name and id:" master = cass.get_master_league(queue=Queue.ranked_solo_fives, region=region) # master.name master.id
def print_leagues(summoner_name: str, region: str): summoner = Summoner(name=summoner_name, region=region) print("Name:", summoner.name) print("ID:", summoner.id) # positions = cass.get_league_positions(summoner, region=region) positions = summoner.league_positions if positions.fives.promos is not None: # If the summoner is in their promos, print some info print("Promos progress:", positions.fives.promos.progress) print("Promos wins", positions.fives.promos.wins) print("Promos losses:", positions.fives.promos.losses) print("Games not yet played in promos:", positions.fives.promos.not_played) print("Number of wins required to win promos:", positions.fives.promos.wins_required) else: print("The summoner is not in their promos.") print("Name of leagues this summoner is in:") for league in positions: print(league.name) print() # leagues = cass.get_leagues(summoner) leagues = summoner.leagues print( "Name of leagues this summoner is in (called from a different endpoint):" ) for league in leagues: print(league.name) print() print(f"Listing all summoners in {leagues.fives.name}") for entry in leagues.fives: print(entry.summoner.name, entry.league_points, entry.tier, entry.division) print() print("Challenger League name:") challenger = cass.get_challenger_league(queue=Queue.ranked_solo, region=region) print(challenger.name)
def get_challenger_data(): data = cass.get_challenger_league( cass.Queue.ranked_solo_fives) #get the challenger data summonerNames = [] role_dict = [] champ_dict = [] for item in data.entries: if data.entries.index(item) % 10 == 0: #print every 10 entries to update user print('\nCURRENT LADDER ENTRY= ', data.entries.index(item)) elif data.entries.index(item) > 5: pass else: summonerNames.append(item.summoner.name) summoner = item.summoner match_history = summoner.match_history( queues={cass.Queue.ranked_solo_fives}, begin_index=0, end_index=4) roles = [] champs = [] for match in match_history: if match.is_remake: pass elif match.duration < timedelta(minutes=15, seconds=30): # skip ff at 15 pass else: #now we want the role [top, mid, jg, adc, support] and champion #keep track of each one per match to find most common role, champ = analyzeMatch(match, summoner) roles.append(role) champs.append(champ) main_role = Counter(roles).most_common(1)[0] main_champ = Counter(champs).most_common(1)[0] role_dict.append(main_role) champ_dict.append(main_champ) return summonerNames, role_dict, champ_dict
def test_leagues(): summoner_name = "Kalturi" region = "NA" summoner = Summoner(name=summoner_name, region=region) "Name:", summoner.name "ID:", summoner.id # entries = cass.get_league_entries(summoner, region=region) entries = summoner.league_entries if entries.fives.promos is not None: # If the summoner is in their promos, print some info "Promos progress:", entries.fives.promos.progress "Promos wins", entries.fives.promos.wins "Promos losses:", entries.fives.promos.losses "Games not yet played in promos:", entries.fives.promos.not_played "Number of wins required to win promos:", entries.fives.promos.wins_required else: "The summoner is not in their promos." "Name and id of fives leagues this summoner is in:" for entry in entries.fives: entry.league.name entry.league.id f"Listing all summoners in {entry.league.id}" for other_entry in entry.league.entries: other_entry.summoner.name, other_entry.league_points, entry.league.tier, other_entry.division "Challenger League name and id:" challenger = cass.get_challenger_league(queue=Queue.ranked_solo_fives, region=region) # challenger.name challenger.id "Grandmaster League name and id:" grandmaster = cass.get_grandmaster_league(queue=Queue.ranked_solo_fives, region=region) # grandmaster.name grandmaster.id "Master League name and id:" master = cass.get_master_league(queue=Queue.ranked_solo_fives, region=region) # master.name master.id
import cassiopeia as cass from cassiopeia import Summoner, Match from cassiopeia.data import Season, Queue from collections import Counter def takeLeaguePoints(elem): return elem.league_points api_key = "RGAPI-b9446d2c-aa53-40f6-9d85-2ab9c884f5d9" cass.set_riot_api_key(api_key) region = "EUW" challLeague = cass.get_challenger_league(queue=Queue.ranked_solo_fives, region=region) challLeague.entries.sort(key=takeLeaguePoints, reverse=True) for position, entry in enumerate(challLeague.entries): if (position == 0): bestEntry = entry print(entry.league_points, entry.summoner.name) print("Best player:", bestEntry.summoner.name, " with ", bestEntry.league_points, " lp") summoner = bestEntry.summoner match_history = summoner.match_history match_history(seasons={Season.season_9}, queues={Queue.ranked_solo_fives}) print("Length of match history:", len(match_history)) champion_id_to_name_mapping = { champion.id: champion.name for champion in cass.get_champions(region=region) }
return True def update_matches(player, region, min_time=7200, max_matches=100): try: match_history = cass.MatchHistory( summoner=cass.get_summoner(name=player), queues={cass.Queue.ranked_solo_fives})[:max_matches] return match_history except: return [] x = 0 players_list = [ cass.get_challenger_league(queue=cass.Queue.ranked_solo_fives), cass.get_master_league(queue=cass.Queue.ranked_solo_fives) ] for players in players_list: cps = [p.summoner.name for p in players] n = -1 matches = get_matches(region) while n < len(cps) - 1: n += 1 p = cps[n] print("summoner:", p) now_time = int(datetime.datetime.now().timestamp()) if now_time - get_last_game(p) < MIN_TIME: print("too soon:", now_time - get_last_game(p), p) continue match_history = update_matches(p, region)
def index(request): cass.set_riot_api_key("RGAPI-daa909e6-146f-4c9d-a03a-2ff08bac37be") cass.set_default_region("NA") na_challenger_players = cass.get_challenger_league(queue='RANKED_SOLO_5x5') # euw_challenger_players = cass.get_challenger_league(queue='RANKED_SOLO_5x5', region='EUW') # eune_challenger_players = cass.get_challenger_league(queue='RANKED_SOLO_5x5', region='EUNE') # kr_challenger_players = cass.get_challenger_league(queue='RANKED_SOLO_5x5', region='KR') # jp_challenger_players = cass.get_challenger_league(queue='RANKED_SOLO_5x5', region='JP') # br_challenger_players = cass.get_challenger_league(queue='RANKED_SOLO_5x5', region='BR') # ru_challenger_players = cass.get_challenger_league(queue='RANKED_SOLO_5x5', region='RU') # lan_challenger_players = cass.get_challenger_league(queue='RANKED_SOLO_5x5', region='LAN') # las_challenger_players = cass.get_challenger_league(queue='RANKED_SOLO_5x5', region='LAS') # oce_challenger_players = cass.get_challenger_league(queue='RANKED_SOLO_5x5', region='OCE') # tr_challenger_players = cass.get_challenger_league(queue='RANKED_SOLO_5x5', region='TR') for p in na_challenger_players: obj, created = NA_Pros.objects.update_or_create( summoner_ID=p.summoner.id, defaults={'summoner_name': p.summoner.name}) if created: print('Created entry: ' + obj.summoner_name) else: print('Found entry: ' + obj.summoner_name) # for p in euw_challenger_players: # obj, created = EUW_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in eune_challenger_players: # obj, created = EUNE_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in kr_challenger_players: # obj, created = KR_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in jp_challenger_players: # obj, created = JP_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in br_challenger_players: # obj, created = BR_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in ru_challenger_players: # obj, created = RU_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in lan_challenger_players: # obj, created = LAN_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in las_challenger_players: # obj, created = LAS_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in oce_challenger_players: # obj, created = OCE_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in tr_challenger_players: # obj, created = TR_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) na_master_players = cass.get_master_league(queue='RANKED_SOLO_5x5') # euw_master_players = cass.get_master_league(queue='RANKED_SOLO_5x5', region='EUW') # eune_master_players = cass.get_master_league(queue='RANKED_SOLO_5x5', region='EUNE') # kr_master_players = cass.get_master_league(queue='RANKED_SOLO_5x5', region='KR') # jp_master_players = cass.get_master_league(queue='RANKED_SOLO_5x5', region='JP') # br_master_players = cass.get_master_league(queue='RANKED_SOLO_5x5', region='BR') # ru_master_players = cass.get_master_league(queue='RANKED_SOLO_5x5', region='RU') # lan_master_players = cass.get_master_league(queue='RANKED_SOLO_5x5', region='LAN') # las_master_players = cass.get_master_league(queue='RANKED_SOLO_5x5', region='LAS') # oce_master_players = cass.get_master_league(queue='RANKED_SOLO_5x5', region='OCE') # tr_master_players = cass.get_master_league(queue='RANKED_SOLO_5x5', region='TR') for p in na_master_players: obj, created = NA_Pros.objects.update_or_create( summoner_ID=p.summoner.id, defaults={'summoner_name': p.summoner.name}) if created: print('Created entry: ' + obj.summoner_name) else: print('Found entry: ' + obj.summoner_name) # for p in euw_master_players: # obj, created = EUW_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in eune_master_players: # obj, created = EUNE_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in kr_master_players: # obj, created = KR_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in jp_master_players: # obj, created = JP_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in br_master_players: # obj, created = BR_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in ru_master_players: # obj, created = RU_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in lan_master_players: # obj, created = LAN_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in las_master_players: # obj, created = LAS_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in oce_master_players: # obj, created = OCE_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # for p in tr_master_players: # obj, created = TR_Pros.objects.update_or_create(summoner_ID=p.summoner.id, defaults={'summoner_name':p.summoner.name}) # if created: # print('Created entry: ' + obj.summoner_name) # else: # print('Found entry: ' + obj.summoner_name) # return render(request, 'getpros/header.html')
async def on_message(message): # Stops an infinite loop of the bot talking to itself. if message.author == client.user: return # Returns info about a match somebody is playing. It will return one line for each player each containing a {name} {rank} is playing {champion} if message.content.startswith('$match'): IGN = extractNames(message) summoner = Summoner(name=IGN, region="NA") emptyStr = "{name} is not in a match right now!".format(name=IGN) if summoner.current_match is not None: participant = summoner.current_match.participants c = 0 emptyStr = "{type} {time}\n".format( type=summoner.current_match.queue.name, time=summoner.current_match.duration) for IGN in participant: try: rank = str( IGN.summoner.league_entries[0].tier) + ' ' + str( IGN.summoner.league_entries[0].division) except IndexError: rank = IGN.summoner.level emptyStr += "{name} ({rank}) is playing {champion}\n".format( name=IGN.summoner.name, champion=IGN.champion.name, rank=rank) c += 1 if c == 5: emptyStr += "\n" await message.channel.send(emptyStr) # League of Legends has a ranking system where a Challenger is of the highest level. Only 300 players or so are allowed at a time. # Not only are 300 players allowed, they must constantly fight for their place and play a minimum of one game a week. # If somebody surpasses them in League Points (LP) which are gained by winning, they are a higher rank of Challenger. # This command, given somebody's in game name and if they are in Challenger, will return their current place in the leaderboard. if message.content.startswith('$challenger'): name = extractNames(message) challenger = cass.get_challenger_league( queue=cass.Queue.ranked_solo_fives) players = challenger.entries i = 1 playerDict = {} for IGN in players: playerDict[IGN.summoner.name] = IGN.league_points sorteds = sorted(playerDict.items(), key=lambda x: x[1], reverse=True) for IGN in sorteds: playerDict[IGN[0]] = i #playerDict["IGN"] -> rank i += 1 with open('challengers.txt', 'w') as outfile: json.dump(playerDict, outfile) returned = "{player} is rank {rank} in Challenger queue!".format( player=name, rank=playerDict[name]) await message.channel.send(returned) # This command returns data from the Riot DataDragon API that will show a quick breakdown for a requested champion. # The command is utilized as $champion "Ashe" and will return you her Passive, and her four abilities broken down along with a cooldown. # This command was created mainly because I keep Discord up on my second monitor and checking my opposing player's cooldowns is now easier. # This command is also the first command that takes advantage of self-updating. if message.content.startswith('$champion'): mispellings = { "Wukong": "MonkeyKing", "J4": "JarvanIV", "Jarvan IV": "JarvanIV", "Kai'sa": "Kaisa", "Cho'Gath": "Chogath", "j4": "JarvanIV", "JarvanIv": "JarvanIV", "Kai'Sa": "Kaisa", "KhaZix": "Khazix" } name = extractNames(message).title().replace(" ", "") if mispellings.get(name) is not None: name = mispellings[name] name = re.sub(r'\W+', '', name) print(name) champion = Champion.Champion(name) if (not path.exists("champions/{champion}.json".format( champion=name))) or champion.version() != version["version"]: champion.update(version["version"]) abilities = champion.abilities() P = "Passive: {name} - {description}\n".format( name=abilities["PASSIVE"].name, description=abilities["PASSIVE"].description) Q = "Q: {name} - {description} | Cooldown: {cooldownBurn}\n".format( name=abilities["Q"].name, description=abilities["Q"].description, cooldownBurn=abilities["Q"].cooldown) W = "W: {name} - {description} | Cooldown: {cooldownBurn}\n".format( name=abilities["W"].name, description=abilities["W"].description, cooldownBurn=abilities["W"].cooldown) E = "E: {name} - {description} | Cooldown: {cooldownBurn}\n".format( name=abilities["E"].name, description=abilities["E"].description, cooldownBurn=abilities["E"].cooldown) R = "R: {name} - {description} | Cooldown: {cooldownBurn}\n".format( name=abilities["R"].name, description=abilities["R"].description, cooldownBurn=abilities["R"].cooldown) print("Returned champion data for {champ}".format(champ=name)) await message.channel.send(P + Q + W + E + R)