weidner/archives/2013/09/

Das Leanpub API mit Perl verwenden

Vor einigen Monaten habe ich angefangen, Bücher bei Leanpub zu veröffentlichen. Das bietet mir für selbst veröffentlichte Bücher einige Vorteile, unter anderem:

Mittlerweile ist ein Buch fast fertig, ein anderes noch in Vorbereitung und das dritte handelt von dem, worum es auch in diesem Artikel geht.

Das Leanpub API

Am 10. August diesen Jahres postete Scott Patten in der Google Group für Leanpub über die Anfänge eines Web API für Leanpub. Dieses API ist bei den Hilfeseiten von Leanpub dokumentiert.

Meine erste Idee war: das will ich in Perl haben. Ich hatte nicht gleich Zeit, aber am 21. August konnte ich das Perl-Modul WebService::Leanpub, das über CPAN verfügbar ist, erstmalig ankündigen.

Das Modul deckt die wesentlichen Funktionen des Leanpub API ab und ist entsprechend der Perl Tradition mit POD im Quelltext dokumentiert. Da nicht jeder die Lust verspüren wird, aus der Perl-Bibliothek erst ein Programm zu machen, um es benutzen zu können, kommt das Modul mit einem Beispielprogramm für die Kommandozeile. Dieses bietet alle Möglichkeiten der Perl-Bibliothek und gibt einen kurzen Hilfetext aus, wenn man es ohne Parameter aufruft.

Als Ergänzung zur Dokumentation des Perl-Moduls gibt es das erwähnte dritte Buch, welches ich nebenbei zum Test der Bibliothek verwende. Dieses Buch beschreibt (in englisch) das Perl-Modul und dessen Verwendung.

Wie verwende ich WebService::Leanpub?

Um das API und damit die Bibliothek und das Kommandozeilen-Programm zu benutzen benötige ich zuallererst einen API-Key von Leanpub. Diesen bekomme ich im Dash board. Beim Reiter Account suche ich unten auf der Seite nach dem Bereich Leanpub API. Dort kann ich den API Key auch ändern oder das API für meinen Account sperren lassen.

Neben dem API Key benötige ich für jede Aktion noch eine Kennung für das betreffende Buch. Die Kennung ist der Teil der URL der Landing-Page des Buches, der auf https://leanpub.com/ folgt. Das heißt, für mein Buch Using the Leanpub API with Perl ist die Kennung using-the-leanpub-api-with-perl.

Da die Bibliothek eine objektorientierte Schnittstelle hat und ich sowohl API Key als auch Kennung für jede Aktion benötige, gebe ich beide der Funktion new() als Parameter mit, wenn ich ein WebService::Leanpub Objekt erzeuge. Beim Kommandozeilen-Programm kann ich diese beim Aufruf als Optionen oder in einer Datei namens .leanpub.conf im Arbeitsverzeichnis angeben.

Danach kann ich mit dem API und der Bibliothek vollständige oder partielle Vorschauen erzeugen, das Buch mit oder ohne Release Note veröffentlichen und mir die Umsatzzahlen im JSON-Format ausgeben lassen.

Bei der Arbeit an einem Buch schreibe ich Regeln in das Makefile, um die einzelnen Aktionen bequemer aufzurufen. Diese sehen in etwa so aus:

preview: dropbox
        leanpub preview

status:
        leanpub job_status

Das Make-Ziel dropbox ist dafür zuständig, dass geänderte Dateien in die Dropbox kopiert werden und ist hier nicht näher ausgeführt. Rufe ich make preview auf, dann werden erst alle geänderten Dateien in die Dropbox kopiert und anschließend das Kommandozeilen-Programm leanpub aufgerufen, um eine Vorschau zu erzeugen. Mit make status kann ich den Status des letzten Jobs an das API abfragen. Den API Key und die Kennung habe ich in der Datei .leanpub.conf abgelegt, die ungefähr so aussieht:

# configuration for leanpub
api_key = xxxxxxxxxxxxxxxxxxxxxx
slug    = using-the-leanpub-api-with-perl
Posted 2013-09-07
Tags: