Block > shell-fm - Last.fm ueber die Shell steuern

Letztens hab ich ja das grossartige Tool shell-fm entdeckt. Dabei bringt es sehr viele Moeglichkeiten mit sich.

shell-fm -d -i localhost erlaubt es mir nach Eingabe von Benutzername und Passwort das Programm "von fern" zu steuern. D.h. ich kann von ueberall aus mal eben schnell pausieren, skippen oder sogar die Playlist wechseln. Auch kann ich mir das gerade gespielte Lied in meiner Statusbar in WMII anzeigen lassen, samt verbleibende Sekunden.

Die Moeglichkeiten sind vielfaeltig.

Alles was man dazu braucht, ist shell-fm und netcat.

Hat man die beiden Tools installiert, kann man sich eine shell-fm.rc erstellen, in der zB sowas drin steht:

# ~/.shell-fm/shell-fm.rc
username =[name]
default-radio = lastfm://tag/Metal
t-color = 0;31
a-color = 0;34
bind = 127.0.0.1

Sinnvoll ist es dabei, in seine .bash_aliases folgendes einzutragen:

# shell-fm
alias shell-fm='shell-fm -d'
alias inf='echo info %t by %a - %l on %s/%S | nc localhost 54311'
alias skip='echo skip | nc localhost 54311'
alias quit='echo quit | nc localhost 54311'

Nun kann man auch schon mit shell-fm anfangen, Musik zu hoeren.

Der Rest ist selbsterklaerend/kann in der Manpage nachgelesen werden.

Nutzt man WMII, so kann man sein gerade gespieltes Lied anzeigen lassen:

# --- 8< ---
# ~/.wmii-3.5/wmiirc
# Status Bar Info
status() {
        echo -n $(echo info '%t by %a (%l) - %R' | nc localhost 54311) '|' $(acpi -b | sed 's/%.*//' | sed 's/.*,//') '% ' $(acpi -b | sed 's/ remaining.*//' | sed 's/.*,//') '|' $(uptime | sed 's/.*://; s/,//g') '|' $(date)
}
# --- 8< ---

Da man durch das %R nur die verbleibenden Sekunden angezeigt bekommt, habe ich mir ein kleines C++ Programm geschrieben, das diese Sekunden per Pipe einliest und in Minuten:Sekunden umwandelt.

Das Programm (danke dabei an [flo], der mir dabei etwas geholfen hat): sec2minpipe.cpp

Kompilieren kann man es mit:

$ g++ sec2minpipe.cpp -o sec2minpipe

Nun erweitert man seine Statusbar so:

# --- 8< ---
# ~/.wmii-3.5/wmiirc
# Status Bar Info
status() {
    echo -n $(echo info '%t by %a (%l)' | nc localhost 54311) '-' $(echo info '%R' | nc localhost 54311 | /pfad/zum/programm/sec2minpipe) '|' $(acpi -b | sed 's/%.*//' | sed 's/.*,//') '% ' $(acpi -b | sed 's/ remaining.*//' | sed 's/.*,//') '|' $(uptime | sed 's/.*://; s/,//g') '|' $(date)
}
# --- 8< ---

Fertig :)

Geschrieben: 2009-08-13, 16:04 - Tags: linux, shellfm, lastfm