Anuncios Google

Bloque PHP para mostrar informacion de tu PSNID

Me he tirado muchos meses obligado a deshacerme de cualquier aparato que fuera "a pilas" por razones personales. Ello me ha obligado a
potenciar otra de mis aficiones, la lectura en papel. No se si alguno de vosotros vio anoche la pelicula "Cadena perpetua", personalmente me
senti muy identificado cuando hablaban de que la mayor preocupación de un preso es la de mantener la cabeza ocupada.

Hace meses me inquietaba como podia mostrar informacion de un Gamertag o PSNID en un blog, sin tener que mostrar la tipica foto con la firma sobre la que tenemos poco o ningun control. Y vi que los amigos de trofeosps3.com.ar habian montado un servicio SOAP en formato XML para distribuir dicha informacion. (Clavadito al que usa Duncan Mackenzie para los gamertags de Xbox. En otra entrada os hablare de el)

Este tiempo lo he destinado mayormente a la lectura de varios libros que me interesaban, aviso que de lectura lijera no tenian nada.

El primero es el unico en castellano y me ha resultado indispensable para conocer internamente como estructurar y generar codigo PHP de forma correcta. siempre me habia dedicado mas a modificar cosillas que ya estaban echas. Los dos siguientes son puro Drupal y en ingles, si bien el primero es especifico para Drupal 5 (lo cual me decepciono ligeramente) me han ayudado ambos a conocer mucho mejor como funciona y se estructura internamente Drupal. Aunque se lo he comentado alguna vez y mis reticencias iniciales, sigo pensando que jamas le he dado suficientemente las gracias a Niteman por descubrirme este CMS.

Los que no me conocian ya deben estar pensando, como se enrolla este tio. Sabed que es habitual en mi. xDDDDD No me doy cuenta y me lio mas de la cuenta siempre. (Nite te dejare estirarme de las orejas y lo que no son orejas cuando nos veamos) por escribir aqui antes unas lineas en vez de enviarte el mail de rigor que prometi ayer.

No os imaginais lo curioso que resulta estructurar un codigo PHP sobre papel sin probar que funciona. Y mira por donde he testeado y parece que funciona bien y todo. (almenos como bloque de Drupal ;) Asi pues, que mejor sitio de publicación que Scenebeta¿? He intentado comentar lo mejor que he podido el codigo, se que puede contener errores que espero con la ayuda de todos los interesados podamos depurar y estructurar mejor el codigo.

El código para su uso no tiene mas complicacion que el de poner tu PSNiD en la variable $psnid de la linea 2, elresto lo hace todo solito. Aquellos que quieran personalizarse el bloque en cuestion, con unos pocos conocimientos html y php podra adaptarselo en pocos minutos, y obviamente estoy abierto a propuestas y criticas constructivas al respecto.

<?php
// Variable PSNID - Poner el PSNID entre las comillas
$psnid = "PON AQUI TU PSNID";
// Lectura del archivo XML - Detalles globales de PSNID
$url0 = "http://www.trofeosps3.com.ar/API/Psn.asmx/getPSNID?sPSNID=$psnid";
$contenido_xml0 = "";
if($d0 = fopen($url0, "r")){
while ($aux0= fgets($d0, 1024)){
$contenido_xml0 .= $aux0;
}
fclose($d0);
}else{
echo "No se pudo abrir el XML";
}
$xml0 = simplexml_load_string($contenido_xml0);
// Barra de progreso con CSS
echo '
<style type="text/css">
      .ProgressBar     { width: 16em; border: 1px solid black; background: #eef; height: 1.60em; display: block; }
      .ProgressBarText { position: absolute; font-size: 1em; width: 16em; text-align: center; font-weight: normal; }
      .ProgressBarFill { height: 100%; background: #6B8E23; display: block; overflow: visible; }
</style>
<div align="center">
<img src="' .$xml0->AvatarSmall. '" align="middle"> <b>'.$xml0->ID.'</b>  Nivel ' .$xml0->Level. '  
<img src="/sites/all/image/tplatino.gif"> '.$xml0->Trophies->Platinum.' <img src="/sites/all/image/toro.gif"> '.$xml0->Trophies->Gold.' <img src="/sites/all/image/tplata.gif"> '.$xml0->Trophies->Silver.'  <img src="/sites/all/image/tbronce.gif"> '.$xml0->Trophies->Bronze.' 
 
<div class="ProgressBar" align="left">
      <div class="ProgressBarText">Proximo nivel '.$xml0->Progress.'%</div>
      <div class="ProgressBarFill" style="width: '.$xml0->Progress.'%;"></div>
</div>
<br > <b>Ultimos juegos</b></div>';
// Lectura del archivo XML - Detalles de trofeos de juegos
$url = "http://www.trofeosps3.com.ar/API/Psn.asmx/getGames?sPSNID=$psnid";
$contenido_xml = "";
if($d = fopen($url, "r")){
while ($aux= fgets($d, 1024)){
$contenido_xml .= $aux;
}
fclose($d);
}else{
echo "No se pudo abrir el XML";
}
$xml = simplexml_load_string($contenido_xml);
// Bucle de juegos
for ($b=0; $b<3 ; $b++)
{
$gameid = $xml->Game[$b]->Id ;
echo '<table align="center" border="0"><tr><td><div align="center"><a href="http://es.playstation.com/sign-in/"  title="'.$xml->Game[$b]->Title.'" target="blank"><img src="' .$xml->Game[$b]->Image. '" width="160"></a></div></td>
</tr>';
echo ' </table>
<div align="center">
<img src="/sites/all/image/tplatino.gif"> '.$xml->Game[$b]->TrophiesCount->Platinum.' <img src="/sites/all/image/toro.gif"> '.$xml->Game[$b]->TrophiesCount->Gold.' <img src="/sites/all/image/tplata.gif"> '.$xml->Game[$b]->TrophiesCount->Silver.' <img src="/sites/all/image/tbronce.gif"> '.$xml->Game[$b]->TrophiesCount->Bronze.'
<div class="ProgressBar" align="left">
      <div class="ProgressBarText">'.$xml->Game[$b]->Progress.'% completado</div>
      <div class="ProgressBarFill" style="width: '.$xml->Game[$b]->Progress.'%;"></div>
</div></div><tr> ';
// Lectura del archivo XML - Detalles de trofeos logrados
$url2 = "http://www.trofeosps3.com.ar/API/Psn.asmx/getTrophies?sPSNID=$psnid&sGameID=$gameid";
$contenido_xml2 = "";
if($d2 = fopen($url2, "r")){
while ($aux2= fgets($d2, 1024)){
$contenido_xml2 .= $aux2;
}
fclose($d2);
}else{
echo "No se pudo abrir el XML";
}
$xml2 = simplexml_load_string($contenido_xml2);
echo'<table align="center">';
for ($e=0; $e<4 ; $e++)
{
echo '<td><div align="center"><a href="http://es.playstation.com/sign-in/"  title="'.$xml2->Trophy[$e]->Title.'" target="blank"><img src="' .$xml2->Trophy[$e]->Image. '" width="40"></a></div></td>';
}
echo'</table>';
}
?>

Se que no he respetado las tabulaciones ni varias de las recomendaciones que se deben tener en cuenta a la hora de generar codigo, prometo revisarlo poco a poco para que quede limpio y pulido. Basicamente lo que hace el codigo es leer 3 archivos XML distintos, interpretarlos y formatear en html la información para mostrarlo en una web. Ya aviso que una vez puesto en un blog o web, se realentiza la carga de la web, por lo que recomeindo cachear el bloque de algun modo. En ningun momento necesita interactuar con la base de datos que esteis usando en vuestra web/blog y esta ideado para funcionar por si solito.

Os dejo un ejemplo al final de como se mostraria el bloque, con el PSNiD de un amigo, espero que no se mosquee por hacerlo publico.

Doble click en la imagen para verlo a tamaño completo. Obviamente, sois libres de usar y modificar el codigo como os venga en gana. Cumpliendo con la ideologia de Scenebeta, en que aqui aprendemos todos. ;)

Podeis encontrar mas info de que tags xml se pueden usar, en la siguiente direccion.

http://www.trofeosps3.com.ar/API/Psn.asmx


4.333335
Tu voto: Ninguno Votos totales: 4.3 (9 votos)

Anuncios Google

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de pspgorrister

Consejo

usa comillas dobles para el eco, las simples no "parsean" (no me acuerdo del palabro ahora) las variables, y así no tienes que estar cerrando comillas y poniendo puntos. Además en html da igual usar unas u otras, de hecho, si se hace con PHP es mejor las simples.  Ejemplo:

 

echo "<td><div align='center'>
       <a href='http://es.playstation.com/sign-in/' 
        mce_href='http://es.playstation.com/sign-in/' title='$xml2->Trophy[$e]->Title' target='blank'><img src='$xml2->Trophy[$e]->Image' (..)";

Por cierto, el "<div align='center'>" daña la vista. ¡que horror!. ¿Para qué están las clases de los estilos?. xDDD


LuaDiE: Crea en Lua sin teclear código. Compatible HM7, HMv2, LuaPlayer, LuaDEV y PGE.

Imagen de Miquel Carol

Gracias gorrister

Se agradece el comentario, me he limitado a usar las comillas como las habia visto en los ejemplos. Modificare el coodigo para hacerte caso cuando lo resvise para efectuar las tabulaciones.

Los divs..... La idea es que la mayoria se limite a cambiar la variable $psnid por su id de ps3 y lo pegue en un bloque para que funcione. Personalmente me duele mas ver una clase de estilo dentro del codigo para la barra de progreso. Para lo que requeria era el modo mas simple y efectivo. Y ya me ha echado "bulla" tanto Niteman como el Tiny MCE al formatear el codigo, por meter una clase dentro del eco.


Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.