如何更新游戏历史数据库? Bungie Halo Reach API
嗯,我正在使用 Bungie 的 Halo Reach API。现在我的代码将获取特定玩家的所有游戏 ID。
我想将游戏 ID 存储在 mysql 数据库中,然后将来如果玩家想要更新数据库,脚本将仅获取数据库中尚未存在的游戏 ID。
脚本获取最新页面$iPage = '0';
然后,如果 HasMorePages
等于 true,它将获取下一页 $iPage++
,直到 HasMorePages
为 false。 每页提供 25 个游戏 ID,最后一页可能更少。
所以基本上我想获取脚本首次运行时不存在的游戏 ID,而不对 API 进行不必要的调用。我怎样才能做到这一点?
<?php
include_once('sql.php'); // MySQL Connection
include_once('api.php'); // API unique identifer string
$gamertag = 'jam1efoster'; // Gamertag
$variant = 'Unknown'; // Unknown gets all game variants
$iPage = '0'; // 0 is the most recent page
while(!$endPages == true){
$GetGameHistory = "http://www.bungie.net/api/reach/reachapijson.svc/player/gamehistory/".$apiKey."/".rawurlencode(strtolower($gamertag))."/".$variant."/".$iPage;
$output = file_get_contents($GetGameHistory);
$obj = json_decode($output);
//echo $output;
$mPages = $obj->HasMorePages;
if($mPages == false){$endPages = true;}
foreach($obj->RecentGames as $recentgames) {
$gameId = $recentgames->GameId;
//echo $gameId.'<br />';
}
//echo $iPage.'<br />';
$iPage++;
}
?>
Well, I'm working with Bungie's Halo Reach API. Right now my code will get all the game ids for a particular player.
I want to store the game ids in a mysql database and then in the future if a player wants to update the database the script will only get the game ids that aren't already in the database.
The script gets the most recent page $iPage = '0';
Then if HasMorePages
is equal to true it gets the next page $iPage++
until HasMorePages
is false.
Each page gives 25 game ids the last page may have less.
So basically I want to get game ids that weren't there when the script was first run, without making unnecessary calls to the API. How could I do that?
<?php
include_once('sql.php'); // MySQL Connection
include_once('api.php'); // API unique identifer string
$gamertag = 'jam1efoster'; // Gamertag
$variant = 'Unknown'; // Unknown gets all game variants
$iPage = '0'; // 0 is the most recent page
while(!$endPages == true){
$GetGameHistory = "http://www.bungie.net/api/reach/reachapijson.svc/player/gamehistory/".$apiKey."/".rawurlencode(strtolower($gamertag))."/".$variant."/".$iPage;
$output = file_get_contents($GetGameHistory);
$obj = json_decode($output);
//echo $output;
$mPages = $obj->HasMorePages;
if($mPages == false){$endPages = true;}
foreach($obj->RecentGames as $recentgames) {
$gameId = $recentgames->GameId;
//echo $gameId.'<br />';
}
//echo $iPage.'<br />';
$iPage++;
}
?>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
考虑到我理解你想要做什么以及你要问什么。试试这个代码:
我不熟悉 Bungie 可能将游戏推送到 api 的方法。如果已订购,请发表评论。我会修改我的代码。如果他们是任意的,那就运气不好了。
Considering I understand what you're trying to do and what you're asking. Try this code:
I'm unfamiliar with the method bungie might be pushing the games to the api. If they are ordered, comment. And I'll revise my code. If they are arbitrary, kind of tough luck.