ajout : formulaire/logo/css

This commit is contained in:
Mahel Fonteneau 2025-02-13 15:28:28 +01:00
parent 60214f77a7
commit f477cfaf99
12 changed files with 147 additions and 97 deletions

17
app.py
View File

@ -11,16 +11,17 @@ 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', 'POST'])
@app.route("/", methods=["GET", "POST"])
def index():
form = RegionForm() # Création d'une instance du formulaire
message = "" # Initialisation du message
form = RegionForm()
data_list = []
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
return render_template("form.html", form=form, message=message)
if form.validate_on_submit():
region = form.region.data
player_count = form.player_count.data
data_list = main(region, player_count)
return render_template("index.html", form=form, data_list=data_list)
if __name__ == "__main__":
app.run(debug=True)

View File

@ -4,61 +4,55 @@ from wtforms.validators import DataRequired, Regexp
import requests
from flask import Flask, render_template, redirect, url_for, flash, request
def main(region):
def main(region, player_count):
regionapi=region
nbjoueur = player_count
api_key = 'RGAPI-526e580d-b331-4bb0-a343-4f33fa30988c'
data_list = []
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 pas
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
# Dernière clé activé : valide jusqu'au 14/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)
api_url2 = (f"https://{regionapi}.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()
summoner_ids = [entry['summonerId'] for entry in player_info]
lp = [entry['leaguePoints'] for entry in player_info]
data_list = []
for i in range(2):
for i in range(nbjoueur):
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)
api_url5 = (f"https://{regionapi}.api.riotgames.com/lol/summoner/v4/summoners/{api_summonerid}?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
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)
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()
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
#boucle pour l'affichage du rang
i = 1
for player in data_list:
player["rang"] = i
i += 1
#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)
return data_list

View File

@ -1,12 +1,8 @@
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")
region = SelectField('Choix région', choices=[('euw1', 'Europe West'),('eun1', 'Europe Nord Est') , ('na1', 'Amérique du Nord'),('br1','Brésil'), ('kr', 'Corée'), ('jp1','Japon')], validators=[DataRequired()])
player_count = SelectField('Choix nombre de joueurs', choices=[(3, '3 (réponse rapide)'),(5, '5'), (10, '10'), (15, '15 (réponse longue)')], coerce=int, validators=[DataRequired()])
submit = SubmitField('Envoyer')

View File

@ -0,0 +1,48 @@
body {
background-color: #fdffeb;
}
h1{
font-size: 1.5em;
}
table {
margin: auto;
border-collapse: collapse;
}
td {
border: 1px solid rgb(63, 63, 63);
text-align: center;
background-color: azure;
padding-left: 15px;
padding-right: 15px;
padding-top: 5px;
padding-bottom: 5px;
}
th {
border: 1px solid rgb(0, 0, 0);
text-align: center;
background-color: rgb(158, 196, 196);
padding-left: 15px;
padding-right: 15px;
padding-top: 5px;
padding-bottom: 5px;
}
footer {
background-color: #131313;
color: white;
text-align: center;
}
.logosite {
width: 100px;
height: auto;
}
.logo {
width: 50px;
height: auto;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

BIN
appli/static/img/nalogo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -2,14 +2,21 @@
<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') }}">
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/styles.css') }}">
<title>{% block title %}Mon Site{% endblock %}</title>
</head>
<body>
<header>
<h1>Bienvenue sur mon site</h1>
<img src="{{ url_for('static', filename='/img/logo.png') }}" class="logosite">
<img src="{{ url_for('static', filename='/img/europelogo.png') }}" class="logo">
<img src="{{ url_for('static', filename='/img/nalogo.png') }}" class="logo">
<img src="{{ url_for('static', filename='/img/bresillogo.png') }}" class="logo">
<img src="{{ url_for('static', filename='/img/coreelogo.png') }}" class="logo">
<img src="{{ url_for('static', filename='/img/japonlogo.png') }}" class="logo">
<h1>Classement League of Legends</h1>
</header>
<main>
@ -17,7 +24,7 @@
</main>
<footer>
<p>&copy; 2025 Mon Site. Tous droits réservés.</p>
<p>by Mahel - 2025</p>
</footer>
</body>

View File

@ -1,23 +1,20 @@
<!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>
{% extends "base.html" %}
{% block title %}Formulaire{% endblock %}
{% block content %}
<div class="container">
<form method="POST">
{{ form.hidden_tag() }}
<p>{{ form.region.label }} {{ form.region() }}</p>
<p>{{ form.submit() }}</p>
<div>
{{ form.region.label }}<br>
{{ form.region() }}
</div>
<br>
{{ form.submit() }}
</form>
{% if message %}
<h3>{{ message }}</h3>
{% endif %}
</body>
</html>
</div>
{% endblock %}

View File

@ -1,34 +1,41 @@
<!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">
-->#}
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='css/styles.css') }}">
{% extends "base.html" %}
{% block content %}
<form method="POST">
{{ form.hidden_tag() }}
<div>
{{ form.region.label }}<br>
{{ form.region() }}
</div>
<div>
{{ form.player_count.label }}<br>
{{ form.player_count() }}
</div>
<br>
{{ form.submit() }}
</form>
</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>
{% if data_list %}
<h2>classement :</h2>
<table>
<thead>
<tr>
<th>Rang</th>
<th>Pseudo</th>
<th>Tag</th>
<th>Points</th>
</tr>
</thead>
<tbody>
{% for player in data_list %}
<tr>
<td>{{ player.rang }}</td>
<td>{{ player.Name }}</td>
<td>#{{ player.Tag }}</td>
<td>{{ player.league_points }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
{% endblock %}