BattlelogApi


Language PHP
Version 1.3
Created October 2, 2011
Updated October 27, 2011
License Creative Commons Attribution 3.0
Download battlelogapi-1.3.zip
battlelogapi-1.2.1-pre.zip
battlelogapi-1.2-pre.zip
battlelogapi-1.1-beta.zip
battlelogapi-1.0-beta.zip


About

Note: You are required to use an EA account to access Battlelog. Because of this, you must provide your EA account and password in order to pull down soldier information. EA *may* notice your account pulling user data and take action. I am not responsible for the use or misuse of this code. This code is provided as-is with no support or warranty. (Hint: Try caching results…)

BattlelogApi is another entry into my long list of website scrapers. Right now, it serves as a PHP API to Battlefield 3′s soldier stats. Unlike most of my previous scrapers, however, I have no intention of using this scraper in other projects. I may create a forum signature generator using this API, but currently this API only exists because I was bored one Sunday afternoon.

That being said, I do plan on updating this API as long as I continue to play Battlefield 3.


Changelog

  • v1.3 OCTOBER 26, 2011
    • Added the BF3Server class and related server functionality
    • Added ribbons, medals and user information to BF3Soldier
    • Added the BattlelogLang class to get the actual names for ribbons and medals
      • Note: Language functionality is experimental. By default, a cached version of the language file will be loaded. However, you can feed it ‘en_US’ to get a fresh copy.
    • Added lazy loading to data containers
    • Lots of code refactoring to make future additions easier
    • Cleaned up cURL code
  • v1.2.1-pre OCTOBER 24, 2011
    • Compatibility fixes involving ternary operators and DateTime objects for PHP versions <5.3
  • v1.2-pre OCTOBER 24, 2011
    • This release is in preparation for the retail release of Battlefield 3
    • Fixed issues with authenticating with the release Battlelog servers
    • Fixed CDN image links
    • Null integer and float values now default to 0 instead of null
  • v1.1-beta OCTOBER 7, 2011
    • Added a getFriends() method to BF3Soldier
    • Removed the redundant getRankImage() method
  • v1.0-beta OCTOBER 2, 2011
    • Initial release

Usage

As noted above, soldier stats are behind a login. You must provide a valid EA username and password in order to connect and download soldier stats.

In order to run this script, you need three things: PHP with cURL, a valid EA account and a desired soldier ID. Soldier IDs can be found in the URL of a soldier’s stats page.

After downloading the API, create and run the following example script. If everything worked, you should get Kymeira.

include('BattlelogApi.inc.php');

$battlelog = new BattlelogApi('email@address', 'password');
$soldier = $battlelog->getBF3Soldier('180351032');
echo $soldier['name'];

Documentation

Incomplete.

BF3Soldier

$soldier = $battlelog->getBF3Soldier('180351032');
// All array access returns are primitives unless otherwise noted
$soldier['id'];
$soldier['name'];
$soldier['created']; // DateTime object
$soldier['timePlayed'];
$soldier['rank'];
$soldier['rankImage']; // Array
$soldier['pointsNeeded'];
$soldier['kills'];
$soldier['killAssists'];
$soldier['scorePerMinute'];
$soldier['score'];
$soldier['totalScore'];
$soldier['combatScore'];
$soldier['deaths'];
$soldier['kdRatio'];
$soldier['accuracy'];
$soldier['longestHeadshot'];
$soldier['roundsPlayed'];
$soldier['roundWins'];
$soldier['roundLosses'];
$soldier['kits']; // Array
$soldier['topWeapons']; // Array -- ONLY available for PC soldiers
$soldier['friends']; // Array -- Only useful for PC soldiers?
$soldier['ribbons']; // Array
$soldier['medals']; // Array

// The following will print out all of the above
var_dump($soldier->debugData());

BF3Server

$server = $battlelog->getBF3Server('4c1bb2cc-ec6a-472a-85bb-af80fce8dff4');
// All array access returns are primitives unless otherwise noted
$server['id'];
$server['guid'];
$server['name'];
$server['ip'];
$server['port'];
$server['numPlayers'];
$server['maxPlayers'];
$server['numQueued'];
$server['passworded'];
$server['ranked'];
$server['punkbuster'];
$server['map'];
$server['preset'];
$server['settings']['showHud'];
$server['settings']['autobalance'];
$server['settings']['bulletDamage'];
$server['settings']['showMinimap'];
$server['settings']['thirdPersonVehicleCam'];
$server['settings']['vehicles'];
$server['settings']['healthRegen'];
$server['settings']['tksBeforeKick'];
$server['settings']['killCam'];
$server['settings']['minimapSpotting'];
$server['settings']['playerHealth'];
$server['settings']['downTime'];
$server['settings']['friendlyFire'];
$server['settings']['3dSpotting'];
$server['settings']['showEnemyNameTags'];
$server['settings']['idleKickSeconds'];
$server['settings']['kicksToBan'];
$server['settings']['respawnTime'];
$server['settings']['squadLeaderSpawnOnly'];
$server['mapRotation']; // Array
$server['players']; // Array

// The following will print out all of the above
var_dump($server->debugData());

BattlelogUtils

// function getRankImage($rank, $size = 'small')
$rankImage = BattlelogUtils::getRankImage(22, 'medium');

// function getKitImage($kit, $team = 'us', $size = 'medium')
$kitImage = BattlelogUtils::getKitImage('assault', 'ru', 'large');

// getRibbonImage($id, $size = 'medium')
$ribbonImage = BattlelogUtils::getRibbonImage(7, 'large');

// getMedalImage($id, $size = 'medium')
$medalImage = BattlelogUtils::getMedalImage(15, 'large');

// getItemImage($name, $size = 'medium')
$itemImage = BattlelogUtils::getItemImage('SV98', 'tiny');