Archive for September 2008

h1

Musik Daten per LastFM API in Python

September 30, 2008

Kennt jemand LastFM nicht? Das ist ein US-Radiosender, und nebenbei die wohl größte Internet-Musik-Community. Kennt jemand APIs nicht? Das sind Programmierschnittstellen, die bestimmte Dienste für Programmierer zu Verfügung stellen. So, da jetzt alles geklärt ist, will ich kurz erläutern wie man solche APIs in Python benutzt, und mit diesem Beispiel, wie man die Informationen zu einem bestimmten Album eines Künstlers rausfindet.

# Lastfm Api
# This class provides methods to get music information
# as well as general lastfm api access
# we use urllib and xml.dom.minidom to parse the information
import urllib2

import xml.dom.minidom

class lastfmApi():
  def __init__(self):
    self.apiUrl = 'http://ws.audioscrobbler.com/2.0/'
    self.apiKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
    self.apiString = self.apiUrl + '?api_key=' + self.apiKey + '&method='

  def getXml(self, url):
    url = url.replace(' ','%20')
    return xml.dom.minidom.parseString(urllib2.urlopen(url).read())

  def getAlbumId(self, interpreter, album):
    # Build Api Request url e.g.
    # http://ws.audioscrobbler.com/2.0/?method=album.getinfo&api_key=xxxxxxxxxxxxxxxxxxxxxx&artist=Cher&album=Believe
    api_method = 'album.getInfo'
    api_interpreter = '&artist=' + interpreter
    api_album = '&album=' + album
    url = self.apiString + api_method + api_interpreter + api_album
    #Process xml
    doc = self.getXml(url)
    return doc.getElementsByTagName('id')[0].childNodes[0].data


  def getAlbumPlaylist(self, interpreter, album):
    albumId = self.getAlbumId(interpreter, album)
    api_method = 'playlist.fetch'
    api_playlist = '&playlistURL=lastfm://playlist/album/' + albumId
    url = self.apiString + api_method + api_playlist
    # Process xml
    doc = self.getXml(url)
    tracksXml = doc.getElementsByTagName('title')
    # Collect all titles in a list
    songlist = [title.childNodes[0].data for title in tracksXml]
    # Delete first element
    print songlist
    return songlist[1:]

Der Code erklärt sich größtenteils von selbst, es werden die Urls zusammengefügt und der XML Code verarbeitet. Die Funktion getXML kann man eigentlich für alles benutzen.

Nun könnt ihr Daten folgendermaßen abfragen:

>>> import lastfm_api as lastfm
>>> api = lastfm.lastFmApi()
>>> api = lastfm.lastfmApi()
>>> api.getAlbumPlaylist(‚The Cranberries‘,’Wake up and smell the coffee‘)
[u’The Cranberries – Wake Up and Smell the Coffee‘, u’Never Grow Old‘, u’Analyse‘, u’Time Is Ticking Out‘, u’Dying Inside‘, u’This Is The Day‘, u’The Concept‘, ….., u’Every Morning‘, u’Do You Know‘, u’Carry On‘, u’Chocolate Brown‘, u’dreams (live in paris)‘, u’promises (live in paris)‘, u’In the Ghetto (Non LP Version)‘]

Weiterführende Infos gibt es hier: http://www.lastfm.de/api

h1

Schlangen und Schildkröten – Die Turtle Library in Python

September 30, 2008

Erst vor kurzem war ich auf der Suche nach einer kleinen Libary für Python, mit der man Grafiken erstellen kann! Mit Turtle wurde ich dann fündig und war sofort von der simplen Implementierung begeistert! Hier ein kleines Beispiel:

from turtle import*
reset()
def zeichneQuadrat(seitenLaenge): # in Pixel
# zuerst das Quadrat selbst
forward(seitenLaenge)
left(90)
forward(seitenLaenge)
left(90)
forward(seitenLaenge)
left(90)
forward(seitenLaenge)
# noch ein kleiner Kommentar =)
up()
goto(200,0)
write("Das ist ein Quadrat!")

zeichneQuadrat(100)

Durch die einfachen Funktionen erklärt sich das Beispiel fast von selbst: Nach dem Importieren der Lib Turtle kann man gleich loslegen!

  • reset() erstellt euch ein leeres „Zeichenblatt“
  • mit forward(pixelanzahl) bewegt ihr den Stift nach vorn (auch backward() ist möglich)
  • left(grad)/right(grad) dreht den Stift um die angegebene Gradzahl
  • up() sorgt dafür das ihr vorübergehend nicht zeichnet wenn sich der Stift bewegt (kann mit down() behoben werden)
  • goto(x-position,y-position) gibt eine Stelle an, an die sich der Stift bewegen soll, 0,0 entspricht dabei der Mitte des Fensters
  • wirte(text) schreibt den gewünschten Text auf das Zeichenbrett

Natürlich gibt es noch viele weitere Funktionen, mit denen man sehr interessante Aufgaben bewältigen kann, zum Beispiel das Zeichnen von geometrischen Figuren oder Diagrammen (wobei letzteres ein wenig aufwendig wäre man nehme Google Charts API =P)

Wer mehr lernen will, informiere sich hier: http://home.foni.net/~heikos/tkinter/node2.html

h1

Apple Bashing

September 29, 2008

Eigentlich finde ich ja das iPhone ganz nett, aber irgendwo hat das Bild dann doch recht. Man kann nicht gerade behaupten, dass dieses Wundertelefon nicht an manchen Stellen zu wünschen übrig lasse.

h1

Latex Makefile + Vim und Evince

September 29, 2008

Ich hoffe der Titel ist nicht zu erschreckend, eigentlich will ich nur davon erzählen, wie ich mir das Editieren eines Latex Dokuments einfacher gemacht habe.

Der normale Bearbeitungsrythmus:

-editieren in Vim und speichern

-anderes Terminal aufrufen und „pdflatex text.tex“ ausführen

-Dokument mit „evince text.pdf“ öffnen

Abhilfe dieser Qual schafft da ein Makefile, welches wie folgt aussieht:

# Kleines Makefile zum Erzeugen eines
# PDF-Dokumentes aus einer Latex-Datei.

NAME = slide
INPUT = $(NAME).tex
OUTPUT = $(NAME).pdf

$(OUTPUT): $(INPUT)
        pdflatex $(INPUT)
        evince $(OUTPUT)

Jetzt tippe ich nur noch in Vim „:make“ und meine Latex Datei wird übersetzt und mir auch gleich angezeigt. Makefiles werden übrigens einfach unter dem Namen „Makefile“ gespeichert.

h1

persönlicher Uptimerekord oO

September 28, 2008

thomas@jane:~$ uptime
22:20:01 up 11:13,  5 users,  load average: 0.53, 0.54, 0.52

Jetzt gehts aber auch ins Heia-bettchen, 11 Stunden reichen denke ich für den Tag…

h1

Geschenke beim Google Developer Day

September 28, 2008

USBstick Kopf ab

Google shirtGoogle shirt hinten

Schlüsselband und Freikarten fürs Legoland

(Wer interesse an den Freikarten hat, kann sich ja mal hier melden :D)

h1

und der Blogger sprach:

September 28, 2008

(13:57:31) noqqe: habe grade einen richtig guten artikel über die neue form von intelligenz gelesen
(13:57:41) noqqe: heisst : „Google macht doof.“
(13:58:25) Thommy: zeig mal^^
(13:58:30) noqqe: wie solln das gehn
(13:58:36) noqqe: ist in der aktuellen NEON
(13:58:39) Thommy: aso dachte, n artikel im internet^^
(13:58:52) noqqe: ich steh nich so auf digitale medien^^

(noqqe.de)