Created
February 6, 2011 13:33
-
-
Save meg87/813369 to your computer and use it in GitHub Desktop.
PHP class to access PlayStation Network friends list.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
// Disable libxml errors and allow user to fetch error information as needed | |
libxml_use_internal_errors(true); | |
class PSN_friends | |
{ | |
public $log_file, $session, $frineds; | |
function __construct() | |
{ | |
$this->log_file = fopen("log", 'a+'); // Logging purposes only | |
$this->session = curl_init(); // create a new cURL resource | |
} | |
function __destruct() | |
{ | |
curl_close($this->session); // Closes a cURL session and frees all resources. | |
fclose($this->log_file); | |
} | |
function login($username, $password) | |
{ | |
$loginURL = "https://store.playstation.com/external/login.action?returnURL=https://secure.eu.playstation.com/sign-in/confirmation"; | |
curl_setopt_array($this->session,array( | |
CURLOPT_POST => 1, | |
CURLOPT_POSTFIELDS => array("loginName"=>$username, "password"=>$password), // The full data to post in a HTTP "POST" operation. | |
CURLOPT_URL => $loginURL, | |
CURLOPT_SSL_VERIFYPEER => FALSE, | |
CURLOPT_SSL_VERIFYHOST => FALSE, | |
CURLOPT_RETURNTRANSFER => 1, | |
//CURLOPT_HTTPGET => 1, | |
CURLOPT_COOKIEFILE => realpath('cookie.txt'), | |
CURLOPT_COOKIEJAR => realpath('cookie.txt'), | |
CURLOPT_VERBOSE => 1, | |
CURLOPT_STDERR => $this->log_file | |
)); | |
return curl_exec($this->session); | |
} | |
function refresh() | |
{ | |
$dataURL = "https://secure.eu.playstation.com/ajax/mypsn/friend/presence"; | |
// set cURL options | |
curl_setopt ($this->session, CURLOPT_URL, $dataURL); // The URL to fetch | |
curl_setopt ($this->session, CURLOPT_POST, 0); // regular HTTP POST | |
curl_setopt ($this->session, CURLOPT_RETURNTRANSFER, 1); // return the transfer as a string of the return value of curl_exec() instead of outputting it out directly | |
curl_setopt ($this->session, CURLOPT_FOLLOWLOCATION, 1); // follow any "Location: " header that the server sends as part of the HTTP header | |
curl_setopt ($this->session, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.9.2.12) Gecko/20101026 Firefox/3.6.12'); // The contents of the "User-Agent: " header to be used in a HTTP request. | |
curl_setopt ($this->session, CURLOPT_SSL_VERIFYPEER, 0); // stop cURL from verifying the peer's certificate. | |
curl_setopt ($this->session, CURLOPT_REFERER, $dataURL); // The contents of the "Referer: " header to be used in a HTTP request. | |
curl_setopt ($this->session, CURLOPT_VERBOSE, 1); // output verbose information. | |
curl_setopt ($this->session, CURLOPT_STDERR, $this->log_file); // An alternative location to output errors to instead of STDERR. | |
curl_setopt ($this->session, CURLOPT_COOKIEFILE, realpath('cookie')); // The name of the file containing the cookie data. | |
$response = curl_exec($this->session); // Perform a cURL session | |
$this->frineds = simplexml_load_string($response); | |
return $this->frineds; | |
} | |
function get_list($status = null) | |
{ | |
// status: offline, online, online-away, online-ingame | |
$friends_list = array(); | |
foreach($this->frineds->psn_friend as $friend) | |
if (isset($status)) | |
{ | |
if($friend->current_presence == $status) | |
array_push($friends_list, $friend->onlineid); | |
} | |
else | |
array_push($friends_list, $friend->onlineid); | |
return $friends_list; | |
} | |
function get_online() | |
{ | |
$online_list = array(); | |
foreach($this->frineds->psn_friend as $friend) | |
if (substr($friend->current_presence, 0, 6) == "online") | |
array_push($online_list, $friend->onlineid); | |
return $online_list; | |
} | |
function get_friend($username, $info = null) | |
{ | |
// info: current_presence, current_game, current_avatar, comment, trophy | |
foreach($this->frineds->psn_friend as $friend) | |
if ($friend->onlineid == $username) | |
if (isset($info)) | |
return $friend->$info; | |
else | |
return $friend; | |
else false; | |
} | |
} | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment