def create_match_obj(match_id): match_url = 'https://na.api.pvp.net/api/lol/na/v2.2/match/%s?api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d' % match_id match_request = requester(match_url,'get') try: match, created = Match.objects.get_or_create(match_id = match_request['matchId']) except: print 'MATCH FAILED TO CREATE, SKIPPING'
def request_champion_details(riot_id): champion = Hero.objects.get(riot_id=riot_id) champion_detail_url = 'https://global.api.pvp.net/api/lol/static-data/na/v1.2/champion/%s?champData=image,info,partype,stats,tags&api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d' % riot_id champion_detail_request = requester(champion_detail_url, 'get') champion.image_name = str(champion_detail_request['image']['full']) champion.attackrange = champion_detail_request['stats']['attackrange'] champion.mpperlevel = champion_detail_request['stats']['mpperlevel'] champion.mp = champion_detail_request['stats']['mp'] champion.attackdamage = champion_detail_request['stats']['attackdamage'] champion.hp = champion_detail_request['stats']['hp'] champion.hpperlevel = champion_detail_request['stats']['hpperlevel'] champion.attackdamageperlevel = champion_detail_request['stats'][ 'attackdamageperlevel'] champion.armor = champion_detail_request['stats']['armor'] champion.mpregenperlevel = champion_detail_request['stats'][ 'mpregenperlevel'] champion.hpregen = champion_detail_request['stats']['hpregen'] champion.critperlevel = champion_detail_request['stats']['critperlevel'] champion.spellblockperlevel = champion_detail_request['stats'][ 'spellblockperlevel'] champion.mpregen = champion_detail_request['stats']['mpregen'] champion.attackspeedperlevel = champion_detail_request['stats'][ 'attackspeedperlevel'] champion.spellblock = champion_detail_request['stats']['spellblock'] champion.movespeed = champion_detail_request['stats']['movespeed'] champion.attackspeedoffset = champion_detail_request['stats'][ 'attackspeedoffset'] champion.crit = champion_detail_request['stats']['crit'] champion.hpregenperlevel = champion_detail_request['stats'][ 'hpregenperlevel'] champion.armorperlevel = champion_detail_request['stats']['armorperlevel'] champion.save()
def request_champion_details(riot_id): champion = Hero.objects.get(riot_id = riot_id) champion_detail_url = 'https://global.api.pvp.net/api/lol/static-data/na/v1.2/champion/%s?champData=image,info,partype,stats,tags&api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d' % riot_id champion_detail_request = requester(champion_detail_url,'get') champion.image_name = str(champion_detail_request['image']['full']) champion.attackrange = champion_detail_request['stats']['attackrange'] champion.mpperlevel = champion_detail_request['stats']['mpperlevel'] champion.mp = champion_detail_request['stats']['mp'] champion.attackdamage = champion_detail_request['stats']['attackdamage'] champion.hp = champion_detail_request['stats']['hp'] champion.hpperlevel = champion_detail_request['stats']['hpperlevel'] champion.attackdamageperlevel = champion_detail_request['stats']['attackdamageperlevel'] champion.armor = champion_detail_request['stats']['armor'] champion.mpregenperlevel = champion_detail_request['stats']['mpregenperlevel'] champion.hpregen = champion_detail_request['stats']['hpregen'] champion.critperlevel = champion_detail_request['stats']['critperlevel'] champion.spellblockperlevel = champion_detail_request['stats']['spellblockperlevel'] champion.mpregen = champion_detail_request['stats']['mpregen'] champion.attackspeedperlevel = champion_detail_request['stats']['attackspeedperlevel'] champion.spellblock = champion_detail_request['stats']['spellblock'] champion.movespeed = champion_detail_request['stats']['movespeed'] champion.attackspeedoffset = champion_detail_request['stats']['attackspeedoffset'] champion.crit = champion_detail_request['stats']['crit'] champion.hpregenperlevel = champion_detail_request['stats']['hpregenperlevel'] champion.armorperlevel = champion_detail_request['stats']['armorperlevel'] champion.save()
def assign_all_tags(): all_item_request = requester('https://global.api.pvp.net/api/lol/static-data/na/v1.2/item?itemListData=all&api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d','get') item_data = all_item_request['data'] error_list = [] unassigned_enchantment = [] for item in item_data: item_obj = Item.objects.get(riot_id = item_data[item]['id']) print '--- {} ---'.format(item_data[item]['name']) if item_data[item]['name'].startswith('Enchantment'): for stats in item_data[item]['stats']: if stats == 'PercentAttackSpeedMod': assign_tag(item_obj, 'AttackSpeed') elif stats == 'FlatHPPoolMod': assign_tag(item_obj, 'Health') elif stats == 'FlatMagicDamageMod': assign_tag(item_obj, 'SpellDamage') elif stats == 'PercentMovementSpeedMod': assign_tag(item_obj, 'NonbootsMovement') elif stats == 'FlatPhysicalDamageMod': assign_tag(item_obj, 'Damage') else: unassigned_enchantment.append((item_data[item]['name'], item_data[item]['stats'] )) continue try: item_data[item]['consumed'] assign_tag(item_obj, 'Consumable') continue except: pass try: for tag in item_data[item]['tags']: assign_tag(item_obj, tag) continue except: pass # if item_data[item]['inStore'] == False: # print 'ITEM NOT IN STORE' # continue try: item_data[item]['requiredChampion'] = 'Viktor' for tag in ['Mana', 'SpellDamage']: assign_tag(item_obj, tag) continue except: pass error_list.append(item_data[item]) for item in error_list: pprint.pprint(item) pprint.pprint(unassigned_enchantment) print "Amount of Errors: ", len(error_list)
def get_match_list(summoner_id): match_list_url = 'https://na.api.pvp.net/api/lol/na/v2.2/matchlist/by-summoner/%s?seasons=%s&api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d' % (summoner_id, CURRENT_SEASON) try: match_request = requester(match_list_url,'get') return match_request['matches'] except: print "Match List Request Failed" return []
def create_match_obj(match_id): match_url = 'https://na.api.pvp.net/api/lol/na/v2.2/match/%s?api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d' % match_id match_request = requester(match_url, 'get') try: match, created = Match.objects.get_or_create( match_id=match_request['matchId']) except: print 'MATCH FAILED TO CREATE, SKIPPING'
def get_match_list(summoner_id): match_list_url = 'https://na.api.pvp.net/api/lol/na/v2.2/matchlist/by-summoner/%s?seasons=%s&api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d' % ( summoner_id, CURRENT_SEASON) try: match_request = requester(match_list_url, 'get') return match_request['matches'] except: print "Match List Request Failed" return []
def get_static_rune_data(): rune_url = 'https://global.api.pvp.net/api/lol/static-data/na/v1.2/rune?api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d' rune_data = requester(rune_url, 'get')['data'] for rune in rune_data: Rune.objects.get_or_create(runeId=rune_data[rune]['id'], name=rune_data[rune]['name'], description=rune_data[rune]['description'])
def get_static_mastery_data(): mastery_url = 'https://global.api.pvp.net/api/lol/static-data/na/v1.2/mastery?api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d' mastery_data = requester(mastery_url, 'get')['data'] for mastery in mastery_data: Mastery.objects.get_or_create( masteryId = mastery_data[mastery]['id'], name = mastery_data[mastery]['name'], description = mastery_data[mastery]['description'] )
def request_all_champion_info(): all_champion_url = '/api/lol/static-data/na/v1.2/champion?api_key= %s'% settings.RIOT_API_KEY all_champions_request = requester('https://global.api.pvp.net/api/lol/static-data/na/v1.2/champion?api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d','get') hero_data = all_champions_request['data'] champion_data_list = [] for item in hero_data: champion_data_list.append(hero_data[item]) hero, created = Hero.objects.get_or_create(name = hero_data[item]['name'], riot_id = hero_data[item]['id']) if created == True: hero.save()
def get_static_rune_data(): rune_url = 'https://global.api.pvp.net/api/lol/static-data/na/v1.2/rune?api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d' rune_data = requester(rune_url, 'get')['data'] for rune in rune_data: Rune.objects.get_or_create( runeId = rune_data[rune]['id'], name = rune_data[rune]['name'], description = rune_data[rune]['description'] )
def request_all_champion_info(): all_champion_url = '/api/lol/static-data/na/v1.2/champion?api_key= %s' % settings.RIOT_API_KEY all_champions_request = requester( 'https://global.api.pvp.net/api/lol/static-data/na/v1.2/champion?api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d', 'get') hero_data = all_champions_request['data'] champion_data_list = [] for item in hero_data: champion_data_list.append(hero_data[item]) hero, created = Hero.objects.get_or_create( name=hero_data[item]['name'], riot_id=hero_data[item]['id']) if created == True: hero.save()
def get_match_data(match_obj): match_id = match_obj.match_id match_data_url = 'https://na.api.pvp.net/api/lol/na/v2.2/match/%s?api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d' % match_id match_data = requester(match_data_url, 'get') try: status_code = match_data['status']['status_code'] status_message = match_data['status']['message'] print 'REQUEST ERROR: %s -- %s' %(status_code, status_message) return False, True except: pass try: if not str(match_data['matchVersion']).startswith(str(VERSION_TREE[0])) or not str(match_data['matchVersion']).startswith(str(VERSION_TREE[1])) or not str(match_data['matchVersion']).startswith(str(VERSION_TREE[2])): print 'Current Version = %s :: Match Version = %s'% (current_version, match_data['matchVersion'] ) print 'Not Current Version, Skipping' match_obj.delete() return False, False elif match_data['queueType'] in ['RANKED_SOLO_5x5', 'RANKED_PREMADE_5x5', 'RANKED_TEAM_5x5', 'TEAM_BUILDER_DRAFT_RANKED_5x5']: print 'MATCH NOT RANKED' match_obj.delete() return False, False except: pass blue_queue = Queue.Queue() red_queue = Queue.Queue() for i in xrange(1,6): blue_dict = {'champion': 'blue_champion_{}'.format(i), 'items': getattr(match_obj,'blue_items_{}'.format(i))} red_dict = {'champion': 'red_champion_{}'.format(i), 'items': getattr(match_obj,'red_items_{}'.format(i))} blue_queue.put(blue_dict) red_queue.put(red_dict) for player in match_data['participants']: if player['teamId'] == 100: # 100 is Blue team, 200 is Red Team match_player = blue_queue.get() else: match_player = red_queue.get() if player['highestAchievedSeasonTier'] in ['DIAMOND']: participant_id = player['participantId'] for identity in match_data['participantIdentities']: if identity['participantId'] == participant_id: match_list = get_match_list(identity['player']['summonerId']) for match in match_list: print 'Match Added to Queue' match_request_queue.put(match['matchId']) setattr(match_obj, match_player['champion'], Hero.objects.get(riot_id = player['championId'])) for stat in player['stats']: if 'item' in stat and player['stats'][stat] != 0: try: item = Item.objects.get(riot_id = player['stats'][stat]) match_player['items'].add(item) except: print player['stats'][stat], ' No Longer exists in LoL' for team in match_data['teams']: if team['winner']: match_obj.winning_team = team['teamId'] match_obj.save() return True, True
def get_match_data(match_obj): match_id = match_obj.match_id match_data_url = 'https://na.api.pvp.net/api/lol/na/v2.2/match/%s?api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d' % match_id match_data = requester(match_data_url, 'get') try: status_code = match_data['status']['status_code'] status_message = match_data['status']['message'] print 'REQUEST ERROR: %s -- %s' % (status_code, status_message) return False, True except: pass try: if not str(match_data['matchVersion']).startswith( str(VERSION_TREE[0])) or not str( match_data['matchVersion']).startswith( str(VERSION_TREE[1])) or not str( match_data['matchVersion']).startswith( str(VERSION_TREE[2])): print 'Current Version = %s :: Match Version = %s' % ( current_version, match_data['matchVersion']) print 'Not Current Version, Skipping' match_obj.delete() return False, False elif match_data['queueType'] in [ 'RANKED_SOLO_5x5', 'RANKED_PREMADE_5x5', 'RANKED_TEAM_5x5', 'TEAM_BUILDER_DRAFT_RANKED_5x5' ]: print 'MATCH NOT RANKED' match_obj.delete() return False, False except: pass blue_queue = Queue.Queue() red_queue = Queue.Queue() for i in xrange(1, 6): blue_dict = { 'champion': 'blue_champion_{}'.format(i), 'items': getattr(match_obj, 'blue_items_{}'.format(i)) } red_dict = { 'champion': 'red_champion_{}'.format(i), 'items': getattr(match_obj, 'red_items_{}'.format(i)) } blue_queue.put(blue_dict) red_queue.put(red_dict) for player in match_data['participants']: if player['teamId'] == 100: # 100 is Blue team, 200 is Red Team match_player = blue_queue.get() else: match_player = red_queue.get() if player['highestAchievedSeasonTier'] in ['DIAMOND']: participant_id = player['participantId'] for identity in match_data['participantIdentities']: if identity['participantId'] == participant_id: match_list = get_match_list( identity['player']['summonerId']) for match in match_list: print 'Match Added to Queue' match_request_queue.put(match['matchId']) setattr(match_obj, match_player['champion'], Hero.objects.get(riot_id=player['championId'])) for stat in player['stats']: if 'item' in stat and player['stats'][stat] != 0: try: item = Item.objects.get(riot_id=player['stats'][stat]) match_player['items'].add(item) except: print player['stats'][stat], ' No Longer exists in LoL' for team in match_data['teams']: if team['winner']: match_obj.winning_team = team['teamId'] match_obj.save() return True, True
def request_all_item_info(): def _get_item_stats_from_json(item, stat_str): try: return item_data[item]['stats'][stat_str] except: return None # def assign_fields(stat_key): # full_stat = 'item.Item.'+str(stat_key) # print 'Stat Key = ', stat_key # for field in Item.__meta.get_fields(): # if field == full_stat: all_item_request = requester('https://global.api.pvp.net/api/lol/static-data/na/v1.2/item?itemListData=all&api_key=07f7018c-7a66-4566-8fce-bc6f9c94b13d','get') item_data = all_item_request['data'] item_data_list = [] for item in item_data: item_data_list.append(item_data[item]) try: Item.objects.get(riot_id = item_data[item]['id']) continue except: pass try: item, created = Item.objects.get_or_create( riot_id = item_data[item]['id'], name = item_data[item]['name'], image = item_data[item]['image'], FlatArmorMod = _get_item_stats_from_json(item, 'FlatArmorMod'), FlatAttackSpeedMod = _get_item_stats_from_json(item,'FlatAttackSpeedMod'), FlatBlockMod = _get_item_stats_from_json(item,'FlatBlockMod'), FlatCritChanceMod = _get_item_stats_from_json(item,'FlatCritChanceMod'), FlatCritDamageMod = _get_item_stats_from_json(item, 'FlatCritDamageMod'), FlatEXPBonus = _get_item_stats_from_json(item, 'FlatEXPBonus'), FlatEnergyPoolMod = _get_item_stats_from_json(item, 'FlatEnergyPoolMod'), FlatEnergyRegenMod = _get_item_stats_from_json(item, 'FlatEnergyRegenMod'), FlatHPPoolMod = _get_item_stats_from_json(item, 'FlatHPPoolMod'), FlatHPRegenMod = _get_item_stats_from_json(item, 'FlatHPRegenMod'), FlatMPPoolMod = _get_item_stats_from_json(item, 'FlatMPPoolMod'), FlatMPRegenMod = _get_item_stats_from_json(item, 'FlatMPRegenMod'), FlatMagicDamageMod = _get_item_stats_from_json(item, 'FlatMagicDamageMod'), FlatMovementSpeedMod = _get_item_stats_from_json(item, 'FlatMovementSpeedMod'), FlatPhysicalDamageMod = _get_item_stats_from_json(item, 'FlatPhysicalDamageMod'), FlatSpellBlockMod = _get_item_stats_from_json(item, 'FlatSpellBlockMod'), PercentArmorMod = _get_item_stats_from_json(item, 'PercentArmorMod'), PercentAttackSpeedMod = _get_item_stats_from_json(item, 'PercentAttackSpeedMod'), PercentBlockMod = _get_item_stats_from_json(item, 'PercentBlockMod'), PercentCritChanceMod = _get_item_stats_from_json(item, 'PercentCritChanceMod'), PercentCritDamageMod = _get_item_stats_from_json(item, 'PercentCritDamageMod'), PercentDodgeMod = _get_item_stats_from_json(item, 'PercentDodgeMod'), PercentEXPBonus = _get_item_stats_from_json(item, 'PercentEXPBonus'), PercentHPPoolMod = _get_item_stats_from_json(item, 'PercentHPPoolMod'), PercentHPRegenMod = _get_item_stats_from_json(item, 'PercentHPRegenMod'), PercentLifeStealMod = _get_item_stats_from_json(item, 'PercentLifeStealMod'), PercentMPPoolMod = _get_item_stats_from_json(item, 'PercentMPPoolMod'), PercentMPRegenMod = _get_item_stats_from_json(item, 'PercentMPRegenMod'), PercentMagicDamageMod = _get_item_stats_from_json(item, 'PercentMagicDamageMod'), PercentMovementSpeedMod = _get_item_stats_from_json(item, 'PercentMovementSpeedMod'), PercentPhysicalDamageMod = _get_item_stats_from_json(item, 'PercentPhysicalDamageMod'), PercentSpellBlockMod = _get_item_stats_from_json(item, 'PercentSpellBlockMod'), PercentSpellVampMod = _get_item_stats_from_json(item, 'PercentSpellVampMod'), rFlatArmorModPerLevel = _get_item_stats_from_json(item, 'rFlatArmorModPerLevel'), rFlatArmorPenetrationMod = _get_item_stats_from_json(item, 'rFlatArmorPenetrationMod'), rFlatArmorPenetrationModPerLevel = _get_item_stats_from_json(item, 'rFlatArmorPenetrationModPerLevel'), rFlatCritChanceModPerLevel = _get_item_stats_from_json(item, 'rFlatCritChanceModPerLevel'), rFlatCritDamageModPerLevel = _get_item_stats_from_json(item, 'rFlatCritDamageModPerLevel'), rFlatDodgeMod = _get_item_stats_from_json(item, 'rFlatDodgeMod'), rFlatDodgeModPerLevel = _get_item_stats_from_json(item, 'rFlatDodgeModPerLevel'), rFlatEnergyModPerLevel = _get_item_stats_from_json(item, 'rFlatEnergyModPerLevel'), rFlatEnergyRegenModPerLevel = _get_item_stats_from_json(item, 'rFlatEnergyRegenModPerLevel'), rFlatGoldPer10Mod = _get_item_stats_from_json(item, 'rFlatGoldPer10Mod'), rFlatHPModPerLevel = _get_item_stats_from_json(item, 'rFlatHPModPerLevel'), rFlatHPRegenModPerLevel = _get_item_stats_from_json(item, 'rFlatHPRegenModPerLevel'), rFlatMPModPerLevel = _get_item_stats_from_json(item, 'rFlatMPModPerLevel'), rFlatMPRegenModPerLevel = _get_item_stats_from_json(item, 'rFlatMPRegenModPerLevel'), rFlatMagicDamageModPerLevel = _get_item_stats_from_json(item, 'rFlatMagicDamageModPerLevel'), rFlatMagicPenetrationMod = _get_item_stats_from_json(item, 'rFlatMagicPenetrationMod'), rFlatMagicPenetrationModPerLevel = _get_item_stats_from_json(item, 'rFlatMagicPenetrationModPerLevel'), rFlatMovementSpeedModPerLevel = _get_item_stats_from_json(item, 'rFlatMovementSpeedModPerLevel'), rFlatPhysicalDamageModPerLevel = _get_item_stats_from_json(item, 'rFlatPhysicalDamageModPerLevel'), rFlatSpellBlockModPerLevel = _get_item_stats_from_json(item, 'rFlatSpellBlockModPerLevel'), rFlatTimeDeadMod = _get_item_stats_from_json(item, 'rFlatTimeDeadMod'), rFlatTimeDeadModPerLevel = _get_item_stats_from_json(item, 'rFlatTimeDeadModPerLevel'), rPercentArmorPenetrationMod = _get_item_stats_from_json(item, 'rPercentArmorPenetrationMod'), rPercentArmorPenetrationModPerLevel = _get_item_stats_from_json(item, 'rPercentArmorPenetrationModPerLevel'), rPercentAttackSpeedModPerLevel = _get_item_stats_from_json(item, 'rPercentAttackSpeedModPerLevel'), rPercentCooldownMod = _get_item_stats_from_json(item, 'rPercentCooldownMod'), rPercentCooldownModPerLevel = _get_item_stats_from_json(item, 'rPercentCooldownModPerLevel'), rPercentMagicPenetrationMod = _get_item_stats_from_json(item, 'rPercentMagicPenetrationMod'), rPercentMagicPenetrationModPerLevel = _get_item_stats_from_json(item, 'rPercentMagicPenetrationModPerLevel'), rPercentMovementSpeedModPerLevel = _get_item_stats_from_json(item, 'rPercentMovementSpeedModPerLevel'), rPercentTimeDeadMod = _get_item_stats_from_json(item, 'rPercentTimeDeadMod'), rPercentTimeDeadModPerLevel = _get_item_stats_from_json(item, 'rPercentTimeDeadModPerLevel'), ) if created == True: item.save() except: print 'ERROR, item ID = ', item_data[item]['id']