Twitter-Filter für die Blogger-Sidebar

Twitter-Filter für die Blogger-Sidebar

Seit heute werden meine zuletzt gelesenen Bücher in der Sidebar des Blogs angezeigt. Das war schon seit langem ein Wunsch von mir. Da ich zu jedem gelesenen Buch eine Twitter-Kurzrezension schreibe, hat es sich angeboten, diese Rezensionen aus meinem Twitter-Einträgen automatisiert rauszusuchen und weiterzuverwenden. Zum Glück habe ich mich von Beginn an streng daran gehalten alle Kurzrezensions-Tweets mit dem Text “Letztes Buch” beginnen zu lassen.



Ich nutze in meinem Blog seit langem das Original Twitter-Badge für Blogger. Die Funktion filterCallback aus dem Original-Script von Twitter habe ich schon vor einiger Zeit ersetzt durch eine Variante, die alle direkten @Replies herausfiltert:


function filterCallback( twitter_json ) {
   var result = [];
   for(var index in twitter_json) {
      if(twitter_json[index].in_reply_to_user_id == null) {
         result[result.length] = twitter_json[index];
         }
      if( result.length==10 ) break; // Edit this to change the maximum tweets shown
      }
   twitterCallback2(result); // Pass tweets onto the original callback. Don’t change it!
   }

Das Original Twitter-Badge für Blogger ruft die Funktion twitterCallback2 auf. Stattdessen ruft man nun die obige filterCallback auf, die wiederum am Ende die twitterCallback2 verwendet. Die obige Funktion kommt aus den Weiten des Internet. Details zur Einbindung beschreibt “Lock Farm” aus England in seinem Blog.



Heute habe ich mich nun erstmalig ernsthafter mit JavaScript beschäftigt und die filterCallback
umgeschrieben und zu einer neuen Funktion
filterBooks gemacht:

function filterBooks( twitter_json ) {
   var result = [];
   for(var index in twitter_json) {
      var Twext = twitter_json[index].text;
      if(Twext.substr(0, 12) == “Letztes Buch” ) {
         twitter_json[index].text = Twext.substring(14);
         result[result.length] = twitter_json[index];
         }
      if( result.length==10 ) break; // Edit this to change the maximum tweets shown
      }
   twitterCallback2(result); // Pass tweets onto the original callback. Don’t change it!
   }



Die neue filterBooks sucht in den vorhandenen Tweets nach Einträgen, die mit “Letztes Buch” beginnen und verwirft alle anderen Tweets. Zusätzlich wird der Beginn der jeweiligen Tweets gekürzt, damit nicht jeder Eintrag mit dem gleichen String “Letztes Buch” beginnt. Entsprechend muss diese Funktion auch später anstelle der twitterCallback2 bzw. der filterCallback aufgerufen werden.


Da ich weiterhin zusätzlich die letzten zehn Twitter-Einträge mit Ausnahme der direkten @Replies veröffentliche, werden bei mir beide Funktionen, filterCallback und filterBooks benötigt. Da die Original twitterCallback2 den Inhalt in einem DIV-Tag mit der ID twitter_update_list speichert (und damit beim zweiten Aufruf den vorher ausgegebenen Text wieder ersetzt) musste hier eine Lösung her. Mein Versuch, einfach den Inhalt der Originaldatei blogger.js in meine Blogger-Vorlage zu kopieren, war erfolgreich. Hierzu habe ich die twitterCallback2 in eine twitterCallback3 umbenannt und die ID im Bücherteil auf twitter_update_list2 geändert. Damit das entsprechende DIV-Tag auch weiterhin seinen Style behält, wurde dieser im Kopf der Vorlage noch formatiert.

Und endlich geht mein Wunsch in Erfüllung. ;-)