image image


Worknote: Processing.py und WordCram, eine Processing (Java) Bibliothek

image

Wie man eine Python-Bibliothek in Processing.py nutzt, hatte ich ja schon gezeigt. Das geht so einfach, wie man es auch von »normalen« Python-Programmen gewohnt ist – solange die Pakete pure Python sind. Doch wie sieht es aus, wenn man eine Bibliothek nutzen will, die für den Java-Mode von Processing in Java geschrieben wurde? Um dies zu testen, hatte ich mir die Bibliothek WordCram, die die beliebten Wortwolken (Word Clouds) erzeugt, ausgesucht und heruntergeladen. Bevor man damit irgendetwas anstellen kann, muß man die Bibliothek entpacken und in den libraries-Ordner im Processing-Verzeichnis ablegen. Falls Ihr nicht mehr wißt, wo Euer Processing-Verzeichnis liegt, findet Ihr es im Processing-Menü unter Einstellungen -> Sketchbook Pfad.

image

Da ich von mehreren Rechnern an mehreren Standorten meine Processing.py-Sketche bearbeite, liegt dieser Ordner bei mir in der Dropbox. Das ist nicht unbedingt immer eine gute Idee, manche Libraries bestehen aus Tausenden von Dateien und da kann das Synchronisieren schon mal eine gewisse Zeit in Anspruch nehmen.

image

Wenn Ihr dies erledigt habt, findet die Processing-IDE unter Sketch -> Library importieren die Bibliothek und sie kann mit einem Klick in Euren Sketch eingefügt werden:

add_library('WordCram')

Natürlich könnt Ihr diese Zeile auch einfach selber eintippen.

Um das Teil zu testen, habe ich diesen kleinen Sketch geschrieben:

add_library('WordCram')

def setup():
    size(700, 400)
    background(255)
    
    wordcram = WordCram(this
        ).fromWebPage("http://blog.schockwellenreiter.de/2017/04/2017040404.html"
        ).sizedByWeight(0, 150
        ).withFont("Copse"
        )
    wordcram.drawAll()

Der ruft diese Seite auf und stellt ihren Inhalt – wie obiger Screenshot zeigt – als Wortwolke dar.

Zwei Dinge sind noch zu beachten: Erstens verlangen viele Processing (Java) Bibliotheken eine Referenz auf das aktuelle PApplet-Objekt – so auch WordCram. Im Java-Mode für Processing wird dafür das eingebaute this-Keyword verwendet. Python allerdings kennt kein this-Schlüsselwort, aber Processing.py stellt automatisch eine globale Variable namens this zur Verfügung, die für diese Zwecke verwendet werden kann.

Zweitens kann man in Python wegen der besonderen Bedeutung der Einrückung nicht so, wie es in Java üblich ist, die fortlaufende Punkt-Notierung an dem Punkt umbrechen, wenn Ihr es so versucht

    wordcram = WordCram(this)
        .fromWebPage("http://blog.schockwellenreiter.de/2017/04/2017040404.html")
        .sizedByWeight(0, 150)
        .withFont("Copse")

bekommt Ihr eine Fehlermeldung. Ich habe daher überall die schließende Klammer aus der darüberliegenden Zeile weggenommen und vor den Punkt gestellt. Das ist nicht wirklich eine schöne Lösung, funktioniert aber und hält den Code einigermaßen leserlich. Vielleicht fällt mir dafür noch eine schönere Lösung ein.

Die WordCram-Bibliothek ist ziemlich mächtig, aber leider nicht besonders gut dokumentiert. Sie erkennt zum Beispiel selbstständig, daß mein Text auf Deutsch geschrieben ist und ist auch UTF-8-fest. Zudem scheint sie für viele Sprachen schon eine eingebaute Liste von Stopwörtern mitzubringen. Und man kann auch irgendwie die Wörter der Cloud einfärben, aber das ist nicht sehr intuitiv und die bisher erzielten Ergebnisse hatten mir nicht gefallen, so daß ich es bei der schwarz-weiß-Darstellung belassen habe. Still digging!


1 (Email-) Kommentar


Here’s a challenge for you, create a sketch like this one https://monkstone.github.io/jruby_art/update/2017/03/19/fruits_wordcram.html
In processing.py (including dictionary look-up of colors).

– Martin P. (Kommentieren) (#)


(Kommentieren)  ProcessingPy und eine Java-Bibliothek – 20170408 bitte flattrn

image image



Über …

Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!

Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.

Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.

Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.


Werbung


Werbung


image  image  image
image  image  image