>>>>>> cef27d06ae6b3d2283ea412da6e09d1c8957c49c // ~ 4 minutes pour ~ 350 jeux $config = parse_ini_file("config.ini"); define('API_KEY', $config["steam_api_key"]); $apikey = $config["steam_api_key"]; /** * retourne un objet json à partir d'une url <<<<<<< HEAD * * @param string $url * l’url retournant un json * @return * - l’objet JSON de l’url * - NULL si l’url ne renvoie pas de json ======= >>>>>>> cef27d06ae6b3d2283ea412da6e09d1c8957c49c */ function getJson($url) { $array = file_get_contents($url); $ret = json_decode($array, true); return $ret; } /** * renvoie le nombre d'heures qu'il faut pour finir un jeu à 100% <<<<<<< HEAD * * @param int $appid * l’id steam du jeu dont il faut récupérer l’heure de complétion sur astat * @return string|null * - le temps qu’il faut pour finir le jeu * - null si le jeu n’a pas de temps renseigné ======= >>>>>>> cef27d06ae6b3d2283ea412da6e09d1c8957c49c */ function getHours($appid) { $tempFile = tempnam(".", "tmp"); $url = "http://astats.astats.nl/astats/Steam_Game_Info.php?AppID="; // 813630"; $html = file_get_contents($url.$appid); file_put_contents($tempFile, $html); $searchFor = 'Hours to 100'; $pattern = preg_quote($searchFor, '/'); $pattern = "/^.*$pattern.*\$/m"; $matches = array(); if(preg_match($pattern, $html, $matches, PREG_OFFSET_CAPTURE)){ $charpos = $matches[0][1]; list($before) = str_split($html, $charpos); $line_number = strlen($before) - strlen(str_replace("\n", "", $before)) + 1; $file = new SplFileObject($tempFile); $file->seek($line_number); $content = $file->current(); $hours = preg_split('/ /', trim($content), 2); unlink($tempFile); return $hours[0]; } else{ unlink($tempFile); return null; } } /** * check si un jeu a des succès <<<<<<< HEAD * * @param int $appid * id du jeu à vérifier * @return bool * true si le jeu à des succès, false sinon ======= >>>>>>> cef27d06ae6b3d2283ea412da6e09d1c8957c49c */ function hasAchievements($appid) { file_get_contents("http://api.steampowered.com/ISteamUserStats/GetGlobalAchievementPercentagesForApp/v0002/?gameid=".$appid); $pattern = preg_quote(' 403 ', '/'); $pattern = "/^.*$pattern.*\$/m"; if(preg_match($pattern, $http_response_header[0])){ return false; } else { return true; } } <<<<<<< HEAD /** * verifie si le jeu est fini à 100% * * @param int $appid * le numéro du jeu à vérifier * @param int $steamid * l’id steam du compte possédant le jeu * @return bool * true si le jeu est fini, false sinon ======= /** * verifie si le jeu est fini à 100% >>>>>>> cef27d06ae6b3d2283ea412da6e09d1c8957c49c */ function checkComplete($appid, $steamid) { $gameInfo = getJson("http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/?key=".API_KEY."&steamid=".$steamid."&appid=" . $appid); $listAchievements = $gameInfo["playerstats"]["achievements"]; foreach ($listAchievements as $key => $value) { if ($value["achieved"] == 0) { return false; } } return true; <<<<<<< HEAD } ======= } >>>>>>> cef27d06ae6b3d2283ea412da6e09d1c8957c49c /** * affiche un tableau HTML contenant les jeux triés par ordre croissant de temps de fin */ if (isset($_POST['steamid'])) { $ret = array(); $steamid = $_POST['steamid']; $url = "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=".API_KEY."&steamid=".$steamid; $listGames = file_get_contents($url); if ($listGames == NULL) { $ret = array('error' => 'User not found.', 'response' => $http_response_header); <<<<<<< HEAD } elseif (empty($listGames["response"])) { $ret = array('error' => 'Private Account.', 'response' => $http_response_header); ======= >>>>>>> cef27d06ae6b3d2283ea412da6e09d1c8957c49c } else { $url = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=".API_KEY."&steamids=".$steamid; $userInformations = getJson($url); $ret["username"] = $userInformations["response"]["players"][0]["personaname"]; $listGamesJson = json_decode($listGames, true); $listGamesJson = $listGamesJson["response"]; $url = "http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/v0001/?key=".API_KEY."&steamid=".$steamid."&appid="; foreach ($listGamesJson["games"] as $key => $value) { $appid = $value["appid"]; if (hasAchievements($appid)) { if (!checkComplete($appid, $steamid)) { $gameName = getJson($url.$appid); $gameName = $gameName["playerstats"]["gameName"]; $hours = getHours($appid); if ($hours == null) { $ret["gameWithoutTime"][] = array('gamename' => $gameName, 'hours' => $hours); } else { $ret["gameWithTime"][] = array('gamename' => $gameName, 'hours' => $hours); } } } } } <<<<<<< HEAD ======= //$fileJson = fopen('result.json', 'w'); //fwrite($fileJson, json_encode($ret)); //fclose($fileJson); >>>>>>> cef27d06ae6b3d2283ea412da6e09d1c8957c49c $retJson = json_encode($ret); $_POST["game"] = $retJson; header('Content-Type: application/json'); echo $retJson; } ?>