diff --git a/app.py b/app.py index d23dfe0..b3e308c 100644 --- a/app.py +++ b/app.py @@ -1,52 +1,26 @@ -from flask import Flask, render_template, redirect, url_for, flash +from flask import Flask, render_template, redirect, url_for, flash, request +from appli.forms import RegionForm import requests from PIL import Image -from app.forms import ContactForm +from appli import models +import os +from appli.fonctions import main -app = Flask(__name__) +template_dir=os.path.abspath("./appli/templates") +app = Flask(__name__, template_folder=template_dir, static_folder='appli/static') +app.config['SECRET_KEY'] = 'ma_cle_secrete' +#app = Flask(__name__, template_folder="appli/templates", static_folder='appli/static') -@app.route('/', methods=['GET']) +@app.route('/', methods=['GET', 'POST']) def index(): - data_list = [] - title = "Bienvenue sur le site utilisant l'API de league of legends" - api_key = 'RGAPI-492b6dec-600b-4ede-81d8-808d4b2b366a' -#/!\ IMPORTANT la clé change toutes les 24h -# veuillez la recréer sur le site riot games developer + form = RegionForm() # Création d'une instance du formulaire + message = "" # Initialisation du message -#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://euw1.api.riotgames.com/lol/league-exp/v4/entries/RANKED_SOLO_5x5/CHALLENGER/I?page=1&api_key={api_key}") - resp2 = requests.get(api_url2) - player_info = resp2.json() - summoner_ids = [entry['summonerId'] for entry in player_info] - lp = [entry['leaguePoints'] for entry in player_info] + if form.validate_on_submit(): # Vérifie si le formulaire a été soumis et validé + region = form.region.data # Récupération de la région sélectionnée + message = main(region) # Appel de la fonction principale - for i in range(10): - - summoner_id = summoner_ids[i] - api_summonerid = summoner_ids[i] - league_points = lp[i] - #print(f"SummonerId: {summoner_id}") - #cette api utilise le summonerid et retourne le puuid qui sera utile plus tard pour récupérer les pseudos et tag - api_url5 = (f"https://euw1.api.riotgames.com/lol/summoner/v4/summoners/{api_summonerid}?api_key={api_key}") - resp5 = requests.get(api_url5) - player_data = resp5.json() - player_puuid = player_data.get('puuid') - #print(f"puuid = {player_puuid}") - - #cette api utilise le puuid et retourne les pseudos et tag - 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) - data = resp6.json() - Name = data.get('gameName') - Tag = data.get('tagLine') - - print(f"Pseudo: {Name}#{Tag}") - print(f"LeaguePoints: {league_points}") - print("\n") - - return render_template('app/templates/index.html', data_list=data_list) + return render_template("form.html", form=form, message=message) if __name__ == "__main__": app.run(debug=True) \ No newline at end of file diff --git a/appli/fonctions.py b/appli/fonctions.py new file mode 100644 index 0000000..2faf779 --- /dev/null +++ b/appli/fonctions.py @@ -0,0 +1,64 @@ +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 + +def main(region): + + region='euw1' + region2='europe' + api_key = 'RGAPI-c51d09b9-7d0b-47c1-8ef8-02fd68e01279' + #/!\ IMPORTANT la clé change toutes les 24h + # Dernière clé activé : valide jusqu'au 13/02 à 12h26 + # veuillez la recréer sur le site riot games developer + + #voici le code pour changer de région : euw1 (europe ouest), kr (corée), na1 (amérique du nord), br1 (brésil), etc voir la doc de riot... + #region='euw1' + #il faut aussi changer le continent quand on change la région pour la dernière api: 'europe', 'americas', 'asia' + #region2='europe' + + #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) + player_info = resp2.json() + + summoner_ids = [entry['summonerId'] for entry in player_info] + lp = [entry['leaguePoints'] for entry in player_info] + data_list = [] + + for i in range(2): + + summoner_id = summoner_ids[i] + api_summonerid = summoner_ids[i] + league_points = lp[i] + #print(f"SummonerId: {summoner_id}") + #cette api utilise le summonerid et retourne le puuid qui sera utile plus tard pour récupérer les pseudos et tag + api_url5 = (f"https://{region}.api.riotgames.com/lol/summoner/v4/summoners/{api_summonerid}?api_key={api_key}") + resp5 = requests.get(api_url5) + player_data = resp5.json() + player_puuid = player_data.get('puuid') + + + #cette api utilise le puuid et retourne les pseudos et tag + api_url6 = (f"https://{region2}.api.riotgames.com/riot/account/v1/accounts/by-puuid/{player_puuid}?api_key={api_key}") + resp6 = requests.get(api_url6, timeout=0.5) + data = resp6.json() + Name = data.get('gameName') + Tag = data.get('tagLine') + print(f"Pseudo: {Name}#{Tag}") + print(f"LeaguePoints: {league_points}") + print("\n") + + + + #gestion de l'affichage du rang + for index, player in enumerate(data_list, start=1): + player["rang"] = index + + #ajout des données dans data_list + data_list.append({"Name": Name, "Tag": Tag, "league_points": league_points, "rang": i}) + + return render_template('index.html', data_list=data_list) \ No newline at end of file diff --git a/appli/forms.py b/appli/forms.py new file mode 100644 index 0000000..ec01b23 --- /dev/null +++ b/appli/forms.py @@ -0,0 +1,12 @@ + +from flask_wtf import FlaskForm +from wtforms import SelectField, SubmitField +from wtforms.validators import DataRequired + +class RegionForm(FlaskForm): + region = SelectField( + "Choisissez une région :", + choices=[("euw1", "Europe (EUW1)"), ("kr", "Corée (KR)"), ("na1", "Amérique du Nord (NA1)")], + validators=[DataRequired()] + ) + submit = SubmitField("Choisir cette région") diff --git a/appli/models.py b/appli/models.py new file mode 100644 index 0000000..e69de29 diff --git a/appli/routes.py b/appli/routes.py new file mode 100644 index 0000000..af86cba --- /dev/null +++ b/appli/routes.py @@ -0,0 +1,5 @@ +from flask import render_template + +@app.route('/') +def index(): + return render_template('index.html') diff --git a/appli/static/css/styles.css b/appli/static/css/styles.css new file mode 100644 index 0000000..e69de29 diff --git a/appli/static/img/logo.png b/appli/static/img/logo.png new file mode 100644 index 0000000..9e04294 Binary files /dev/null and b/appli/static/img/logo.png differ diff --git a/appli/templates/base.html b/appli/templates/base.html new file mode 100644 index 0000000..0867de7 --- /dev/null +++ b/appli/templates/base.html @@ -0,0 +1,24 @@ + + +
+ + + +europe
+ {# + #} + +
+ Rang : {{ loop.index |safe}}
+ Pseudo : {{ player.Name }}#{{ player.Tag |safe}}
+ League Points : {{ player.league_points |safe}}
+