Som jag beskrivit tidigare har jag ju varit småsugen på att skapa lite topplistor över de URL:er som har fått mest Facebook-Likes på Driver Database. Är det något som egosurfande racerförare gillar så är det att se sitt namn längst upp i topplistor – om de då kan komma dit genom att spamma sina vänner med mina länkar är ju inte jag direkt ledsen.
Så vitt jag förstått verkar det inte gå att göra detta på ett någorlunda smidigt automatiskt sätt, trots att ju all denna statistik ligger och gottar sig på Facebooks servrar. Man kan ju manuellt gå in på Insights (om man kopplat sin sajt till det) och se lite smaskig information om vad ens besökare har pysslat med, men poängen är inte att se det själv utan att visa det för webbsidesbesökaren.
Facebook har en alldeles egen SQL-variant FQL som man kan använda sig av för att få fram lite info från deras servrar, men den verkar lite väl begränsande för sammanhanget (ingen LIKE, lite ironiskt).
Något annat man upptäcker när man kikar igenom dokumentationen och några av de få exempel som finns på Facebook är att det verkar gå att göra allt på minst tjugo olika sätt.
Det går att kolla en URL i taget via deras API och få lite information att använda sig av och så ser min nuvarande lösning ut. Eftersom varje Like-knapp man lägger upp på sina sidor också hämtar info från Facebooks servrar verkar de inte vara så kinkiga i hur många requests en webbplats skickar till dem. Därför valde jag att skicka mitt request varje gång en profilsida laddas, vi snackar några tusen extra request om dagen – borde inte vara så farligt.
Nåja. Här kommer en liten kodsnutt i PHP som sköter biffen:
$starturl = "http://www.exempel.se/hur-många-likes-har-den-här";
$url = "http://api.facebook.com/restserver.php?method=links.getStats&urls=".urlencode($starturl);
$xml = file_get_contents($url);
$xml = simplexml_load_string($xml);
$xml = file_get_contents($url);
$totalt = $xml->link_stat->total_count;
Tjoflöjt! Nu har man en variabel som innehåller total_count-värdet, det vill säga totalen av likes, kommentarer och delningar. Man kan också använda sig av like_count, share_count och comment_count om man vill, men till det jag ska använda det till är det bäst med totalen.
Sedan pluppar jag helt enkelt in detta i databasen och söta små topplistor kan skapas!