Nun denn: Es ist endlich so weit. Das deutlich erweiterte Twitter Plugin für Serendipity ist fertig und in Spartakus veröffentlicht. Ich habe einiges an dem Plugin geändert, es besteht nun aus dem alten (auch verbesserten) Seitenleistenplugin und einem neuen Eventplugin für Backend Funktionalität. Die meiste Zeit verging fast beim Testen, hier noch mal ein dickes Dankeschön an Robert und Matthias!
Was hat sich alles verändert oder ist neu?
Der TwitterTweeter, Twitter Client für das Backend
Als erstes das, was ich eigentlich als letztes eingebaut habe: Ich habe den Backend Client Code aus dem Twitter Tweeter Plugin als Vorlage genommen und diesen auf meine Twitter Routinen portiert und noch ein paar Kleinigkeiten ausgebessert. Hier noch einmal einen großen Dank an Silvio Kunze, von dem ich große Teile des Codes einfach übernehmen konnte. Ich habe diesen nun auf PHP4 und weg von libcurl portiert, und noch ein paar kleinere Fixes sowie zusätzliche Optionen erledigt.
Ein Hauptgrund für den Einbau seines Twitter Tweeter Codes war natürlich, dass -wie bisher üblich in Serendipity- möglichst nicht mehrere Plugins für ähnliche Aufgabenbereiche vorhanden sein sollten.
Ankündigungen über Twitter
Eine ähnliche Funktion hatte auch bereits das TwitterTweeter Plugin. Mein Code war allerdings schon fertig, als ich das TwitterTweeter Plugin sah, und bietet auch ein paar mehr Optionen. Hiermit kann man neu erstellte Artikel automatisch über seinen Twitter Zugang veröffentlichen. Man kann diese Ankündigungen gleich mit Twitter Such Tags versehen, es gibt mehrere Services zum Kürzen von URLs zur Auswahl usw.
Mit dieser Funktion kann man externe Services wie z.B. TwitterFeeds ersetzen. Man sollte seine TwitterFeeds sogar besser ausschalten, wenn man das Plugin benutzt, damit nicht doppelt angekündigt wird..
Tweetbacks
Dies ist eine der coolsten Funktionen und gleichzeitig auch eine, die die meiste Zeit und Gehirnschmalz gekostet hat. Tweetbacks sind etwas ähnliches wie Trackbacks, nur nicht auf externe Artikel bezogen, die auf das eigene Blog zeigen, sondern auf Twitter Tweeds, die einen Artikel im Blog erwähnen.
Diese zu ermitteln stellt sich als extrem kompliziert heraus. Es gibt einige Wordpress Plugins, die dies auch versuchen und das selbe Verfahren wie das S9Y Plugin benutzen, nur sind die Routinen im S9Y Plugin zusätzlich noch deutlich auf Performance optimiert, so weit ich das vergleichen konnte.
Problem dabei ist, dass Twitter keine Tweetbacks sendet (analog zu Trackbacks, die vom referenzierenden Blog gesendet werden). Sie müssen aktiv aus der Masse an Tweets heraus gesucht werden. Dazu durchsucht man alle Tweets auf Links, die auf das eigene Blog zeigen. In Twitter werden URLs in stark gekürzter Form abgegeben, sie werden mit URL Kürzern wie tinyUrl.com oder bit.ly gekürzt. Das Plugin muss also alle möglichen Versionen von Kurz URLs ermitteln und nach diesen suchen.
Probleme von Tweetbacks
Und hier ist das Problem: Leider liefern die meisten URL Kürzer beliebig viele Kurz URLs für ein und die selbe URL (tinyUrl.com ist hier eine der wenigen Ausnahmen). Somit sind diese nur sehr schwer bis gar nicht zu finden, außer sie wurden erstellt, ohne bei dem Service speziell eingeloggt zu sein, denn auf dem selben Weg erzeugt auch das Plugin seine Vergleiche.
Twitter ist (in dem Zusammenhang leider) vor kurzem eine Kooperation mit bit.ly eingegangen. Erstellt man einen tweet in Twitter, der eine lange URL enthält, so wird diese automatisch über bit.ly gekürzt und zwar mit einem speziellen eigenen Twitter Account. Diese URLs sind nicht zu finden, da das Plugin diesen Account nicht kennt.
Dazu gleich eine Anmerkung: Man könnte das Problem umgehen, indem man bei bit.ly direkt anfragen könnte, welche KurzURLs für eine bestimmte URL bereits bekannt sind. Diese Abfrage bietet keiner der mir bekannten Services, dies zu implementieren wäre jedoch ein leichtes für (z.B.) bit.ly. Bit.ly hat ein Forum, in dem man Wünsche äußern kann und für ihre Wichtigkeit abstimmen kann. 2 Einträge wären hier sehr interessant:
Wenn bit.ly einen dieser beiden Vorschläge umsetzen würde, könnte man auf einmal einen großen Teil der Tweetbacks (nämlich die direkt in Twitter erstellten) finden. Also bitte: Wenn ihr ein paar Sekunden Zeit habt, dann votet doch für diese beiden Einträge, man muss nicht eingeloggt sein (kann aber eingeloggt noch einmal voten..
)
Unter dem Strich bleibt also: Ein verdammt cooles Feature, nur leider mit wenig Chance, etwas zu finden. Mal schauen, ob etwas gefunden wird, wenn das Plugin in populäreren Blogs als meinem eingesetzt wird.
Twitter Timeline als Seitenleiste
Dies ist die bekannte Funktion aus dem alten S9Y Twitter Plugin. Hier habe ich in einer kleinen Session mit Yellowled den HTML Code verbessert. Außerdem habe ich die PHP Version des Plugins stark verbessert. Die Optik ist nun an die Optik der JavaScript Version angepasst, dafür muss die PHP Version aber kein JavaScript nachladen und kann viel cachen.
Das cachen geschieht inzwischen im Hintergrund. Das alte Plugin blockierte mir sofort das Blog, wenn Twitter (z.B. wegen Wartungsarbeiten) blockierte.
Das war's!
Dann wünsche ich viel Spaß mit dem neuen Plugin. Ich würde mich freuen, wenn ihr vor allem mal berichtet, wie und ob die Tweetbacks bei euch greifen. Vielleicht habt ihr ja noch eine schlaue Idee, wie man das noch intelligenter lösen kann. Die Kommentare bieten euch Platz dafür. 
Ich habe auch noch einige Ideen, was man noch in das Plugin einbauen kann. Garvin hat sich z.B. gewünscht, dass es Tweets eines bestimmten Zeitraums zusammenfassen und in einem Artikel posten können sollte. Nette Idee, gar nicht schwer. Vielleicht habe ich auch dafür bald Zeit.
Wer das Plugin nicht über Spartakus beziehen kann oder will, findet es auch in meinem Files Bereich.
Matthias Mees
Homepage
06/17/2009 01:50PM
Saubere Arbeit!
Grischa
Homepage
06/17/2009 02:00PM
Klasse auch, dass Silvio mir erlaubte, seinen Code einfach mit in das Plugin zu integrieren. Ich empfinde die Strategie von S9Y "ein Plugin für einen Aufgabenbereich" immer noch als ziemlich klasse.
Nun bin ich gespannt, ob alles so läuft, wie es soll.
Letzte Nacht ist mir beim Einschlafen noch eine Idee gekommen, wie man Tweetbacks noch auf andere Art heraus filtern kann. Die wäre sogar komplett unabhängig von dem verwendeten URL Kürzer Service.. Muss mal probieren, ob sich das umsetzen lässt..
Matthias Mees
Homepage
06/17/2009 02:21PM
Ich schätze diesen »one job, one plugin«-Ansatz auch sehr, halte ihn für überaus benutzerfreundlich und definitiv ein Argument pro-s9y. Wobei abzuwarten wäre, ob das bei einer größeren Entwicklerschar noch zu managen wäre.
Achim
Homepage
06/17/2009 05:01PM
alwin
Homepage
06/17/2009 05:48PM
Vom Style muss ich mal schauen, weil es zur Zeit noch etwas unübersichtlich im Schriftsatz in meinem Blog erscheint.
Tweetbacks, die über TinyURL gekürzt waren funktionierten natürlich freudig gut.
Sonst benutze ich immer tr.im zum Kürzen von URL's. Aber damit habe ich noch keine Tweetbacks getestet.
Inspiriationen, zum finden/setzen von Tweetbacks:
Bei Facebook gibts die Möglichkeit, dass nur die Twittereien auf der Pinwand erscheinen, die den Hashtag #fb haben. Wäre es sinnvoll, wenn man auch solche Hashtags im Plugin definieren könnte?
Eine andere Inspiration: Bei tr.im kann man beim Kürzen eine Wunschurl/CustomURL angeben. Würde es beim Finden helfen, wenn man die CustomURLs nach enem bestimmten Schema basteln würde?
Naja, vielleicht ist es Quatsch eines Ahnungslosen, vielleicht inspiriert dieser Kommentar.?
Grischa
Homepage
06/18/2009 02:54AM
tr.im einzubauen sollte kein großes Problem darstellen, vermute ich, derzeit unterstützt das Plugin diesen Service noch nicht. Allerdings ist das wieder ein Kürzer mit Login und Tracking, dessen URLs werden also wahrscheinlich wieder nahezu nicht gefunden werden können.
Silvio hat auch nahegelegt, 7ax.de einzubinden. Das ist kürzer als tinyurl.com, hat aber die selben positiven Eigenschaften wie jenes. Das werde ich also auch auf jeden Fall einbinden.
Zu Deinen Inspirationen: Vielen Dank! Ich werde mal drüber grübeln, ob man da was machen kann.. Allerdings will man ja vor allem "fremde" Tweetbacks erwischen. Diese werden sich an keinerlei Vereinbarungen halten..
Ben
Homepage
06/17/2009 06:56PM
Grischa
Homepage
06/18/2009 02:57AM
Ach und herzlich willkommen bei den Zwitschern.. Ich bin ja auch erst seit kurzem dabei.
Ben
Homepage
06/18/2009 10:36AM
"* Es kann gerade nicht auf Twitter zugegriffen werden.
Bitte später noch einmal laden."
Woran kann das liegen?
Ben
Homepage
06/18/2009 10:42AM
Grischa
Homepage
06/18/2009 03:40PM
Ich melde mich per EMail bei Dir, ich hoffe, wir können das Problem bei Dir dann lösen.
Ben
Homepage
06/18/2009 03:57PM
"[Thu Jun 18 15:48:43 2009] [warn] mod_fcgid: stderr: PHP Fatal error: Class 'HTTP_Request' not found in /*der Pfad zu meinem Webspace*/serendipity/plugins/serendipity_plugin_twitter/serendipity_event_twitter.php on line 895"
Vielleicht hilft das ja weiter.
Grischa
Homepage
06/18/2009 04:13PM
Gibt es bei Dir in der Blog Installation den Ordner bundled-libs/HTTP und ist dieser gefüllt? Die Klasse HTTP_Request ist Teil der Serendipity Distribution und sollte unter den bundled-libs liegen.
Hast Du eine komplette S9Y Installation? Und welche Version benutzt Du?
Ben
Homepage
06/18/2009 04:26PM
Grischa
Homepage
06/18/2009 04:40PM
Ich schicke Dir gleich mal eine neue Version des Plugins zum Testen.
Thorsten
Homepage
06/18/2009 09:57AM
Wie nur gestern von via Twitter das man mal schauen muss wie es sich mit terminierten Post verhält. Anscheinend klappt es dann ja net
Ansonsten Thumbs Up und merci
Sers Thorsten
Grischa
Homepage
06/18/2009 03:42PM
Ja, das mit den terminierten Einträgen (also solche, die für die Zukunft veröffentlicht wurden) müsste man mal allgemein lösen. Das selbe Problem haben ja auch Trackbacks.
Ich würde auch gerne mehr terminierte Artikel schreiben, scheue es aber aus den genannten Gründen bisher immer ein wenig..
Thorsten
Homepage
06/18/2009 04:50PM
Jau wäre cool wenn man das in der Griff bekommen würde. Ich mache gerade terminierte Post, weil mein Team der depp doch echt manchmal auf den Blog schaut und er net mitbekommen muss das ich via work blogge ^^
rowi
Homepage
06/18/2009 10:31AM
Fatal error: Cannot redeclare json_encode() (previously declared in [...]/plugins/serendipity_plugin_twitter/classes/JSON.php:808) in [...]/plugins/serendipity_plugin_twitter/serendipity_plugin_twitter.php on line 17
Grischa
Homepage
06/18/2009 03:44PM
Ich werde mir das mal ansehen und dann ein Update dafür veröffentlichen.
(Die gewünschten URL Kürzer 7ax.de und tr.im habe ich übrigens hier lokal auch bereits drin.)
taz
Homepage
06/18/2009 09:19PM
Bei mir der gleiche Fehler
Zusätzlich haut mir die Sache die Seitenleiste zusammen (http://www.gallien.org/serendipity/index.php) und im Backend wird bei einem Klick auf "Plugins verwalten" nur ein Teil der Liste der Seitenleisten Plugins (ungestylt) angezeigt. d.h. ich kann aus dem Backend das Plugin derzeit nicht löschen
Hilfe?
Grischa
Homepage
06/18/2009 09:24PM
P.S.: Öhm.. Die EMail Adresse, die Du hier hinterlassen hast, ist eine funktionierende?
P.P.S.: Siehe nächster Artikel. Habe soeben eine Bugfix Version 1.01 veröffentlicht.
taz
Homepage
06/18/2009 10:31PM
Danke für die schnelle Reaktion. Ab wann taucht das Plugin denn in Spartacus auf?
PS: Ja die Adresse funktioniert und wird an die Hauptadresse weitergeleitet
Grischa
Homepage
06/18/2009 10:34PM
Aber wie gesagt: Du kannst die Version aus meinem Blog nehmen, im Menü "FILES". Das ist exakt die, die dann auch in Spartacus kommen wird.
taz
Homepage
06/18/2009 11:55PM
Bleibt das so oder wird PHP4 unterstützt werden?
Grischa
Homepage
06/19/2009 12:44AM
Hast Du alle Dateien aus dem ZIP File in das Plugin Verzeichnis kopiert? Das Timeline Plugin ist nämlich meines Wissens nicht von PHP 5.1.0 abhängig. Woran machst Du das fest bzw. welche Probleme hast Du nun noch mit dem Plugin?
taz
Homepage
06/19/2009 07:28AM
http://www.bildercache.de/anzeige.html?dateiname=20090619-072616-793.jpg
Grischa
Homepage
06/19/2009 02:21PM
Das ist mir ja noch gar nicht aufgefallen..
Ich ändere das mal und schicke Dir mal eine Testversion zu..
taz
Homepage
06/19/2009 03:21PM
Warte schon gespannt und sage danke für den tollen Support!
Grischa
Homepage
06/19/2009 03:30PM
Ich habe Dir schon vor einiger Zeit eine Mail an die von Dir angegebene EMail Adresse geschickt, an der eine neue Testversion dran hängt. Klappt die EMail doch nicht?
taz
Homepage
06/19/2009 03:35PM
Alternativ könntest du an die E-Mail schicken, die auf der verlinkten Webseite angegeben ist
taz
Homepage
06/20/2009 12:26AM
Robert Lender
Homepage
06/20/2009 12:08PM
Wäre das eine Option, die vielleicht in eine Version 1.x hineinkommen könnte/würde/sollte?
Grischa
Homepage
06/20/2009 02:03PM
Erstaunlicher Weise ist mein größtes Problem dabei: Wie lasse ich das konfigurieren, ohne dass man in einer riesigen Konfig stirbt?
Wenn der Benutzer nur identi.ca oder twitter benutzt, würde das noch gehen (einfacher Schalter oben und alles bleibt wie gehabt). Aber wahrscheinlich will man z.B. sowohl nach Twitter wie auch nach identi.ca ankündigen usw.
Eigentlich würde ich sowieso gerne mehrere Accounts angebbar machen wollen, auch für den Tweeter. Dann könnte man im Tweeter einfach mal schnell auf einen anderen Account (z.B. einen Testaccount) umschalten..
Aber kurz gesagt: Klar, ist machbar und vorstellbar.. Nur: Die Zeit dafür muss gefunden werden.
taz
Homepage
06/20/2009 03:10PM
Geht das ?
Grischa
Homepage
06/20/2009 03:46PM
Da ist mir allerdings noch nicht klar, was da alles rein soll.. Nur die eigenen Posts oder die Posts + Friends? Wahrscheinlich ersteres, oder? Sonst wirds schnell "urheberrechtlich bedenklich".
taz
Homepage
06/20/2009 04:03PM
Ich würde mir vorstellen, dass alle eigenen Tweets eines bestimmten Zeitraums gesammelt in einem Blogpost veröffentlicht werden z.B.
Tweets vom 24- Juni 2009
Tweet1
Tweet2
Tweet3
Twitter ist für mich so für kleine Zwischendurchnachrichten und eine kl. Zusammenfassung wäre nicht schlecht - es passiert etwas im Blog, auch wenn man mal keine Zeit hat.
Dirk Deimeke
Homepage
06/23/2009 06:08AM
Grischa
Homepage
06/23/2009 12:26PM
taz
Homepage
06/24/2009 10:54AM
Du kennst das zwar sicher schon, aber Twitter Tools für WP haben genau die von mir so begehrte Funktion. Vielleicht was zum Ansehen?
http://alexking.org/projects/wordpress/readme?project=twitter-tools
Grischa
Homepage
06/24/2009 12:39PM
taz
Homepage
06/24/2009 02:44PM
http://fensterklauer.de/
d.h.
) gut wäre Titel des Posts editierbar
) Intervall stündlich/12-Stunden/24-Stunden/Woche
) ob nach einer gewissen Zeit umgebrochen wird und die restlichen Tweets im erweiterten Eintrag stehen
) Begrenzung der max. Tweets, die in einen solchen Post sollen
Andreas
08/30/2009 11:20AM
Dirk Deimeke
Homepage
08/30/2009 11:47AM
Andreas
08/30/2009 09:58PM
Aber ich habs nochmal versucht zu installieren, und wieder der gleiche Fehler.
Was man mir natürlich anlasten kann, ist dass ich immer noch Serendipity 1.3.1 habe. Aber trotzdem...
Grischa
Homepage
08/31/2009 11:56AM
Bist Du sicher?
Andreas
09/15/2009 07:44AM
Ich versuchs jetzt mal manuell. Wenn man das Plugin per Hand installiert, welche Dateien gehören dann in den plugin-ordner und welche in den event-ordner?
Grischa
Homepage
09/16/2009 12:49AM
Andreas
09/16/2009 07:05PM
Jetzt hats funktioniert. Ich habs einfach manuell raufgeladen. Das problem lag wohl beim automatischen installieren. --> Manuell installieren ist King.
Aber das Plugin ist super! Viele Konfigurationsmöglichkeiten!
Grischa
Homepage
09/16/2009 11:51PM
Das Plugin startete als einfaches Seitenleisten Plugin, deshalb in diesem Verzeichnis. Das Event Plugin kam erst später dazu (als ich es übernahm). Da Spartacus pro Verzeichnis erneuert, konnte das Verzeichnis da jedoch nicht mehr umgenannt werden, da dann der Update nicht mehr funktioniert.
Es gibt meines Wissens noch weitere S9Y Plugins, bei denen das der Fall ist (wenn auch ziemlich wenige).
Und danke für das Lob, freut mich! Steckt inzwischen ganz schön viel Arbeit in dem Plugin..