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