ajout d'un formulaire simple
This commit is contained in:
parent
cfb78a1342
commit
812c748cd8
58
app.py
58
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)
|
||||
64
appli/fonctions.py
Normal file
64
appli/fonctions.py
Normal file
@ -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)
|
||||
12
appli/forms.py
Normal file
12
appli/forms.py
Normal file
@ -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")
|
||||
0
appli/models.py
Normal file
0
appli/models.py
Normal file
5
appli/routes.py
Normal file
5
appli/routes.py
Normal file
@ -0,0 +1,5 @@
|
||||
from flask import render_template
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
return render_template('index.html')
|
||||
0
appli/static/css/styles.css
Normal file
0
appli/static/css/styles.css
Normal file
BIN
appli/static/img/logo.png
Normal file
BIN
appli/static/img/logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 938 KiB |
24
appli/templates/base.html
Normal file
24
appli/templates/base.html
Normal file
@ -0,0 +1,24 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='styles.css') }}">
|
||||
<title>{% block title %}Mon Site{% endblock %}</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<header>
|
||||
<h1>Bienvenue sur mon site</h1>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
{% block content %}{% endblock %}
|
||||
</main>
|
||||
|
||||
<footer>
|
||||
<p>© 2025 Mon Site. Tous droits réservés.</p>
|
||||
</footer>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
23
appli/templates/form.html
Normal file
23
appli/templates/form.html
Normal file
@ -0,0 +1,23 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Choisir une région</title>
|
||||
</head>
|
||||
<body>
|
||||
<h2>Choisissez une région :</h2>
|
||||
|
||||
<form method="POST">
|
||||
{{ form.hidden_tag() }}
|
||||
|
||||
<p>{{ form.region.label }} {{ form.region() }}</p>
|
||||
|
||||
<p>{{ form.submit() }}</p>
|
||||
</form>
|
||||
|
||||
{% if message %}
|
||||
<h3>{{ message }}</h3>
|
||||
{% endif %}
|
||||
</body>
|
||||
</html>
|
||||
34
appli/templates/index.html
Normal file
34
appli/templates/index.html
Normal file
@ -0,0 +1,34 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="fr">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>api_lol</title>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Classement des 10 meilleurs joueurs</h1>
|
||||
<p>europe</p>
|
||||
{#
|
||||
<!-- marche pas encore
|
||||
<img src="{{ url_for('static', filename='img/logo.png') }}" alt="Logo">
|
||||
<img src="{{ url_for('static', filename='img/logo.png') }}" alt="Logo">
|
||||
-->#}
|
||||
|
||||
</header>
|
||||
<main>
|
||||
{#
|
||||
<!-- <p><strong>{{ resultat }}</strong></p> -->
|
||||
<!-- <a href="{{ url_for('form') }}">Revenir au formulaire</a> -->#}
|
||||
<ul>
|
||||
{% for player in data_list %}
|
||||
<p>
|
||||
<strong>Rang :</strong> {{ loop.index |safe}}<br>
|
||||
<strong>Pseudo :</strong> {{ player.Name }}#{{ player.Tag |safe}}<br>
|
||||
<strong>League Points :</strong> {{ player.league_points |safe}}<br>
|
||||
</p>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
x
Reference in New Issue
Block a user