Zugriff auf das DOM mit Python in webkitgtk

Während der Entwicklung von SaleZ stand ich vor dem Problem, dass ich Werte aus dem Document Object Model (DOM) auslesen wollte. In Webkit gibt es zwar die Funktion get_dom_document, allerdings ist sie noch nicht in der Version von Webkit enthalten, welche mit Ubuntu 10.04 mitgeliefert wird. Nach einiger Suche im Netz habe ich dann eine Lösung für das Problem gefunden.

Mit Hilfe des folgenden Codes kann man sich den Inhalt eines bestimmten Elements ausgeben:

import jswebkit

ctx = jswebkit.JSContext(webView.get_main_frame().get_global_context())
text = ctx.EvaluateScript("document.getElementById("fooBar").innerHTML")

Möchte man hingegen das DOM manipulieren, kann man die  execute_script Funktion eines WebViews nutzen:

webView.execute_script('document.getElementById("foobar").innerHTML = "foo bar"')

eBay Account mit SaleZ verbinden

Nachdem ich gestern mein neues Projekt angekündigt hatte, habe ich eben noch einen kleinen Screencast erstellt, wie man sein eBay Konto mit SaleZ verbindet. Dies ist nötig, damit SaleZ über die eBay API auf den Mein Ebay Bereich zugreifen kann. Die Authentifizierung läuft dabei über einen Token, sodass in SaleZ selbst weder Benutzername noch Passwort gespeichert werden müssen.

SaleZ – your eBay Listing Tool: Betatester gesucht

Ein neues Projekt ist geboren: SaleZ. Es handelt sich hierbei um ein Verkaufstool für eBay, welches sich derzeit aber noch im Alpha Status befindet (deshalb kann ich auch keine Haftung für irgendwelche entstehenden Schäden übernehmen – klar) . Vor einigen Monaten habe ich angefangen ein wenig mit Quickly zu experimentieren (ich berichtete) und herausgekommen ist jetzt SaleZ.

SaleZ - your eBay Listing Tool

Folgende Features sind enthalten:

  • Artikel können als SofortKaufen oder Auktion eingestellt werden
  • WYSIWYG Editor für Auktionsbeschreibung
  • Unterstützung für Auktionstemplates (näheres schreibe ich später dazu)
  • übersichtliches UI
  • bis zu 10 Bilder können kostenlos eingebunden werden

Um SaleZ zu testen, muss zunächst das PPA hinzugefügt und danach SaleZ installiert werden:

sudo add-apt-repository ppa:salez/salez-ppa
sudo apt-get update && sudo apt-get install salez

Ich hab SaleZ nur unter Ubuntu Lucid (10.04) getestet; das Paket für Ubuntu 10.10 ist das gleiche, es sollte aber auch unter 10.10 laufen. Bugs können auf Launchpad gemeldet werden oder hier in den Kommentaren (für die, die keinen Launchpad Account haben).

In diesem Sinn viel Spaß beim Testen!

quickly-widgets: DictionaryGrid

Seit einiger Zeit gibt es ein Tool zum Erstellen von Anwendungen für Ubuntu welches sich Quickly nennt. Quickly nimmt einem eine ganze Menge an Arbeit ab, sodass man mehr Zeit hat sich um die eigentliche Anwendung zu kümmern. Vor ca. einem halben Jahr bin ich durch einen Blogpost im ubuntuusers Planeten darauf aufmerksam geworden und hab seit dem immer wieder mal ein wenig damit rumgespielt. Eine praktische Erweiterung für Quickly sind die Quickly Widgets (ehemals Quidgets).

Installieren lässt es sich mit

sudo apt-get install quickly-widgets

Heute möchte ich das DictionaryGrid vorstellen. Wer sich schon einmal mit einem Gtk.Treeview beschäftigt hat, weiß, dass dieser sehr flexibel ist und man viele Dinge darin abbilden kann. Doch diese Vielfalt führt auch zu einer gewissen Komplexität, sodass man für eine einfache Tabelle einige Zeilen an Code schreiben muss (Columns, CellRenders, …). An dieser Stelle setzt DictionaryGrid an. Wie der Name schon vermuten lässt, braucht man nur noch eine Liste von Dictionaries und kann aus dieser, mit ein paar wenigen Zeilen Code, eine Tabelle erzeugen.

Beispiel:

from quickly.widgets.dictionary_grid import DictionaryGrid
#unsere Dictionaries
dicts = [{"ID": 0, "key2": 5, "tags": "aaa bbb ccc"},
      {"ID": 1, "key2": 6, "tags": "bbb ccc ddd"},
      {"ID": 2, "key2": 7, "tags": "ccc ddd eee"},
      {"ID": 3, "key2": 8, "tags": "ddd eee fff"},
      {"ID": 4, "key2": 9, "tags": "eee fff ggg"}]
grid = DictionaryGrid(dicts)
grid.show()

Und so sieht das ganze dann aus:

In DictionaryGrid kann man noch mehr Paramter angeben, so z.B. in welcher Reihenfolge die Spalten erscheinen sollen. Dazu legt man eine List von keys an, welche die Reihenfolge repräsentieren.

keys=["tags", "ID"]
grid = DictionaryGrid(dicts, keys=keys)
grid.show()

Und hier wieder der Screenshot:

Wie man sieht kann man nicht nur die Reihenfolge der Spalten anhand der keys bestimmen, sondern auch welche Spalten angezeigt werden sollen oder nicht. Neben DictionaryGrid gibt es noch weitere interessante Widgets in quickly-widgets zu entdecken.

BibleZ – aktueller Zwischenbericht

In den letzten Wochen habe ich mir mal ein wenig mehr Zeit für BibleZ genommen und einige Änderungen gemacht. Es sind eine ganze Stange an neuen Features dazu gekommen wie z.B. eine Volltextsuche, eine Versmakierungsoption, eine bessere Integration von Notizen und Lesezeichen u.v.m. Um einen Eindruck der aktuellen Version zu bekommen, habe ich gestern mal ein kleines Video erstellt:

Wie man sieht, wird sich in der nächsten Version auch das Theme ändern. Das Update erscheint hoffentlich in den nächsten Tagen!

BTW: zefanjas.de hat nun auch eine eigene Facebook Fanseite bekommen!

Get it now

SaleZ – ein kurzer Zwischenbericht

Seit gestern ist SaleZ Lite nun auch im AppCatalog verfügbar (VideoDemo gibt’s hier). Ehrlich gesagt, hat mich das etwas positiv überrascht, da ich die App erst vor ca. 4 Tagen eingereicht hatte. Bei ‘BibleZ for webOS’ musste ich da schon fast 2 Wochen warten! An dieser Stelle möchte ich auch noch mal allen Betatestern danken, die mit geholfen haben, Fehler zu finden.

In der Zwischenzeit ist auch die Arbeit an SaleZ (Pro) weiter voran geschritten. Mittlerweile kann man auch Festpreisartikel direkt vom Gerät kaufen (“SofortKaufen”), die Bewertungen des Verkäufers einsehen, Suchvorschläge erscheinen, wenn man einen Suchbegriff eingibt und seit heute kann man auch seine eBay Nachrichten lesen. Für nächste Woche steht die Suchfunktion auf dem Programm. Da ist noch einiges zu machen!

SaleZ – Video Demo

Da SaleZ in der Lite Version soweit erstmal fertig ist, habe ich mal ein kleines Video gemacht, um die Funktionsweise zu demonstrieren. SaleZ Lite kann man sich hier herunterladen.

Und schon wieder ist es März…

Das neue Jahr hat schon längst begonnen und der Frühling macht sich langsam aber sicher auf den Weg. Auch wenn ich den Winter sehr genossen habe, freue ich mich dennoch sehr auf die neue Jahreszeit, denn es stehen wieder einige interessante Projekte vor meinem geistigen Auge.

Seit letzten Oktober bin ich Besitzer eines Palm Pre und ich muss sagen, dass ich selten so zufrieden gewesen bin mit einem Handy/Smartphone wie mit diesem. Natürlich ist es teilweise noch etwas langsam und hier und da stören mich einige Dinge (sehr), aber im Großen und Ganzem bin ich happy mit diesem Gerät. Auch von der softwareseite her finde ich es spannend welchen Weg Palm geht – ein Betriebssystem ganz auf Basis von JavaScript/CSS/HTML5 ist schon sehr visionär, gerade weil die Entwicklung des Webs und auch der Apps in diese Richtung gehen wird. Ich meine, JavaScript ist die Sprache, welche derzeit immer stärker auf sämtlichen Websites eingesetzt wird und nirgendwo mehr wird Geld investiert als in die Verbesserung der JavaScript Engine.

Im November letzten Jahres habe ich angefangen für diese Plattform(webOS) zu entwickeln. Die Werkzeuge die Palm zu Verfügung stellt laufen unter jedem größeren Betriebssystem. Leider ist die API derzeit etwas beschränkt, d.h. auf die wichtigsten Dinge kann man zugreifen, allerdings ist es z.B. nicht möglich das Mikrofon einzubinden oder auf das lokale Dateisystem zu schreiben oder vorher angelegte Datenbanken zu verwenden oder … Trotz allem macht es mir viel Spaß Apps für den Palm Pre/Pixi zu entwickeln.

Bisher arbeite ich an drei Anwendungen: Losungen, BibleZ und SaleZ. Losungen und BibleZ waren meine ersten Projekte. Dazu habe ich hier schon mal was geschrieben. SaleZ ist eine ebay App für webOS, d.h. man kann seinen MeinEbay Inhalt auf dem Gerät sehen und nach Artikeln suchen. Auch Bieten soll mit dieser App möglich sein, doch hier warte ich noch auf eine Genehmigung von eBay. Geplant habe ich einen kostenlose “Lite” Version und eine Vollversion, welche ein wenig später erscheinen, dafür aber einige Features mehr haben soll, wie z.B. eine bessere (erweiterte) Suche und die Möglichkeit auch SofortKaufen Angebote direkt vom Gerät kaufen zu können – nur um einige Features zu nennen. SaleZ befindet sich derzeit im Betatest und ich hoffe, dass dieser bald geschafft ist, damit die App den Weg in den AppCatalog finden kann!

Ein kurzer Blick in den Rückspiegel des Jahres 2009

Rückspiegel sind wichtig. Ohne ihnen würde man wesentlich unsicherer Autofahren. Genauso ist es gut, wenn man immer mal wieder innehält, um zurück zu schauen. Dieses Jahr war ein sehr ereignisreiches für mich. Der Abschluss meines Studiums stand bevor und die damit verbundene Frage, wie es danach weiter geht. Damit war dann die erste Hälfte des Jahres auch schon ausgefüllt ;) Den Sommer habe ich sehr genossen, da ich einfach Zeit hatte für Dinge, die ich schon immer mal machen wollte. Dazu zählten u.a. ein Camping-Urlaub mit meiner Frau und das Erlernen von Python. Aus letzterem ist dann ein kleines Projekt namens BibleZ entstanden, welches mittlerweile in der Version 0.4 vorliegt. Ich bin dankbar für jedes Feedback, dass ich bekommen habe und auch die neuen Kontakte, die sich dadurch ergeben haben.

Das Jahr war für mich als Palm-User auch in der Hinsicht ein Spannendes, da das Erscheinen des Palm Pre bevorstand. Mittlerweile bin ich Besitzer eines solchen Gerätes und vom Betriebssystem (webOS) sehr angetan (im Gegensatz zur Verarbeitung des Pre und dem SDK…). In den letzten Wochen habe ich an einem Port von BibleZ für webOS gearbeitet, welcher mittlerweile auch als sogenannte Homebrew-App verfügbar ist und demnächst den Weg in den AppCatalog finden dürfte. (Hier gibt es eine kleine VideoDemo).

Zur Zeit bin ich mehr oder weniger am Studieren und Jobben. Dadurch (und v.a. seitdem ich angefangen habe zu Programmieren) bleibt leider wesentlich weniger Zeit für das Bloggen. Einige interessante Dinge sind mir in den letzten Monaten begegnet, von ich bei Gelegenheit einmal berichten werden.

Ein Blick in den Rückspiegel ist wichtig, aber wer nur nach hinten schaut, lebt/fährt auch gefährlich. Ein neues Jahr steht an und ich freue mich auf neue Herausforderungen, auf (hoffentlich) einen Referendariatplatz, neue Kontakte und ein wenig mehr Zeit für’s Bloggen ;)

In diesem Sinn wünsche ich euch noch ein gesegnetes Fest!

[Update2] Losungen der Herrnhuter Brüdergemeine für webOS

LosungenSeit ein paar Tagen beschäftige ich mich intensiver mit dem webOS SDK und den entsprechenden APIs und Widgets. Heute nun habe ich mich mal hingesetzt und ein kleines Programm geschrieben: Die Herrnhuter Losungen! Das Programm zeigt automatisch die Losung des aktuellen Tages an. Es ist aber auch möglich die Losung eines bestimmten Tages anzuzeigen (nur Jahre 2009 und 2010).

Update: Es ist eine neue Version von Losungen verfügbar. Enthalten sind ein paar kleine Änderungen in der Bedienung, d.h. zum Ändern des Datums braucht man jetzt nur auf den Balken am oberen Bildschirmrand zu “tappen”.

Update2: Losungen ist jetzt auch im App Catalog verfügbar und kann nun bequem auf dem Palm Pre o.ä. installiert werden.

Download Losungen für webOS (Version 1.1.0)

Und hier noch ein paar Screenshots: