Archiv

Archiv für die Kategorie ‘Perl’

OAuth Probleme mit Umlauten: Lösungen für PHP, Perl, C#, VB

Nahezu alle aktuellen Social Networks nutzen inzwischen OAuth zur Authentifizierung. In diversen Blogposts habe ich dies schon genauer für Twitter, Facebook & Co beschrieben. Ein bekanntes Problem ist die richtige Darstellung der Leer- und Sonderzeichen sowie der deutschen Umlaute. Hier eine Zusammenstellung der Lösungen (Details können in den einzelnen Beiträgen nachgelesen werden):

Weiterlesen…

Facebook Pinnwandeinträge mit einem Perl-Script erzeugen – ein kurzes Tutorial

Vor einige Wochen habe ich einiges zu Twitter via Perl und OAuth geschrieben. Für ein aktuelles Projekt sollen aus einem CMS aktuelle Newsmeldungen automatisiert via Perl-Script in Facebook eingespielt werden. Das kann man sehr kompliziert angehen, es lässt sich aber auch „quick&dirty“ relativ einfach realisieren, indem man sozusagen eine „Pseudo-App“ einrichtet. Sicherlich ist folgendes Vorgehen nicht der Weisheit letzter Schluss, aber eben eine schnelle und unkomplizierte Möglichkeit. Und natürlich wird hier OAuth nicht im Sinne des Erfinders verwendet, aber der Zweck heiligt die Mittel.

Weiterlesen…

Schnelle Umstellung von Basic Auth zu OAuth für in Perl geschriebene Twitter Tools

Am 30. August 2010 hat das Team von Twitter nun endgültig den Basic Auth Zugang abgestellt. Eigentlich eine gute Idee, denn OAuth ist eine feine Sache (natürlich nicht ohne Nachteile, aber das ist ein anderes Thema).

Auf jeden Fall muss man nun alle Scripts und Tools, die mit Basic Auth laufen entsprechend  umstellen. So funktioniert beispielsweise mein Tutorial „Direct Message versenden mit Perl“, das ich vor einigen Monaten hier in dieses Blog eingestellte habe so nicht mehr, auch das müsste auf OAuth umgerüstet werden.

Eine  komplette Umstellung auf OAuth ist eine aufwendige Sache. Im Folgenden wird nur ein schneller und einfacher Weg beschrieben, der erklärt, wie man einfache Scripts, die von nur einem Twitter-Account „benutzt“ werden, mit OAuth versorgt. (Bei komplexeren Angelegenheiten empfiehlt es sich sowieso, fertige Twitter-Module für Perl, z. B. Net::Twitter zu verwenden).

Weiterlesen…

WordPress Blogposts per Perl-Script modifizieren

Vor ein paar Tagen hatte ich beschrieben, wie man schnell und einfach per XML-RPC und der MetaWeblog API mit einem Perl Script einen neue Artikel in ein WordPress-Blog einfügt. Wie bereits kurz erwähnt hatte ich dabei ein Problem: Mit der MetaWeblog API habe ich es nicht geschafft, gleich beim Anlegen des Artikel die Kategorie festzulegen (und bin über jeden Tipp dankbar). Deshalb habe ich mit einer anderen API experimentiert, die WordPress ebenfalls kennt: Die Movable Type API von Sixapart. Hier ist dies mit “mt.setPostCategories” problemlos möglich:

my $res2 = XMLRPC::Lite
->proxy($proxyurl)
->call(‘mt.setPostCategories’, $postid, $wpusername, $wppassword, [ {categoryId => $kategorie} ])
->result;

Die $postid ist ja bekannt, so dass der Code kombiniert mit dem Anlegen etwa so aussehen könnte:

#!/usr/bin/perl -w
use strict;
use XMLRPC::Lite;

my $wpusername = “mustermann”;
my $wppassword = “meinpasswort”;
my $wpblogid = “meinblog”;
my $blogurl = “http://maxmustermann.wordpress.com/xmlrpc.php”;

# Neuer Blogbeitrag
my $articeltext =”Hallo Blog, wie geht’s. Hier steht viel Text!”;
my $articeltitle =”Mein erster Blogbeitrag”;
my $articeldatum =”20100220T12:34:56″;
my $articelkeywords =”Hund, Katze, Maus”;

my $rpcall = XMLRPC::Lite
->proxy($blogurl)
->call(‘metaWeblog.newPost’, $wpblogid, $wpusername, $wppassword,
{ description => $articeltext, title => $articeltitle, dateCreated => $articeldatum, mt_keywords => $articelkeywords}, 1)
->result;

if (defined ($rpcall)) {
  print “Erfolgreich – Artikel-ID: $rpcall \n\n”;
} else {
  print “Fehler: $!”;
  die();
}

my $postid=$rpcall;
my $kategorie=47; # Kategorie-ID
my $rpcall2 = XMLRPC::Lite
->proxy($blogurl)
->call(‘mt.setPostCategories’, $postid, $wpusername, $wppassword, [ {categoryId => $kategorie} ])
->result;

if (defined ($rpcall2)) {
  print “Erfolgreich Kategorie gesetzt!\n\n”;
} else {
  print “Fehler: $!”;
  die();
}

print “\n\n”;

Aber wie gesagt nur ein Workaround – eigentlich müsste dies in einem Schwung gehen.

WordPress Blogpost per Perl-Script erzeugen

Vor kurzem habe ich an einem Projekt gearbeitet, bei dem es u. a. darum ging, automatisiert Beiträge aus der Datenbank eines CMS in ein WordPress-Blog zu übertragen. Aus diversen Gründen wurde dies in Perl realisiert und wegen einiger Anfragen hier die Grundidee: eigentlich ganz einfach via XML-RPC (mit dem Modul XMLRPC::Lite) über die MetaWeblog API, die von WordPress unterstützt wird (und diversen anderen Blogsystemen; deshalb dürfte folgendes Script nicht nur bei WP funktionieren):

#!/usr/bin/perl -w
use strict;
use XMLRPC::Lite;

my $wpusername = “mustermann”;
my $wppassword = “meinpasswort”;
my $wpblogid = “meinblog”;
my $blogurl = “http://maxmustermann.wordpress.com/xmlrpc.php”;

# Neuer Blogbeitrag
my $articeltext =”Hallo Blog, wie geht’s. Hier steht viel Text!”;
my $articeltitle =”Mein erster Blogbeitrag”;
my $articeldatum =”20100220T12:34:56″;
my $articelkeywords =”Hund, Katze, Maus”;

my $rpcall = XMLRPC::Lite
->proxy($blogurl)
->call(‘metaWeblog.newPost’, $wpblogid, $wpusername, $wppassword,
{ description => $articeltext, title => $articeltitle, dateCreated => $articeldatum, mt_keywords => $articelkeywords}, 1)
->result;

if (defined ($rpcall)) {
  print “Erfolgreich – Artikel-ID: $rpcall \n\n”;
} else {
  print “Fehler: $!”;
}
print “\n\n”;

Bei WordPress ist wichtig ist, auf die korrekte Form des Datums zu achten. Probleme hatte ich, bereits an dieser Stelle eine Kategorie für den Artikel festzulegen – mehr dazu in Kürze.

Follow

Get every new post delivered to your Inbox.