1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
| <?php
function fetch_data($urls, $token) {
$multi = curl_multi_init();
$curl_array = array();
$result = array();
foreach ($urls as $i => $url) {
$curl_array[$i] = curl_init($url);
$headr = array();
$headr[] = "Accept: application/json";
$headr[] = "Authorization: Bearer " . $token;
curl_setopt($curl_array[$i], CURLOPT_HTTPHEADER, $headr);
curl_setopt($curl_array[$i], CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl_array[$i], CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_array[$i], CURLOPT_RETURNTRANSFER, 1);
curl_multi_add_handle($multi, $curl_array[$i]);
}
$running = null;
do {
curl_multi_exec($multi, $running);
} while ($running > 0);
foreach ($urls as $i => $url) {
$result[$i] = json_decode(curl_multi_getcontent($curl_array[$i]), true);
curl_multi_remove_handle($multi, $curl_array[$i]);
}
curl_multi_close($multi);
return $result;
}
$token = "";
// Configuration de la base de données
$servername = "localhost";
$username = "";
$password = "";
$dbname = "";
// Créer une connexion à la base de données
$conn = new mysqli($servername, $username, $password, $dbname);
// Vérifier la connexion
if ($conn->connect_error) {
die("La connexion à la base de données a échoué : " . $conn->connect_error);
}
// URL de base pour obtenir les données des joueurs
$base_url = 'https://api.clashroyale.com/v1/players/';
// Liste des tags des clans
$clan_tags = array('#clantag1', '#clantag2', '#clantag3', '#clantag4');
// Liste des tags des joueurs des 4 clans
$player_tags = array();
// Boucle à travers chaque clan pour obtenir les tags des joueurs
foreach ($clan_tags as $clan_tag) {
// Construire l'URL complète pour obtenir les données du clan
$clan_url = 'https://api.clashroyale.com/v1/clans/' . urlencode($clan_tag);
// Effectuer la requête Curl pour obtenir les données du clan
$clan_data = fetch_data(array($clan_url), $token);
// Assurez-vous que les données du clan sont valides
if (!empty($clan_data) && isset($clan_data[0]['memberList'])) {
$member_list = $clan_data[0]['memberList'];
// Boucle à travers la liste des membres pour obtenir les tags des joueurs
foreach ($member_list as $member) {
$player_tag = $member['tag'];
$player_tags[] = $player_tag;
}
}
}
// Boucle à travers chaque joueur
foreach ($player_tags as $player_tag) {
// Construire l'URL complète pour chaque joueur
$player_url = $base_url . urlencode($player_tag);
// Effectuer la requête Curl pour obtenir les données du joueur
$player_data = fetch_data(array($player_url), $token);
// Assurez-vous que les données du joueur sont valides
if (!empty($player_data) && isset($player_data[0])) {
$player_info = $player_data[0];
// Vérifiez si la clé "bestPathOfLegendSeasonResult" existe
if (isset($player_info['bestPathOfLegendSeasonResult'])) {
$bestPathOfLegendSeasonResult = $player_info['bestPathOfLegendSeasonResult'];
// Vérifiez si la clé "trophies" existe et que les trophées sont différents de zéro
if (isset($bestPathOfLegendSeasonResult['trophies']) && $bestPathOfLegendSeasonResult['trophies'] != 0) {
$new_trophies = $bestPathOfLegendSeasonResult['trophies'];
// Vérifiez d'abord si le joueur existe déjà en base de données
$player_name = isset($player_info['name']) ? mysqli_real_escape_string($conn, $player_info['name']) : 'N/A';
$check_sql = "SELECT * FROM joueurs WHERE nom = '$player_name'";
$check_result = $conn->query($check_sql);
if ($check_result->num_rows > 0) {
// Le joueur existe déjà en base de données, vérifiez si les trophées ont changé
$existing_player = $check_result->fetch_assoc();
$existing_trophies = $existing_player['trophées'];
if ($existing_trophies != $new_trophies) {
// Les trophées ont changé, mettez à jour la valeur en base de données
$update_sql = "UPDATE joueurs SET trophées = '$new_trophies' WHERE nom = '$player_name'";
if ($conn->query($update_sql) === FALSE) {
echo "Erreur lors de la mise à jour des données du joueur : " . $conn->error;
}
}
} else {
// Le joueur n'existe pas encore en base de données, insérez-le
$insert_sql = "INSERT INTO joueurs (nom, trophées) VALUES ('$player_name', '" . mysqli_real_escape_string($conn, $new_trophies) . "')";
if ($conn->query($insert_sql) === FALSE) {
echo "Erreur lors de l'insertion des données du joueur : " . $conn->error;
}
}
}
} else {
// Le joueur n'a pas de données de trophées ou elles sont à zéro
// Vous pouvez ajouter une logique ici pour gérer ces cas, si nécessaire
}
}
}
// Suppression des joueurs qui ne sont plus membres d'un clan
$delete_sql = "DELETE FROM joueurs WHERE nom NOT IN (SELECT DISTINCT nom FROM joueurs)";
if ($conn->query($delete_sql) === FALSE) {
echo "Erreur lors de la suppression des joueurs non membres de clans : " . $conn->error;
}
// Fermer la connexion à la base de données
$conn->close();
?> |
Partager