api_lol/appli/fonctions.py

63 lines
2.8 KiB
Python

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired, Regexp
import requests
from flask import Flask, render_template, redirect, url_for, flash, request
import sys
import os
sys.path.append(os.path.dirname(os.path.abspath(__file__))) #sans cette ligne le fichier ne trouve pas models.py je ne sais pas pourquoi
from models import Player
import requests
from models import Player
def main(region, player_count):
api_key = 'RGAPI-121baff0-66be-475c-bd41-086e01ce3678'
#/!\ IMPORTANT la clé change toutes les 24h
# Dernière clé activé : valide jusqu'au 15/02 à 13h00
# veuillez la recréer sur le site riot games developer
time = 1 #utiliser pour le timeout dans les requetes api
#les pages mettent beaucoup de temps à charger mais si on réduit le timeout les pages ne chargeront peut être pas
#Cette url permet de récupérer : leagueId, queueType, tier, rank, summonerId, leaguePoints,
#wins, losses, veteran, inactive,freshBlood, hotstreak,
#on va avoir besoin des leaguePoints pour faire un classement, et des summonerId pour retrouver les pseudos des joueurs plus tard
api_url2 = (f"https://{region}.api.riotgames.com/lol/league-exp/v4/entries/RANKED_SOLO_5x5/CHALLENGER/I?page=1&api_key={api_key}")
resp2 = requests.get(api_url2, timeout=time)
player_info = resp2.json()
players = []
for entry in player_info[:player_count]:
summoner_id = entry.get('summonerId')
league_points = entry.get('leaguePoints')
players.append({
'summoner_id': summoner_id,
'league_points': league_points,
})
#cette api utilise le summonerid et retourne le puuid qui sera utile plus tard pour récupérer les pseudos et tag
for player in players:
summoner_id = player['summoner_id']
api_url5 = f"https://{region}.api.riotgames.com/lol/summoner/v4/summoners/{summoner_id}?api_key={api_key}"
resp5 = requests.get(api_url5, timeout=time)
player_data = resp5.json()
player['puuid'] = player_data.get('puuid')
#cette api utilise le puuid et retourne les pseudos et tag
for player in players:
if player['puuid']:
api_url6 = f"https://europe.api.riotgames.com/riot/account/v1/accounts/by-puuid/{player['puuid']}?api_key={api_key}"
resp6 = requests.get(api_url6, timeout=time)
data = resp6.json()
player['name'] = data.get('gameName')
player['tag'] = data.get('tagLine')
final_players = []
for i, player in enumerate(players):
final_players.append(Player(name=player['name'],tag=player['tag'],league_points=player['league_points'],rank=i + 1,summoner_id=player['summoner_id']))
return final_players