コード例 #1
0
ファイル: stats.py プロジェクト: garsh0p/inhouse-stats
def getCompleteGameInfo(gameId):
    """Returns a dictionary of game info.
    Format specified in google doc TODO
    """
    # TODO game specific info. we only have summoner specific data for now.
    gameInfo = []

    gameResults = mongo_dao.getResultsForGameId(gameId)
    for gameResult in gameResults:
        summonerId = gameResult['userId']
        gameInfo.append(getSummonerStatsForGameId(gameId, summonerId))

    return gameInfo
コード例 #2
0
ファイル: stats.py プロジェクト: danielvdao/inhouse-stats
def getCompleteGameInfo(gameId):
    """Returns a dictionary of game info.
    Format specified in google doc TODO
    """
    # TODO game specific info. we only have summoner specific data for now.
    gameInfo = []
    
    gameResults = mongo_dao.getResultsForGameId(gameId)
    for gameResult in gameResults:
        summonerId = gameResult['userId']
        gameInfo.append(getSummonerStatsForGameId(gameId, summonerId))
    
    return gameInfo
コード例 #3
0
ファイル: stats.py プロジェクト: garsh0p/inhouse-stats
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
コード例 #4
0
ファイル: stats.py プロジェクト: garsh0p/inhouse-stats
def getAllSummonerWinRates(minGames=1):
    summonerWinrates = []

    summonerWinrateDict = {}

    for gameId in mongo_dao.getAllGameIds():
        for gameResult in mongo_dao.getResultsForGameId(gameId):
            statsArray = gameResult['statistics']['array']
            summonerId = gameResult['userId']
            summonerName = mongo_dao.getSummonerNameFromId(summonerId)
            won = _getStatisticByName(statsArray, WIN) == 1

            try:
                summonerWinrateEntry = summonerWinrateDict[summonerName]
                if won:
                    summonerWinrateEntry[
                        'Wins'] = summonerWinrateEntry['Wins'] + 1
                else:
                    summonerWinrateEntry[
                        'Losses'] = summonerWinrateEntry['Losses'] + 1
            except KeyError:
                summonerWinrateEntry = {}
                summonerWinrateEntry['Summoner'] = summonerName
                summonerWinrateEntry['Wins'] = 1 if won else 0
                summonerWinrateEntry[
                    'Losses'] = 1 - summonerWinrateEntry['Wins']

                summonerWinrateDict[summonerName] = summonerWinrateEntry

    for summonerName, summonerWinrateEntry in summonerWinrateDict.iteritems():
        # calculate winrates
        wins = summonerWinrateEntry['Wins']
        losses = summonerWinrateEntry['Losses']
        totalGames = wins + losses

        if totalGames < minGames:
            continue

        summonerWinrates.append(summonerWinrateEntry)

        if losses == 0:
            summonerWinrateEntry['Winrate'] = 1.0
        else:
            summonerWinrateEntry['Winrate'] = 1.0 * wins / totalGames

    return sorted(
        summonerWinrates,
        key=lambda summonerWinrateEntry: summonerWinrateEntry['Winrate'],
        reverse=True)
コード例 #5
0
ファイル: stats.py プロジェクト: danielvdao/inhouse-stats
def getAllGamesWithDate():
    """Returns a list of tuples of (game date, game id)
    """
    gameList = []
    
    gameIds = mongo_dao.getAllGameIds()
    for gameId in gameIds:
        # the time is stored in game results
        gameResults = mongo_dao.getResultsForGameId(gameId)
        
        # we only need one game result to get the time, so break after 1
        for gameResult in gameResults:
            createDateString = gameResult['createDate']
            createDatetime = _convertUtcDatetimeStringToDatetimeWithTimeZone(createDateString, DEFAULT_TIME_ZONE)
            gameList.append((str(createDatetime), gameId))
            break
    
    # sort
    return sorted(gameList, key=lambda game: game[0])
コード例 #6
0
ファイル: stats.py プロジェクト: danielvdao/inhouse-stats
def getAllSummonerWinRates(minGames=1):
    summonerWinrates = []

    summonerWinrateDict = {}
    
    for gameId in mongo_dao.getAllGameIds():
        for gameResult in mongo_dao.getResultsForGameId(gameId):
            statsArray = gameResult['statistics']['array']
            summonerId = gameResult['userId']
            summonerName = mongo_dao.getSummonerNameFromId(summonerId)
            won = _getStatisticByName(statsArray, WIN) == 1
            
            try:
                summonerWinrateEntry = summonerWinrateDict[summonerName]
                if won:
                    summonerWinrateEntry['Wins'] = summonerWinrateEntry['Wins'] + 1
                else:
                    summonerWinrateEntry['Losses'] = summonerWinrateEntry['Losses'] + 1
            except KeyError:
                summonerWinrateEntry = {}
                summonerWinrateEntry['Summoner'] = summonerName
                summonerWinrateEntry['Wins'] = 1 if won else 0
                summonerWinrateEntry['Losses'] = 1 - summonerWinrateEntry['Wins']
                
                summonerWinrateDict[summonerName] = summonerWinrateEntry

    for summonerName, summonerWinrateEntry in summonerWinrateDict.iteritems():
        # calculate winrates
        wins = summonerWinrateEntry['Wins']
        losses = summonerWinrateEntry['Losses']
        totalGames = wins + losses
        
        if totalGames < minGames:
            continue
            
        summonerWinrates.append(summonerWinrateEntry)
        
        if losses == 0:
            summonerWinrateEntry['Winrate'] = 1.0
        else:
            summonerWinrateEntry['Winrate'] = 1.0 * wins / totalGames
    
    return sorted(summonerWinrates, key=lambda summonerWinrateEntry: summonerWinrateEntry['Winrate'], reverse=True)
コード例 #7
0
ファイル: stats.py プロジェクト: danielvdao/inhouse-stats
def getBlueSideWins():
    blueSideWins = 0
    
    gameIds = mongo_dao.getAllGameIds()
    for gameId in gameIds:
        gameResults = mongo_dao.getResultsForGameId(gameId)
        for gameResult in gameResults:
            win = _didPlayerWinFromResult(gameResult)
            teamId = gameResult['teamId']
            
            if win:
                if teamId == BLUE_TEAM_ID:
                    blueSideWins = blueSideWins + 1
            else:
                if teamId == PURPLE_TEAM_ID:
                    blueSideWins = blueSideWins + 1
            
            break # we only need 1 result to figure out who wins
    
    return blueSideWins
コード例 #8
0
ファイル: stats.py プロジェクト: garsh0p/inhouse-stats
def getAllGamesWithDate():
    """Returns a list of tuples of (game date, game id)
    """
    gameList = []

    gameIds = mongo_dao.getAllGameIds()
    for gameId in gameIds:
        # the time is stored in game results
        gameResults = mongo_dao.getResultsForGameId(gameId)

        # we only need one game result to get the time, so break after 1
        for gameResult in gameResults:
            createDateString = gameResult['createDate']
            createDatetime = _convertUtcDatetimeStringToDatetimeWithTimeZone(
                createDateString, DEFAULT_TIME_ZONE)
            gameList.append((str(createDatetime), gameId))
            break

    # sort
    return sorted(gameList, key=lambda game: game[0])
コード例 #9
0
ファイル: stats.py プロジェクト: garsh0p/inhouse-stats
def getBlueSideWins():
    blueSideWins = 0

    gameIds = mongo_dao.getAllGameIds()
    for gameId in gameIds:
        gameResults = mongo_dao.getResultsForGameId(gameId)
        for gameResult in gameResults:
            win = _didPlayerWinFromResult(gameResult)
            teamId = gameResult['teamId']

            if win:
                if teamId == BLUE_TEAM_ID:
                    blueSideWins = blueSideWins + 1
            else:
                if teamId == PURPLE_TEAM_ID:
                    blueSideWins = blueSideWins + 1

            break  # we only need 1 result to figure out who wins

    return blueSideWins
コード例 #10
0
ファイル: stats.py プロジェクト: danielvdao/inhouse-stats
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
コード例 #11
0
ファイル: stats.py プロジェクト: garsh0p/inhouse-stats
def getStatsForSummoners(summoners):
    if len(summoners) <= 1:
        return None

    gameIds = mongo_dao.getGameIdsWithSummonersOnSameTeam(summoners)
    gameResults = []
    for gameId in gameIds:
        gameResults.extend(mongo_dao.getResultsForGameId(gameId))

    # prune gameResults down to results only including 1 summoner
    summonerId = mongo_dao.getSummonerIdFromName(summoners[0])
    gameResults = [
        gameResult for gameResult in gameResults
        if gameResult['userId'] == summonerId
    ]

    print len(gameResults)

    stats = {}

    stats['summoners'] = summoners
    stats['wins'] = 0
    stats['losses'] = 0

    for gameResult in gameResults:
        if _getStatisticByNameFromGameResult(gameResult, WIN) == 1:
            stats['wins'] += 1
        else:
            stats['losses'] += 1

    # calculate winrate
    if stats['wins'] == 0:
        stats['winrate'] = 0
    elif stats['losses'] == 0:
        stats['winrate'] = 1.0
    else:
        stats['winrate'] = 1.0 * stats['wins'] / len(gameResults)

    return stats
コード例 #12
0
ファイル: stats.py プロジェクト: danielvdao/inhouse-stats
def getStatsForSummoners(summoners):
    if len(summoners) <= 1:
        return None

    gameIds = mongo_dao.getGameIdsWithSummonersOnSameTeam(summoners)
    gameResults = []
    for gameId in gameIds:
        gameResults.extend(mongo_dao.getResultsForGameId(gameId))
        
    # prune gameResults down to results only including 1 summoner
    summonerId = mongo_dao.getSummonerIdFromName(summoners[0])
    gameResults = [gameResult for gameResult in gameResults if gameResult['userId'] == summonerId]
    
    print len(gameResults)
    
    stats = {}
    
    stats['summoners'] = summoners
    stats['wins'] = 0
    stats['losses'] = 0
    
    for gameResult in gameResults:
        if _getStatisticByNameFromGameResult(gameResult, WIN) == 1:
            stats['wins'] += 1
        else:
            stats['losses'] += 1
    
    # calculate winrate
    if stats['wins'] == 0:
        stats['winrate'] = 0
    elif stats['losses'] == 0:
        stats['winrate'] = 1.0
    else:
        stats['winrate'] = 1.0 * stats['wins'] / len(gameResults)
    
    return stats