Rättviseförmedlingens pressbild del ett: jakten på profilbilderna

2 March 2011

Uppdaterat! Här finns del två: Mosaiken tar form!

Rättviseförmedlingen

Stort grattis Rättviseförmedlingen på ettårsdagen!

En fredag för några veckor sedan efterfrågade den eminenta Lina Thomsgård förslag på hur man kan fotografera 22 000 (nu 23 000!) Rättviseförmedlare, till en pressbild. Glada förslag ramlade in, såsom att alla skulle maila en bild på sig själva till Lina, eller lägga en bild i en Dropbox. Själv såg jag framför mig många människor på Brunns IP (det var i Brunn jag gick i låg- och mellanstadiet) och funderade på hur man skulle få tag på en helikopter.

Lyckligtvis försökte jag inte förverkliga den visionen, utan insåg att Facebook redan löst det stora problemet, nämligen det att få tag på en bild på var och en. De finns ju där, allihop! Jag skrev till Lina och sa att det här ska vi nog kunna ordna, jag skulle titta på det redan senare samma eftermiddag. Ett typiskt bra fredagseftermiddagsprojekt. Det är nämligen så att Facebook har ett någorlunda heltäckande API - de tillgängliggör den information de har även i format som lämpar sig för program att konsumera. Min profil, t ex, ser ut såhär:

Jag gav mig ut i den djungel som är Facebooks API (det är som sagt hyfsat heltäckande - tyvärr är det också statt i ständig förändring och de erbjuder dessutom ett antal olika API:er, eller sätt att komma åt data) på jakt efter en lista över Rättviseförmedlare. Läs mer om Facebooks API här! Har man tillgång till en Facebookanvändares id-nummer (eller användarnamn) kan man nämligen hitta dennes profilbild. Här finns min: http://graph.facebook.com/yesbabyyes/picture. Om jag hittade listan över Rättviseförmedlare, kunde jag ladda hem profilbilderna, och kunde jag göra det skulle jag kunna skapa en fantastisk pressbild åt Rättviseförmedlingen! Så gick mina tankar.

Den information Facebook har om alla medlemmar, sidor, grupper, likes och så vidare kallar de för en graf. Varje Facebookmedlem, varje sida och så vidare är ett objekt i grafen, och mellan objekten finns relationer, som Facebook kallar "connections". Jag var ute efter alla relationer av typen "gillar" mellan ca 22 000 profiler och sidan "Rättviseförmedlingen". Såhär ser Rättviseförmedlingen ut i Facebooks API:

Längst ner ser ni "likes". Där hade jag, något naivt kan man tycka, hoppats att det skulle finnas en lista med Rättviseförmedlare. Att det inte bara skulle vara en siffra, hur många som gillar Rättviseförmedlingen, utan att det skulle vara en lista med allihop. Det var det alltså inte. Det står dock i dokumentationen av API:et att "You can examine the connections between objects using the URL structure https://graph.facebook.com/ID/CONNECTION_TYPE." Med andra ord borde jag hitta alla Rättviseförmedlare på https://graph.facebook.com/rattviseformedlingen/likes. Jag tittade efter (gör det du också!), och hittade:

Suck. Facebook vill tydligen inte att jag ska få den här listan över användare. Men skam den som ger sig! Det slog mig att Facebook erbjuder ytterligare ett sätt att få tillgång till informationen om objekt och relationer i sin graf, FQL. Det är en förenklad version av SQL, ett språk som används för att ställa frågor till databaser. Det är lite som kortspelet "Finns i sjön". Jag ville ställa frågan "ge mig alla användare som gillar Rättviseförmedlingen", eller annorlunda uttryckt: SELECT uid FROM page_fan WHERE page_id=361481469749. Det gör man genom att skicka in frågan i URLen, på det här viset: https://api.facebook.com/method/fql.query?query=SELECT+uid+FROM+page_fan+WHERE+page_id=361481469749 (läs mer om FQL).

Enligt dokumentationen skulle det inte gå att ställa just den frågan, eftersom fältet page_id inte är indexerat. En telefonkatalog, om det är någon som minns dem, är indexerad på efternamn. För att enkelt hitta någon i telefonkatalogen måste man känna till personens efternamn. Det är mycket svårare att slå på nummer - då måste man i värsta fall gå igenom hela katalogen! Precis på samma sätt är det i en databas, och Facebook har indexerat sin page_fan-tabell efter fältet uid, alltså användare (egentligen har de förstås index även på andra fält, men de tillgängliggör inte dem via FQL). Jag beslöt mig för att försöka ändå, och wow! Jag fick en lista på Rättviseförmedlare!

Men det var bara 50 stycken. Av 22 000. Det kommer man inte långt med. Tydligen får man inte allt av Facebook, utan bara en liten del. Nåja, det kanske inte är så konstigt. Om man skulle få alla fans, vad skulle då hända om man bad om alla Beliebers!? Datorn kanske skulle krascha. Eller hela Internet. Som tur är har FQL precis som SQL stöd för LIMIT. Med "LIMIT 100" säger man "ge mig inte mer än 100 stycken". Tydligen har Facebook en implicit limit på 50, och kanske kunde jag sätta min egen limit? Jag skickade in "LIMIT 22000" och fick tillbaka massor av id-nummer! Nästan 5000! Jag försökte på olika sätt få ut nästa 5000, och nästa, men hur jag bar mig åt kunde jag bara få ut 5000 Rättviseförmedlare (här kan man läsa varför).

Nåja, 5000 Rättviseförmedlare är inte fy skam och det borde räcka för att göra en snygg mosaik. Jag bad min dator att ladda hem allas profilbilder och började fundera på hur man kan skriva ett program för att sätta ihop dem till en mosaik. Resultatet ser ni här uppe och hur jag gjorde, det får ni läsa om imorgon.

Uppdaterat! Här finns del två: Mosaiken tar form!

Related tags: API, Facebook, Graph API, Justin Bieber, mosaik, programmering, Rättviseförmedlingen

Comments

1 research paper says...

Photo business is really one of the most profitable and good today!

Posted at 8:16 a.m. on January 19, 2012

2 admission essay help says...

I think people who do this just have nothing useful to do.

Posted at 1:33 p.m. on January 19, 2012

3 thesis writers says...

I wonder if the author expect it to bring any profit.

Posted at 5:46 p.m. on January 21, 2012

4 Domain registration says...

I found it is interesting and informative article.Keep sharing more post Thanks

Posted at 8:25 a.m. on March 6, 2012

5 resume writer says...

You should add few lines to fix the a-t bug.

Posted at 5:32 p.m. on March 8, 2012

6 Web hosting forums says...

This was very informative. I have been reading your blog a lot over the past few days and it has earned a place in my bookmarks.keep it up.. [HTML_REMOVED]a href=[HTML_REMOVED]http://www.hosting-forum.in/[HTML_REMOVED] rel=[HTML_REMOVED]dofollow[HTML_REMOVED][HTML_REMOVED]Web hosting forums[HTML_REMOVED]/a[HTML_REMOVED]

Posted at 1:13 p.m. on April 16, 2012

7 Michael Borr says...

Wow, very nice post! Welcome here [HTML_REMOVED]http://custom-writing.org![HTML_REMOVED]

Posted at 3:59 p.m. on April 25, 2012

8 Brielesolkize says...

What heyday isn[HTML_REMOVED]t today?

Posted at 3:32 p.m. on May 5, 2012

9 bodybuilding supplements says...

Enligt dokumentationen skulle det inte gå att ställa just den frågan, eftersom fältet page_id inte är indexerat. En telefonkatalog, om det är någon som minns dem, är indexerad på efternamn. För att enkelt hitta någon i telefonkatalogen måste man känna till personens efternamn.

Posted at 9:27 a.m. on May 15, 2012

Get in touch with us

Hansson & Larsson Internet AB
Phone
Visit
office
Birger Jarlsgatan 18A
5tr
114 34 Stockholm
Sweden
_ Facebook
_ Twitter