63 lines
2.8 KiB
Python
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-fc84cba3-d6c2-42d3-a322-35134b08dc22'
|
|
#/!\ 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
|