Twitter bietet über die Einbindung des Twitter Buttons einige nette Funktionalitäten – jeder Nutzer sieht sofort wie oft die Seite schon getwittert wurde und der Nutzer kann es mein einem Klick ebenfalls machen. Das Ganze hat natürlich seinen Preis:
- Durch das Einbinden des Twitter Javascripts ist die Sache mit dem Datenschutz komplizierter.
- Man benötigt das Twitter Javascript
- “Hintergrund” Prozesse können so nicht auf diese “Tweet”-Zahl zugreifen
Twitters Steiniger Weg über die offizielle API
In den Development-Foren von Twitter scheint dies eine beliebte Frage zu sein: Wie kommt man an die Zahl ran die der Twitter Button darstellt. Offiziell legt Twitter Wert darauf das man die Streaming API verwendet. Hier findet sich sogar ein Beispiel. Allerdings ist diese API nur mit einem authentifizierten Dev-Account möglich. Wer viele Seite hat, dem könnten die diversen Beschränkungen von Twitter ein Strich durch die Rechnung machen.
Der einfache Weg über http://urls.api.twitter.com/1/urls/count.json?url=…
Tja – es ist nicht schwer nachzuvollziehen woher der magische Button die Daten bekommt. Auch wenn Twitter mehrfach darauf hinweisst, dass dies keine offizielle API ist, ist die Verwendung ziemlich einfach:
Ergebnis:
{"count":7,"url":"http:\/\/blog.codeinside.eu\/2014\/04\/15\/source-code-verffentlichen-aber-bitte-mit-lizenz\/"}
Via Code:
1: class Program
2: {
3: static void Main(string[] args)
4: {
5: string url = "http://urls.api.twitter.com/1/urls/count.json?url=http://blog.codeinside.eu/2014/04/26/fix-excel-com-exception-code-2147467259-exception-from-hresult-0x80028018/#comments";
6:
7: // Be carefull with this code - use async/await -
8: // pure demo code inside a console application
9:
10: var client = new HttpClient();
11: var result = client.GetAsync(url).Result;
12:
13: Console.WriteLine(result.Content.ReadAsStringAsync().Result);
14: Console.ReadLine();
15: }
16: }
Der Code ist auch auf GitHub zu finden.
PS: Ein ähnlicher Code wird u.A. bei Golem.de genutzt. Sollte also auch im grösserem Stil funktionieren.