<?php $username="vivomikix"; echo "Cerco: ".$username."<br/><br/>Friends1<br/>"; //Get level 1 friends aka user friends $friends1=getTwitterFriends($username); //Get level 2 friends aka friends of friends print_r($friends1); echo "<br/><br/>Friends2<br/>"; $friends2=array(); foreach($friends1 as $f){ $friends2[$f]=getTwitterFriends($f); } print_r($friends2); //Get level 3 friends aka go get a coffee $friends3=array(); foreach($friends2 as $a){ for($i=0; $i<sizeof($a); $i++){ $friends3[$a[$i]]=getTwitterFriends($a[$i]); } } echo "<br/><br/>Friends3<br/>"; print_r($friends3); //Create XML file for graph FORMATO: // <node id="n1"/> // <edge id="e1" source="n0" target="n1"/> $VBOF='<?xml version="1.0" encoding="UTF-8"?><gexf xmlns="http://www.gexf.net/1.2draft" version="1.2"><meta lastmodifieddate="2009-03-20"><creator>mikinum7</creator><description>Your Twitter friends graph</description></meta><graph mode="static" defaultedgetype="directed">'; $VEOF='</graph></gexf>'; $xmlNodesBOF="<nodes>"; $xmlNodesEOF="</nodes>"; $xmlEdgesBOF="<edges>"; $xmlEdgesEOF="</edges>"; $xmlFriends1=""; foreach($friends1 as $f){ $xmlFriends1.="<node id=\"".$f."\" label=\"".$f."\"/>"; } $xmlFriends2=""; foreach($friends2 as $a){ $xmlFriends2.=createXMLNodes($a); } $xmlFriends3=""; foreach($friends3 as $a){ $xmlFriends3.=createXMLNodes($a); } $xmlNodes=$xmlFriends1.$xmlFriends2.$xmlFriends3; $xmlEdges=""; $numEdge=0; //creo archi primo livello foreach($friends1 as $f){ $xmlEdges.="<edge id=\"".$numEdge."\" source=\"".$username."\" target=\"".$f."\"/>"; $numEdge++; } //creo archi secondo livello foreach($friends1 as $f){ foreach($friends2[$f] as $f2){ $xmlEdges.="<edge id=\"".$numEdge."\" source=\"".$f."\" target=\"".$f2."\"/>"; $numEdge++; } } //create level 3 edges foreach($friends1 as $f){ foreach($friends2[$f] as $f2){ foreach($friends3[$f2] as $f3){ $xmlEdges.="<edge id=\"".$numEdge."\" source=\"".$f2."\" target=\"".$f3."\"/>"; $numEdge++; } } } $xml=$VBOF.$xmlNodesBOF.$xmlNodes.$xmlNodesEOF.$xmlEdgesBOF.$xmlEdges.$xmlEdgesEOF.$VEOF; $write_file = fopen("grafo.gexf","w"); fwrite($write_file,$xml); fclose($write_file); function getTwitterFriends($user){ $jsonurl = 'http://api.twitter.com/1/statuses/friends/'.$user.'.json'; $json = @file_get_contents($jsonurl,0,null,null); if($json === false){ echo 'badrequest for '.$user.'<br/>'; //exit; return null; } $json_output = json_decode($json); $friends=array(); for($i=0; $i<sizeof($json_output); $i++){ $friends[$i]=$json_output[$i]->{'screen_name'}; } return $friends; } function createXMLNodes($array){ $nodiArray=""; //foreach($array as $a){ for($i=0; $i<sizeof($a); $i++){ $nodiArray.="<node id=\"".$a[$i]."\" label=\"".$a[$i]."\"/>"; } //} return $nodiArray; } ?>