Scrobbeln mit Delphi

Der Begriff "Scrobbeln" beschreibt den Vorgang, das aktuell gespielte Lied in sein Userprofil auf Last.fm einzutragen. Last.fm ist ein auf Musik spezialisierter Web2.0-Dienst. Über die "gescrobbelten" Lieder kristallisiert sich mit der Zeit ein Musikgeschmack heraus, der mehr oder weniger mit dem von anderen Last.fm-Usern übereinstimmt. Über die diversen Funktionen auf dieser Seite können dann Leute mit ähnlichem Geschmack gefunden werden, um über deren Scrobbel-Liste weitere Lieder kennenzulernen, die man selbst wahrscheinlich auch gut findet. Für weitere Details, auch zu hier verwendeten Begriffen: Last.fm-Api-Dokumentation.

Download Download SrobblerUtils
SrobblerUtils
419,7 KiB

Was liefert ScrobblerUtils?

ScrobblerUtils implementiert das verwendete Protokoll und kapselt die nötigen Aufrufe relativ komfortabel. ScrobblerUtils kann recht einfach in einen bestehenden Player-Code integriert werden. Der Code des Players muss folgendermaßen erweitert werden:

  • ScrobblerUtils sendet zur Laufzeit diverse Messages an das Anwendungsfenster. Auf diese muss entsprechend reagiert werden, um die in separaten Threads herunter-/hochgeladenen Daten passend zu verarbeiten
  • Der User muss angeleitet werden, der Anwendung Schreibzugriff auf sein Profil zu gewähren. Das sind im Wesentlichen drei Klicks, der mittlere davon im Webbrowser
  • Wenn der Player die Wiedergabe startet, pausiert, stoppt oder das Lied wechselt, muss ein passender Scrobbel-Aufruf in den Code eingefügt werden.

Der Rest geht dann von selbst, d.h. ScrobblerUtils kümmert sich selbstständig darum, ob ein Lied überhaupt gescrobbelt werden darf (z.B. wenn es lang genug gespielt wurde), und casht bei Verbindungsproblemen ggf. die abgespielten Lieder, um sie bei erneuter Verbindung in einem Rutsch zu scrobbeln.

Benötigte Komponenten, IDE

Getestet mit Delphi 7 Personal und Delphi 2009 Professional 
Indy-Komponenten (Version 10)
eine MD5-Unit (liegt bei)

Lizenz, Einschränkungen

MPL 1.1 oder LGPL 2.1 mit folgenden Einschränkungen

  • Es müssen zusätzlich die "Terms of Use" von LastFM berücksichtigt werden. Das schließt ausdrücklich kommerzielle Software aus.
    In der Demo-Anwendung ist ein API-Key und zugehöriges Secret verwendet, welches NUR ZU DEMOZWECKEN verwendet werden soll. Eine entsprechende Warnung kommt auch während der Authentifizierung. Wer diese Unit nutzen möchte: Unbedingt ein eigenes Key/Secret-Paar besorgen! Das erhält man auf Wunsch, wenn man sich bei LastFM anmeldet. Das hier verwendete Paar gehört einem Dummy-Fake-User, den ich für diese Zwecke angelegt habe.
  • Client-ID und Version sind in der Demo "tst" und "1.0". Diese Daten dürfen nur während der Entwicklung benutzt werden, und haben in einem fertigen Programm nichts verloren. Vor Veröffentlichung muss eine eigene Client-ID bei LastFM beantragt werden!

Hinweise zur Nutzung und empfohlene Erweiterungen

Es ist sinnvoll, das "Secret" nicht im Klartext in der Anwendung zu verwenden. Mit Kenntnis von Key und Secret könnte jemand eine andere Anwendung schreiben, die sich als deine Arbeit ausgibt, um den LastFM-User zu täuschen, sein Profil verunstalten und die Schuld dir in die Schuhe schieben.
Möglichkeiten: Im Code "verstecken" und zur Laufzeit generieren, oder besser: Die nötigen md5-Summen, in denen das Secret verwendet wird, vom eigenem Webserver berechnen lassen. Dazu wäre weitere Kommunikation nötig, auch mit einem anderen Server als LastFM, was aber möglicherweise den User mißtrauisch macht.
Der Sessionkey, der während der Authentifizierung ermittelt wird, sollte "sicher" gespeichert werden. Hier wird er unverschlüsselt in einer Ini gespeichert. Mit dem Session-Key und Username könnte jemand anderes Zugriff auf das Nutzerprofil erlangen. Da dieser Key auch unverschlüsselt übertragen wird, ist "sicher" hier ein sehr relativer Begriff.