Twitters API – ett smörgåsbord av data

Det poppar upp nya Twitterklienter, Twittermashups och tjänster som bygger på Twitter till höger och vänster, bla eftersom microbloggingtjänsten Twitter har ett kraftfullt API som är lätt att använda (om du vill veta mer om hur man använder Twitter så föreslår jag att du tar en titt på

Vad är Twitter och hur använder man det). Detta API är definitivt en av anledningarna till att Twitter växer så att det knakar. En del av dem som använder Twitters API har en affärsmodell som inkluderat att tjäna pengar, vilket Twitter ännu inte har, men det måste komma snart om de vill överleva.

Själv har jag precis använt APIet för att bygga MashupCrowd.com för att hålla reda på vem som pratar om mashups på Twitter, så nu tänkte jag dela med mig om vad jag har lärt mig…

Twitters API = ett smörgåsbord av data

Twitter har faktiskt flera APIer…

  • REST API – det API som används för att kommunicera med Twitter som individuell användare. Man kan skicka in nya meddelanden, markera meddelanden som favoriter, hämta de senaste meddelandena etc. Detta är det API som de flesta Twitterklienter använder, tex TweetDeck och Twhirl.
  • Search API – som namnet indikerar så är detta ett API för att söka på Twitter och hitta meddelanden om ett speciellt ämne (vilket jag gör för MashupCrowd.com), ett speciellt datum, ett speciellt språk , en speciell hashtag (som svenska svpt.nu gör för hashtaggen #svpt) etc
  • Data Mining Feed – en cache med de senaste 600 meddelandena, ämnat för folk som samlar in alla Tweets för forskning eller liknande
  • Den s.k. “Firehose” – tillgång till alla publika meddelanden för de applikationer som behöver massiva mängder data. Hittills är detta API ett experiment och inte öppet för alla. Twitter kommer antagligen att ta betalt för denna service, om de inte redan gör det bakom stängda dörrar.

De två viktigaste är REST och Search APIet, så låt oss gräva lite djupare i hur de fungerar…

REST API

För att göra ett anrop via REST APIet som har att göra med en speciell användares data så krävs att man är autentiserad, detta görs via en användares användarnamn och lösenord, för tillfället används HTTP Basic Authentication, men Twitter jobbar på en lösning med OAuth. När man är autentiserad så kan man sedan göra HTTP förfrågningar med olika parametrar för att hämta data, skicka in ett nytt meddelande, ta bort data etc. Om man hämtar data så kan man få svar i formaten XML, JSON, RSS eller Atom, så det finns något för alla smaker.

Följande förfrågan är ett exempel på hur man skickar in ett nytt Twittermeddelande – http://twitter.com/statuses/update.xml. Det är en HTTP POST förfrågan, och man måste vara autentiserad innan man exekverar den. POST förfrågan måste ha parametern “status” med texten i det nya meddelandet, tex status = "Ett nytt twittermeddelande om mitt intressanta liv".

Viss data som man kan få tag på via REST APIet är ej specifik för en speciell användare så då krävs ingen autentisering. Ett Exempel på detta är att hämta de senaste 20 publika uppdateringarna som har gjorts:

<a href="http://twitter.com/statuses/public_timeline.xml">http://twitter.com/statuses/public_timeline.xml</a>

Användare av REST APIet är begränsade till 100 förfrågningar per 60 minuter, detta inkluderar inte att skicka in nya meddelanden. Behöver man göra fler förfrågningar så kan man ansöka om att vara med på den s.k. request whitelist och då kan man göra upp till 20.000 förfrågningar per timme.

Alla detaljer om metoder etc för Twitters REST API hittar ni i deras dokumentation.

Search API

Grundformatet för en Search API förfrågan är http://search.twitter.com/search.atom?[PARAMETRAR], om jag tex vill söka efter alla som har twittrat om mashup.se så gör jag följande förfrågan:

<a href="http://search.twitter.com/search.atom?q=mashup.se">http://search.twitter.com/search.atom?q=mashup.se</a>

Till skillnad från REST APIet så finns det bara två typer av format som Search APIet returnerar data i – Atom och JSON.

Man kan ha hur komplicerade frågor som helst, tex så kan man söka efter meddelanden som refererar till en viss användare, meddelanden som skickats till en viss användare eller meddelanden som innehåller en speciell hashtag. Det går givetvis att kombinera alla dessa parametrar hur man vill – så det går att lista bara meddelanden skickade av användaren “andreaskrohn” (det är jag det) med hashtaggen #svpt:

<a href="http://search.twitter.com/search?tag=svpt&from=andreaskrohn">http://search.twitter.com/search?tag=svpt&from=andreaskrohn</a>

Det går även att ange att man bara vill ha meddelanden skrivna i ett speciellt språk eller meddelanden baserat på avsändarens position etc.

En annan cool sak man kan göra med Search APIet är att hämta de senaste trenderna från Twitter via detta anrop:

<a href="http://search.twitter.com/trends.json">http://search.twitter.com/trends.json</a>

Alla detaljer om möjliga sökningar etc för Twitters Search API hittar ni i deras dokumentation.

Kodbibliotek

HTTP anrop och XML i all ära, men det är ett väldigt begränsat nöje att skriva den kod som hanterar dessa anrop. Som tur är så finns det färdiga kodbibliotek för nästan vilket programmeringsspråk som man kan tänka sig använda – Flash, C#, Java, PHP, Python, Ruby etc. Min personliga favorit är Elliot Haughins Twitter CodeIgniter library, men det är bara för att jag gillar PHP ramverket CodeIgniter. Oavsett vad du föredrar så finns det nästan garanterat redan kod som du kan använda. Detta gör att det är väldigt enkelt att skiva tjänster som använder något av Twitters APIer.

Exempel på hur APIerna kan användas

Det finns hur många exempel som helst, här är bara några av dem som jag har fastnat för (har jag glömt några bra exempel så fyll gärna på listan i kommentarerna på detta inlägg!):

  • Svpt.nu = SVenskar På Twitter – använder Twitters Search API för att visa alla inlägg som är markerade med hashtaggen #svpt. Svpt.nu uppdateras ständigt med nya meddelanden, så det är perfekt att ha den öppen i en tabb i webbläsaren. En snygg sida som var en stor inspiration till min egen MashupCrowd.com. Svpt.nu är skapat av @voxpelli och @peterrosdahl.
  • Twixdagen – följ svenska riksdagsmän på Twitter, här hittar ni min artikel om twixdagen
  • Ankdammen – följ svenska PR och reklambyråer på Twitter
  • New York Times – Twitter Chatter during Super Bowl – följ Twitter konversationen som pågick under den senaste Super Bowl, se vilka spelare etc som nämns när samt var.
  • Twittervision – visar nya meddelanden på en karta, kan vara riktigt beroendeframkallande att titta på
  • TwitterCharts – använder Twitters API tillsammans med Google Charts API via Yahoo Pipes för att visa snygg statistik om dina Twitter vanor
  • DivVoted – rösta på snyggt designade sajter direkt via Twitter (klicka här för att rösta på mashup.se)