Mai 29
Das Perl-Modul WWW::Shorten::Bitly als solches bietet die Moeglichkeit URLs, die zuvor mit bit.ly verkuerzt worden sind, wieder zu “expanden” und auch diverse Clickstatistiken auf diese URLs zu fahren.
Leider hat das Modul ein paar Schoenheitsfehler:
- Beim “Expanden” meint das Modul die Methode “GET” nutzen zu wollen. Die API von bit.ly schreibt hier aber ein “POST” vor. Das ist recht zuegig gefixed. Einfach in der Zeile 257 (Methode “expand” der Version 1.14) aus dem get ein post machen -> Fertig 🙂
- Beim Aufruf der Methode “clicks” auf URLs mit vielen Statistik-Daten (Referrers, etc.) versagt der SAX-Parser auf ganzer Linie. Er quittiert das Parsen mit einer Fehlermeldung a’la:
End tag mismatch (nodeKey != nodeValue) [Ln: x, Col: yyyyy]
Das Problem laesst sich dadurch loesen, dass man dem XML::Simple Modul sagt, es soll gefaelligst einen Ordentlichen parser benutzen. z.B. den XML::Parser (der zuvor via cpan installiert werden muss (setzt libexpat1-dev vorraus !)). Wir teilen dies dem Bitly Modul nach dem Einbinden von XML::Simple ueber folgenden String mit:$XML::Simple::PREFERRED_PARSER = 'XML::Parser';
… und oh Wunder: Alles funktioniert
In diffs ausgedrueckt sind folgende Aenderungen an WWW::Shorten::Bitly Version 1.14 notwendig:
22a23,24
> $XML::Simple::PREFERRED_PARSER = 'XML::Parser';
>
257c259
< $self->{response} = $self->{browser}->get($self->{BASE} . '/expand', [
---
> $self->{response} = $self->{browser}->post($self->{BASE} . '/expand', [
Ab nun klappt auch das Auslesen mit dem Modul.