def getAllChampionWinRates(minGames=1): """Returns a sorted list of champions, wins, losses, and winrate. """ winrates = [] for championId in legendaryapi.getAllChampionIds(): championName = legendaryapi.getChampionNameFromId(championId) gameResults = mongo_dao.getGameResultsIncludingChampion(championId) numGames = len(gameResults) if numGames >= minGames: winrateEntry = {} winrateEntry['champion'] = championName winrateEntry['won'] = 0 winrateEntry['lost'] = 0 for gameResult in gameResults: if _getStatisticByNameFromGameResult(gameResult, WIN): winrateEntry['won'] += 1 else : winrateEntry['lost'] += 1 winrateEntry['winrate'] = 1.0 * winrateEntry['won'] / numGames winrates.append(winrateEntry) return sorted(winrates, key=lambda winrate: winrate['winrate'], reverse=True)
def getAllChampionContestRates(minGames=1): contestRates = [] totalGames = getTotalGames() for championId in legendaryapi.getAllChampionIds(): championName = legendaryapi.getChampionNameFromId(championId) games = mongo_dao.getAllGamesIncludingChampion(championId) numGames = len(games) if numGames >= minGames: contestRateEntry = {} contestRateEntry['champion'] = championName contestRateEntry['picked'] = 0 contestRateEntry['banned'] = 0 for game in games: if _isChampionPickedInGame(game, championId): contestRateEntry['picked'] += 1 elif _isChampionBannedInGame(game, championId): contestRateEntry['banned'] += 1 contestRateEntry['contested'] = numGames contestRateEntry['contestRate'] = 1.0 * numGames / totalGames contestRates.append(contestRateEntry) return sorted(contestRates, key=lambda contestRate: contestRate['contestRate'], reverse=True)
def getAllChampionWinRates(minGames=1): """Returns a sorted list of champions, wins, losses, and winrate. """ winrates = [] for championId in legendaryapi.getAllChampionIds(): championName = legendaryapi.getChampionNameFromId(championId) gameResults = mongo_dao.getGameResultsIncludingChampion(championId) numGames = len(gameResults) if numGames >= minGames: winrateEntry = {} winrateEntry['champion'] = championName winrateEntry['won'] = 0 winrateEntry['lost'] = 0 for gameResult in gameResults: if _getStatisticByNameFromGameResult(gameResult, WIN): winrateEntry['won'] += 1 else: winrateEntry['lost'] += 1 winrateEntry['winrate'] = 1.0 * winrateEntry['won'] / numGames winrates.append(winrateEntry) return sorted(winrates, key=lambda winrate: winrate['winrate'], reverse=True)
def getSummonerStatsForGameId(gameId, summonerId, summonerName=None): """ Champion Win? Level KDA CS Jungle creeps killed Gold earned Damage dealt to champions Damage taken Wards placed """ summonerStats = {} if summonerName is None: summonerName = mongo_dao.getSummonerNameFromId( summonerId) # TODO REMOVE THIS API CALL gameResults = mongo_dao.getResultsForGameId(gameId) gameResult = _getResultFromGameResultsBySummonerId(gameResults, summonerId) if gameResult is None: return None statsArray = gameResult['statistics']['array'] summonerStats['Summoner'] = summonerName summonerStats['Game ID'] = gameId summonerStats['Game Date'] = str( _convertUtcDatetimeStringToDatetimeWithTimeZone( gameResult['createDate'], DEFAULT_TIME_ZONE)) summonerStats['Champion'] = legendaryapi.getChampionNameFromId( gameResult['championId']) summonerStats['Won'] = _getStatisticByName(statsArray, WIN) == 1 summonerStats['Level'] = _getStatisticByName(statsArray, LEVEL) summonerStats['Kills'] = _getStatisticByName(statsArray, KILLS) summonerStats['Deaths'] = _getStatisticByName(statsArray, DEATHS) summonerStats['Assists'] = _getStatisticByName(statsArray, ASSISTS) summonerStats['Jungle Monsters Killed'] = _getStatisticByName( statsArray, JUNGLE_MONSTERS_KILLED) summonerStats['Minions Killed'] = _getStatisticByName( statsArray, MINIONS_KILLED) + summonerStats['Jungle Monsters Killed'] summonerStats['Gold Earned'] = _getStatisticByName(statsArray, GOLD_EARNED) summonerStats['Damage Dealt To Champions'] = _getStatisticByName( statsArray, DAMAGE_DEALT_TO_CHAMPIONS) summonerStats['Damage Taken'] = _getStatisticByName( statsArray, DAMAGE_TAKEN) summonerStats['Wards Placed'] = _getStatisticByName( statsArray, WARDS_PLACED) return summonerStats
def getSummonerStatsForGameId(gameId, summonerId, summonerName=None): """ Champion Win? Level KDA CS Jungle creeps killed Gold earned Damage dealt to champions Damage taken Wards placed """ summonerStats = {} if summonerName is None: summonerName = mongo_dao.getSummonerNameFromId(summonerId) # TODO REMOVE THIS API CALL gameResults = mongo_dao.getResultsForGameId(gameId) gameResult = _getResultFromGameResultsBySummonerId(gameResults, summonerId) if gameResult is None: return None statsArray = gameResult['statistics']['array'] summonerStats['Summoner'] = summonerName summonerStats['Game ID'] = gameId summonerStats['Game Date'] = str(_convertUtcDatetimeStringToDatetimeWithTimeZone(gameResult['createDate'], DEFAULT_TIME_ZONE)) summonerStats['Champion'] = legendaryapi.getChampionNameFromId(gameResult['championId']) summonerStats['Won'] = _getStatisticByName(statsArray, WIN) == 1 summonerStats['Level'] = _getStatisticByName(statsArray, LEVEL) summonerStats['Kills'] = _getStatisticByName(statsArray, KILLS) summonerStats['Deaths'] = _getStatisticByName(statsArray, DEATHS) summonerStats['Assists'] = _getStatisticByName(statsArray, ASSISTS) summonerStats['Jungle Monsters Killed'] = _getStatisticByName(statsArray, JUNGLE_MONSTERS_KILLED) summonerStats['Minions Killed'] = _getStatisticByName(statsArray, MINIONS_KILLED) + summonerStats['Jungle Monsters Killed'] summonerStats['Gold Earned'] = _getStatisticByName(statsArray, GOLD_EARNED) summonerStats['Damage Dealt To Champions'] = _getStatisticByName(statsArray, DAMAGE_DEALT_TO_CHAMPIONS) summonerStats['Damage Taken'] = _getStatisticByName(statsArray, DAMAGE_TAKEN) summonerStats['Wards Placed'] = _getStatisticByName(statsArray, WARDS_PLACED) return summonerStats
def getChampionStats(championName): championId = legendaryapi.getChampionIdFromName(championName) stats = {} wins = 0 losses = 0 summonerStats = {} gameResults = mongo_dao.getGameResultsIncludingChampion(championId) for gameResult in gameResults: summonerId = gameResult['userId'] summonerName = mongo_dao.getSummonerNameFromId(summonerId) if _getStatisticByNameFromGameResult(gameResult, WIN) == 1: wins = wins + 1 won = True else: losses = losses + 1 won = False kills =_getStatisticByNameFromGameResult(gameResult, KILLS) deaths = _getStatisticByNameFromGameResult(gameResult, DEATHS) assists = _getStatisticByNameFromGameResult(gameResult, ASSISTS) cs = _getStatisticByNameFromGameResult(gameResult, MINIONS_KILLED) + _getStatisticByNameFromGameResult(gameResult, JUNGLE_MONSTERS_KILLED) jungleCs = _getStatisticByNameFromGameResult(gameResult, JUNGLE_MONSTERS_KILLED) damageDealt = _getStatisticByNameFromGameResult(gameResult, DAMAGE_DEALT_TO_CHAMPIONS) damageTaken = _getStatisticByNameFromGameResult(gameResult, DAMAGE_TAKEN) wardsPlaced = _getStatisticByNameFromGameResult(gameResult, WARDS_PLACED) if summonerName not in summonerStats: summonerStatsEntry = {} summonerStatsEntry['Wins'] = 0 summonerStatsEntry['Losses'] = 0 summonerStatsEntry['Kills'] = [] summonerStatsEntry['Deaths'] = [] summonerStatsEntry['Assists'] = [] summonerStatsEntry['CS'] = [] summonerStatsEntry['Jungle CS'] = [] summonerStatsEntry['Damage Dealt'] = [] summonerStatsEntry['Damage Taken'] = [] summonerStatsEntry['Wards Placed'] = [] summonerStats[summonerName] = summonerStatsEntry summonerStatsEntry = summonerStats[summonerName] if won: summonerStatsEntry['Wins'] = summonerStatsEntry['Wins'] + 1 else: summonerStatsEntry['Losses'] = summonerStatsEntry['Losses'] + 1 summonerStatsEntry['Kills'].append(kills) summonerStatsEntry['Deaths'].append(deaths) summonerStatsEntry['Assists'].append(assists) summonerStatsEntry['CS'].append(cs) summonerStatsEntry['Jungle CS'].append(jungleCs) summonerStatsEntry['Damage Dealt'].append(damageDealt) summonerStatsEntry['Damage Taken'].append(damageTaken) summonerStatsEntry['Wards Placed'].append(wardsPlaced) summonerStatsList = [] for summonerName, summonerStatsEntry in summonerStats.iteritems(): summonerStatsEntry['Summoner'] = summonerName summonerStatsEntry['Kills'] = _getAverage(summonerStatsEntry['Kills']) summonerStatsEntry['Deaths'] = _getAverage(summonerStatsEntry['Deaths']) summonerStatsEntry['Assists'] = _getAverage(summonerStatsEntry['Assists']) summonerStatsEntry['CS'] = _getAverage(summonerStatsEntry['CS']) summonerStatsEntry['Jungle CS'] = _getAverage(summonerStatsEntry['Jungle CS']) summonerStatsEntry['Damage Dealt'] = _getAverage(summonerStatsEntry['Damage Dealt']) summonerStatsEntry['Damage Taken'] = _getAverage(summonerStatsEntry['Damage Taken']) summonerStatsEntry['Wards Placed'] = _getAverage(summonerStatsEntry['Wards Placed']) summonerStatsList.append(summonerStatsEntry) summonerStatsList = sorted(summonerStatsList, key=lambda summonerStatsEntry: summonerStatsEntry['Wins'], reverse=True) stats['Summoner stats'] = summonerStatsList stats['Champion'] = legendaryapi.getChampionNameFromId(championId) stats['Picks'] = len(gameResults) stats['Bans'] = getNumberOfGamesChampionIsBanned(championName) stats['Contested'] = stats['Picks'] + stats['Bans'] stats['Wins'] = wins stats['Losses'] = losses return stats
def getSummonerStats(summonerName): summonerId = mongo_dao.getSummonerIdFromName(summonerName) stats = {} gameResults = mongo_dao.getGameResultsForSummonerName(summonerName) totalGames = len(gameResults) wins = 0 losses = 0 totalKills = [] totalDeaths = [] totalAssists = [] kdas = [] # champ -> [kills] # [deaths] # [assists] # [cs] # [damage dealt] # [damage taken] # [wards bought] championStats = {} for gameResult in gameResults: statsArray = gameResult['statistics']['array'] if _getStatisticByName(statsArray, WIN) == 1: wins = wins + 1 won = True else: losses = losses + 1 won = False totalKills.append(_getStatisticByName(statsArray, KILLS)) totalDeaths.append(_getStatisticByName(statsArray, DEATHS)) totalAssists.append(_getStatisticByName(statsArray, ASSISTS)) kills =_getStatisticByName(statsArray, KILLS) deaths = _getStatisticByName(statsArray, DEATHS) assists = _getStatisticByName(statsArray, ASSISTS) cs = _getStatisticByName(statsArray, MINIONS_KILLED) + _getStatisticByName(statsArray, JUNGLE_MONSTERS_KILLED) jungleCs = _getStatisticByName(statsArray, JUNGLE_MONSTERS_KILLED) damageDealt = _getStatisticByName(statsArray, DAMAGE_DEALT_TO_CHAMPIONS) damageTaken = _getStatisticByName(statsArray, DAMAGE_TAKEN) wardsPlaced = _getStatisticByName(statsArray, WARDS_PLACED) championName = legendaryapi.getChampionNameFromId(gameResult['championId']) if championName not in championStats: championStatsEntry = {} championStatsEntry['Wins'] = 0 championStatsEntry['Losses'] = 0 championStatsEntry['Kills'] = [] championStatsEntry['Deaths'] = [] championStatsEntry['Assists'] = [] championStatsEntry['CS'] = [] championStatsEntry['Jungle CS'] = [] championStatsEntry['Damage Dealt'] = [] championStatsEntry['Damage Taken'] = [] championStatsEntry['Wards Placed'] = [] championStats[championName] = championStatsEntry championStatsEntry = championStats[championName] if won: championStatsEntry['Wins'] = championStatsEntry['Wins'] + 1 else: championStatsEntry['Losses'] = championStatsEntry['Losses'] + 1 championStatsEntry['Kills'].append(kills) championStatsEntry['Deaths'].append(deaths) championStatsEntry['Assists'].append(assists) championStatsEntry['CS'].append(cs) championStatsEntry['Jungle CS'].append(jungleCs) championStatsEntry['Damage Dealt'].append(damageDealt) championStatsEntry['Damage Taken'].append(damageTaken) championStatsEntry['Wards Placed'].append(wardsPlaced) championStatsList = [] stats['Summoner'] = mongo_dao.getStylizedSummonerName(summonerName) stats['Total Games'] = len(gameResults) stats['Wins'] = wins stats['Losses'] = losses stats['Average Kills'] = _getAverage(totalKills) stats['Average Deaths'] = _getAverage(totalDeaths) stats['Average Assists'] = _getAverage(totalAssists) # TODO add winrate # TODO add win % for championName, championStatsEntry in championStats.iteritems(): championStatsEntry['Champion'] = championName championStatsEntry['Kills'] = _getAverage(championStatsEntry['Kills']) championStatsEntry['Deaths'] = _getAverage(championStatsEntry['Deaths']) championStatsEntry['Assists'] = _getAverage(championStatsEntry['Assists']) championStatsEntry['CS'] = _getAverage(championStatsEntry['CS']) championStatsEntry['Jungle CS'] = _getAverage(championStatsEntry['Jungle CS']) championStatsEntry['Damage Dealt'] = _getAverage(championStatsEntry['Damage Dealt']) championStatsEntry['Damage Taken'] = _getAverage(championStatsEntry['Damage Taken']) championStatsEntry['Wards Placed'] = _getAverage(championStatsEntry['Wards Placed']) championStatsList.append(championStatsEntry) championStatsList = sorted(championStatsList, key=lambda championStatsEntry: championStatsEntry['Wins'], reverse=True) stats['Champion stats'] = championStatsList return stats
def getChampionStats(championName): championId = legendaryapi.getChampionIdFromName(championName) stats = {} wins = 0 losses = 0 summonerStats = {} gameResults = mongo_dao.getGameResultsIncludingChampion(championId) for gameResult in gameResults: summonerId = gameResult['userId'] summonerName = mongo_dao.getSummonerNameFromId(summonerId) if _getStatisticByNameFromGameResult(gameResult, WIN) == 1: wins = wins + 1 won = True else: losses = losses + 1 won = False kills = _getStatisticByNameFromGameResult(gameResult, KILLS) deaths = _getStatisticByNameFromGameResult(gameResult, DEATHS) assists = _getStatisticByNameFromGameResult(gameResult, ASSISTS) cs = _getStatisticByNameFromGameResult( gameResult, MINIONS_KILLED) + _getStatisticByNameFromGameResult( gameResult, JUNGLE_MONSTERS_KILLED) jungleCs = _getStatisticByNameFromGameResult(gameResult, JUNGLE_MONSTERS_KILLED) damageDealt = _getStatisticByNameFromGameResult( gameResult, DAMAGE_DEALT_TO_CHAMPIONS) damageTaken = _getStatisticByNameFromGameResult( gameResult, DAMAGE_TAKEN) wardsPlaced = _getStatisticByNameFromGameResult( gameResult, WARDS_PLACED) if summonerName not in summonerStats: summonerStatsEntry = {} summonerStatsEntry['Wins'] = 0 summonerStatsEntry['Losses'] = 0 summonerStatsEntry['Kills'] = [] summonerStatsEntry['Deaths'] = [] summonerStatsEntry['Assists'] = [] summonerStatsEntry['CS'] = [] summonerStatsEntry['Jungle CS'] = [] summonerStatsEntry['Damage Dealt'] = [] summonerStatsEntry['Damage Taken'] = [] summonerStatsEntry['Wards Placed'] = [] summonerStats[summonerName] = summonerStatsEntry summonerStatsEntry = summonerStats[summonerName] if won: summonerStatsEntry['Wins'] = summonerStatsEntry['Wins'] + 1 else: summonerStatsEntry['Losses'] = summonerStatsEntry['Losses'] + 1 summonerStatsEntry['Kills'].append(kills) summonerStatsEntry['Deaths'].append(deaths) summonerStatsEntry['Assists'].append(assists) summonerStatsEntry['CS'].append(cs) summonerStatsEntry['Jungle CS'].append(jungleCs) summonerStatsEntry['Damage Dealt'].append(damageDealt) summonerStatsEntry['Damage Taken'].append(damageTaken) summonerStatsEntry['Wards Placed'].append(wardsPlaced) summonerStatsList = [] for summonerName, summonerStatsEntry in summonerStats.iteritems(): summonerStatsEntry['Summoner'] = summonerName summonerStatsEntry['Kills'] = _getAverage(summonerStatsEntry['Kills']) summonerStatsEntry['Deaths'] = _getAverage( summonerStatsEntry['Deaths']) summonerStatsEntry['Assists'] = _getAverage( summonerStatsEntry['Assists']) summonerStatsEntry['CS'] = _getAverage(summonerStatsEntry['CS']) summonerStatsEntry['Jungle CS'] = _getAverage( summonerStatsEntry['Jungle CS']) summonerStatsEntry['Damage Dealt'] = _getAverage( summonerStatsEntry['Damage Dealt']) summonerStatsEntry['Damage Taken'] = _getAverage( summonerStatsEntry['Damage Taken']) summonerStatsEntry['Wards Placed'] = _getAverage( summonerStatsEntry['Wards Placed']) summonerStatsList.append(summonerStatsEntry) summonerStatsList = sorted( summonerStatsList, key=lambda summonerStatsEntry: summonerStatsEntry['Wins'], reverse=True) stats['Summoner stats'] = summonerStatsList stats['Champion'] = legendaryapi.getChampionNameFromId(championId) stats['Picks'] = len(gameResults) stats['Bans'] = getNumberOfGamesChampionIsBanned(championName) stats['Contested'] = stats['Picks'] + stats['Bans'] stats['Wins'] = wins stats['Losses'] = losses return stats
def getSummonerStats(summonerName): summonerId = mongo_dao.getSummonerIdFromName(summonerName) stats = {} gameResults = mongo_dao.getGameResultsForSummonerName(summonerName) totalGames = len(gameResults) wins = 0 losses = 0 totalKills = [] totalDeaths = [] totalAssists = [] kdas = [] # champ -> [kills] # [deaths] # [assists] # [cs] # [damage dealt] # [damage taken] # [wards bought] championStats = {} for gameResult in gameResults: statsArray = gameResult['statistics']['array'] if _getStatisticByName(statsArray, WIN) == 1: wins = wins + 1 won = True else: losses = losses + 1 won = False totalKills.append(_getStatisticByName(statsArray, KILLS)) totalDeaths.append(_getStatisticByName(statsArray, DEATHS)) totalAssists.append(_getStatisticByName(statsArray, ASSISTS)) kills = _getStatisticByName(statsArray, KILLS) deaths = _getStatisticByName(statsArray, DEATHS) assists = _getStatisticByName(statsArray, ASSISTS) cs = _getStatisticByName(statsArray, MINIONS_KILLED) + _getStatisticByName( statsArray, JUNGLE_MONSTERS_KILLED) jungleCs = _getStatisticByName(statsArray, JUNGLE_MONSTERS_KILLED) damageDealt = _getStatisticByName(statsArray, DAMAGE_DEALT_TO_CHAMPIONS) damageTaken = _getStatisticByName(statsArray, DAMAGE_TAKEN) wardsPlaced = _getStatisticByName(statsArray, WARDS_PLACED) championName = legendaryapi.getChampionNameFromId( gameResult['championId']) if championName not in championStats: championStatsEntry = {} championStatsEntry['Wins'] = 0 championStatsEntry['Losses'] = 0 championStatsEntry['Kills'] = [] championStatsEntry['Deaths'] = [] championStatsEntry['Assists'] = [] championStatsEntry['CS'] = [] championStatsEntry['Jungle CS'] = [] championStatsEntry['Damage Dealt'] = [] championStatsEntry['Damage Taken'] = [] championStatsEntry['Wards Placed'] = [] championStats[championName] = championStatsEntry championStatsEntry = championStats[championName] if won: championStatsEntry['Wins'] = championStatsEntry['Wins'] + 1 else: championStatsEntry['Losses'] = championStatsEntry['Losses'] + 1 championStatsEntry['Kills'].append(kills) championStatsEntry['Deaths'].append(deaths) championStatsEntry['Assists'].append(assists) championStatsEntry['CS'].append(cs) championStatsEntry['Jungle CS'].append(jungleCs) championStatsEntry['Damage Dealt'].append(damageDealt) championStatsEntry['Damage Taken'].append(damageTaken) championStatsEntry['Wards Placed'].append(wardsPlaced) championStatsList = [] stats['Summoner'] = mongo_dao.getStylizedSummonerName(summonerName) stats['Total Games'] = len(gameResults) stats['Wins'] = wins stats['Losses'] = losses stats['Average Kills'] = _getAverage(totalKills) stats['Average Deaths'] = _getAverage(totalDeaths) stats['Average Assists'] = _getAverage(totalAssists) # TODO add winrate # TODO add win % for championName, championStatsEntry in championStats.iteritems(): championStatsEntry['Champion'] = championName championStatsEntry['Kills'] = _getAverage(championStatsEntry['Kills']) championStatsEntry['Deaths'] = _getAverage( championStatsEntry['Deaths']) championStatsEntry['Assists'] = _getAverage( championStatsEntry['Assists']) championStatsEntry['CS'] = _getAverage(championStatsEntry['CS']) championStatsEntry['Jungle CS'] = _getAverage( championStatsEntry['Jungle CS']) championStatsEntry['Damage Dealt'] = _getAverage( championStatsEntry['Damage Dealt']) championStatsEntry['Damage Taken'] = _getAverage( championStatsEntry['Damage Taken']) championStatsEntry['Wards Placed'] = _getAverage( championStatsEntry['Wards Placed']) championStatsList.append(championStatsEntry) championStatsList = sorted( championStatsList, key=lambda championStatsEntry: championStatsEntry['Wins'], reverse=True) stats['Champion stats'] = championStatsList return stats