Amaroks erweiterte Funktionen
Tastenkürzel
&amarok; benutzt wie alle anderen Programme Tastenkürzel. Unten finden Sie eine Liste dieser Kürzel und ihre Funktion. Die globalen Tastenkürzel können Sie einrichten, indem Sie mit der rechten Maustaste in das Player-Fenster klicken und Globale Tastenkürzel einrichten... auswählen. Die &amarok;-spezifischen Tastenkürzel können Sie einrichten, indem Sie mit der rechten Maustaste in das Player-Fenster klicken und Kurzbefehle festlegen... auswählen.
Sie können eventuell vorhandene Multimedia-Tasten so einrichten, dass sie als &amarok;-Kurzbefehle funktionieren. Dadurch machen Sie Ihre Tastatur zum &amarok;-Kontrollzentrum.
Die globalen Tastenkürzel sind:
Tastenkombination
Funktion
WinX
Wiedergabe
WinC
Pause
WinV
Stopp
WinB
Nächstes Stück
WinZ
Voriges Stück
WinNum_Plus
Lautstärke erhöhen
WinNum_Minus
Lautstärke senken
WinShiftNum_Plus
Vorwärts suchen
WinShiftNum_Minus
Rückwärts suchen
WinA
Hinzufügen
WinP
Wiedergabeliste anzeigen/ausblenden
WinO
OSD anzeigen
WinM
Stumm schalten
Die &amarok;-spezifischen Kurzbefehle sind:
Tastenkombination
Funktion
StrgC
Kopieren
StrgNum_Eingabe
Zum aktuellen Stück springen
StrgD
Ausgewählte Stücke in die Warteschlange einstellen
StrgQ
Beenden
StrgShiftZ
Wiederholen
StrgS
Wiedergabeliste speichern
StrgA
Alles auswählen
StrgM
Blendet die Menüleiste ein/aus.
StrgH
Zufallsmodus
StrgZ
Rückgängig
Die Kurzbefehle für den Wiedergabelisten-Browser sind:
Tastenkombination
Funktion
Leertaste
Wiedergabeliste laden
F2
Wiedergabeliste umbenennen
Rücktaste
Wiedergabeliste entfernen
Die DCOP-Schnittstelle
Mit Hilfe der DCOP-Schnittstelle können Sie Amarok ganz leicht durch eigene Skripte erweitern.
Die DCOP-Schnittstelle von Amarok hat viele allgemeine Funktionen, die zumeist auch in anderen KDE-Programmen zu finden sind. Dieser Abschnitt besteht aus sechs Teilen und soll die DCOP-Funktionen von Sammlung, Kontext-Browser, Player, Wiedergabeliste, Wiedergabelisten-Browser und Skripten beschreiben. Ein Beispielaufruf für die DCOP-Funktion pause
könnte &zb; so aussehen:
%dcop amarok player pause
dcop amarok collection
DCOP-Aufruf
Funktion
int totalAlbums()
Gibt die Gesamtzahl der Alben in der Sammlung zurück.
int totalArtists()
Gibt die Gesamtzahl der Interpreten in der Sammlung zurück.
int totalCompilations()
Gibt die Gesamtzahl der Zusammenstellungen in der Sammlung zurück.
int totalGenres()
Gibt die Gesamtzahl der Genres in der Sammlung zurück.
int totalTracks()
Gibt die Gesamtzahl der Stücke in der Sammlung zurück.
QString query( QString sql)
Fragt die Datenbank mit Hilfe einer SQL-Abfrage ab.
QStringList similarArtists( int artists )
Gibt die ähnlichen Interpreten für das aktuelle Stück zurück - beschränkt auf die Maximalzahl int artists.
void migrateFile( QString oldURL, QString newURL )
Verschiebt eine Datei innerhalb der Sammlung und behält dabei die Statistiken bei.
void scanCollection()
Durchsucht die Sammlung
void scanCollectionChanges()
Durchsucht die Sammlung nur nach Änderungen.
dcop amarok contextbrowser
DCOP-Aufruf
Funktion
void showCurrentTrack()
Zeigt das aktuelle Stück im Kontext-Browser an.
void showLyrics()
Zeigt das Text-Unterfenster im Kontext-Browser an.
void showWiki()
Zeigt das Wikipedia-Unterfenster im Kontext-Browser an.
dcop amarok player
DCOP-Aufruf
Funktion
bool dynamicModeStatus()
Gibt den Status des dynamischen Modus zurück.
bool equalizerEnabled()
Gibt den Status des Equalizers aus.
bool isPlaying()
Gibt true zurück, wenn derzeit ein Stück gespielt wird.
bool randomModeStatus()
Gibt den Status des Zufallsmodus zurück.
bool repeatPlaylistStatus()
Gibt den Status des Wiederholungsmodus für die Wiedergabeliste zurück.
bool repeatTrackStatus()
Gibt den Status des Wiederholungsmodus für das Stück zurück.
int getVolume()
Gibt die Lautstärke im Bereich zwischen 0-100% zurück.
int sampleRate()
Gibt die Abtastrate für das aktuell laufende Stück zurück.
int score()
Gibt die Punkte für das aktuell laufende Stück zurück.
int status()
Gibt den Wiedergabestatus zurück: 0 = gestoppt, 1 = pausiert, 2 = wiedergabe.
int trackCurrentTime()
Gibt die aktuelle Abspielposition in Sekunden zurück.
int trackPlayCounter()
Gibt den Wiedergabezähler für das aktuelle Stück zurück.
int trackTotalTime()
Gibt die Stücklänge in Sekunden zurück.
QString album()
Gibt das Album des derzeit laufenden Stücks zurück.
QString artist()
Gibt den Interpreten des aktuellen Stücks zurück.
QString bitrate()
Gibt die Bitrate des aktuellen Stücks zurück (XX kbps).
QString comment()
Gibt den Kommentar zum aktuell laufenden Stück zurück.
QString coverImage()
Gibt die kodierte Adresse zum Cover-Bild des aktuell laufenden Stücks zurück.
QString currentTime()
Gibt die Wiedergabeposition des aktuell laufenden Stücks im Format [h:]mm:ss zurück.
QString encodedURL()
Gibt die kodierte Adresse des aktuell laufenden Stücks zurück.
QString engine()
Gibt den zur Zeit verwendeten Audio-Treiber zurück.
QString genre()
Gibt das Genre des aktuell laufenden Stücks zurück.
QString lyrics()
Gibt den Text des aktuell laufenden Stücks zurück.
QString lyricsByPath( QString path )
Gibt den Text eines im Pfad angegebenen Stücks zurück.
QString nowPlaying()
Der Titel des aktuell laufenden Mediums.
QString path()
Gibt den unkodierten Pfad zum aktuell laufenden Stück zurück.
QString setContextStyle( QString )
Legt den CSS-Stil für den Kontext-Browser fest.
QString title()
Gibt den Titel des aktuell laufenden Stücks zurück.
QString totalTime()
Gibt die Gesamtlänge des aktuell laufenden Stücks im Format [h:]mm:ss zurück.
QString track()
Gibt die Stück-Nummer zurück.
QString type()
Gibt den Dateityp zurück.
QString year()
Gibt das Erscheinungsjahr des aktuell laufenden Stücks zurück.
void configEqualizer()
Schaltet das Equalizer-Fenster ein/aus.
void enableDynamicMode(bool enable)
Schaltet den dynamischen Modus ein/aus.
void enableOSD(bool enable)
Schaltet die OSD-Anzeige ein/aus.
void enableRandomMode(bool enable)
Schaltet den Zufallsmodus ein/aus.
void enableRepeatPlaylist(bool enable)
Schaltet die Wiederholung der Wiedergabeliste ein/aus.
void enableRepeatTrack(bool enable)
Schaltet die Wiederholung eines Stücks ein/aus.
void mediaDeviceMount()
Legt den Befehl zum Einbinden eines Audio-Players fest.
void mediaDeviceUmount()
Legt den Befehl zum Lösen der Einbindung eines Audio-Players fest.
void mute()
Schaltet die Stummschaltung ein/aus.
void next()
Hat die gleiche Wirkung wie der Knopf Nächstes Stück
.
void pause()
Hat die gleiche Wirkung wie der Knopf Pause
.
void play()
Hat die gleiche Wirkung wie der Knopf Wiedergabe
.
void playPause()
Schaltet um zwischen Wiedergabe/Pause (nützlich für Besitzer von Multimedia-Tastaturen).
void prev()
Hat die gleiche Wirkung wie der Knopf Vorheriges Stück
.
void queueForTransfer( KURL url )
Stellt eine Datei in die Warteschlange zur Übertragung auf den Media-Player ein.
void seek(int s)
Spult im Stück an die Position in Sekunden.
void seekRelative(int s)
Spult zu einer Position relativ zur aktuellen Position.
void setEqualizer(int, int, int, int, int, int, int, int, int, int, int)
Legt die Equalizer-Einstellungen fest.
void setEqualizerEnabled( bool active )
Schaltet den Equalizer ein/aus.
void setEqualizerPreset( QString name )
Legt die Equalizer-Voreinstellung fest.
void setLyricsByPath( QString url, QString lyrics )
Legt den Text eines Stücks unter der angegebenen Adresse fest.
void setScore( int score )
Legt die Punkte für das aktuell laufende Stück fest.
void setScoreByPath( QString url, int score )
Legt die Punkte für das mit dem Pfad angegebenen Stück fest.
void setVolume(int volume)
Legt die Lautstärke im Bereich zwischen 0-100% fest.
void showBrowser( QString browser )
Zeigt die Browser im Wiedergabelistenfenster an.
void showOSD()
Zeigt das OSD an.
void stop()
Hat die gleiche Wirkung wie der Knopf Stopp
.
void transferDeviceFiles()
Überträgt Dateien auf den Media-Player.
void volumeDown()
Senkt die Lautstärke merklich ab.
void volumeUp()
Hebt die Lautstärke merklich an.
dcop amarok playlist
DCOP-Aufruf
Funktion
int getActiveIndex()
Gibt den Index des aktuellen Stücks zurück, oder -1, wenn es keinen Index gibt.
int getTotalTrackCount()
Gibt die Anzahl der Stücke in der Wiedergabeliste zurück. Der Rückgabewert ist 0, wenn die Wiedergabeliste leer ist.
QString saveCurrentPlaylist()
Speichert die aktuelle Wiedergabeliste in current.xml und gibt den Pfad zurück.
void addMedia( KURL )
Fügt eine Audio-Datei anhand der Adresse ein.
void addMediaList( KURL::List )
Fügt mehrere Audio-Dateien anhand der Adresse ein.
void clearPlaylist()
Leert die Wiedergabeliste.
void playByIndex(int)
Startet die Wiedergabe eines Stücks am angegebenen Index.
void playMedia( KURL )
Fügt eine Audio-Datei anhand der Adresse ein.
void popupMessage( QString)
Zeigt eine temporäre Meldung an.
void removeCurrentTrack()
Entfernt das aktuelle Stück aus der Wiedergabeliste.
void repopulate()
Füllt die Wiedergabeliste erneut mit zufälligen Stücken.
void saveM3u( QString path, bool relativePaths)
Speichert die aktuelle Wiedergabeliste als m3u-Datei.
void setStopAfterCurrent( bool )
Aktiviert/Deaktiviert die Funktion "Wiedergabe nach aktuellem Stück anhalten".
void shortStatusMessage( QString)
Zeigt eine temporäre Meldung in der Statusleiste an.
void shufflePlaylist()
Mischt die Wiedergabeliste.
void togglePlaylist()
Zeigt das Wiedergabelisten-Fenster an bzw. blendet es aus.
dcop amarok playlistbrowser
DCOP-Aufruf
Funktion
void addPodcast( QString )
Fügt dem Wiedergabelisten-Browser einen Podcast-Eintrag hinzu.
void scanPodcasts()
Sucht für alle Podcasts nach Aktualisierungen.
void addPlaylist( QString )
Fügt dem Wiedergabelisten-Browser einen neuen Eintrag hinzu.
dcop amarok script
DCOP-Aufruf
Funktion
bool runScript( QString name)
Startet das Skript mit dem übergebenen Namen. Bei Erfolg wird true zurückgegeben.
bool stopScript( QString name)
Stoppt das Skript mit dem übergebenen Namen. Bei Erfolg wird wird true zurückgegeben.
QStringList listRunningScripts()
Gibt eine Liste aller laufenden Skripte zurück.
void addCustomMenuItem(QString submenu, QString itemTitle )
Aktiviert ein benutzerdefiniertes Menü und legt den Namen fest.
void removeCustomMenuItem(QString submenu, QString itemTitle )
Entfernt den benutzerdefinierten Menüeintrag.
QString readConfig( QString key)
Gibt einen Amarok-Konfigurationseintrag des angegebenen Schlüssels zurück.
Optionen auf der Kommandozeile
Amarok unterstützt die Kommandozeilen-Optionen von Qt und &kde;. Zusätzlich hat Amarok noch einige eigene Kommandozeilen-Optionen.
Die Qt- und &kde;-Optionen:
Option
Funktion
--help
Hilfe zu den Optionen anzeigen.
--help-qt
Qt-Optionen anzeigen
--help-kde
&kde;-Optionen anzeigen.
--help-all
Alle Optionen anzeigen.
--author
Informationen über den Autor anzeigen.
-v, --version
Versionsinformationen anzeigen.
--license
Lizenzinformationen anzeigen.
Die Amarok-Optionen:
Die &amarok;-Optionen sollten verwendet werden, während &amarok; läuft.
Option
Funktion
-r, --previous
Zum vorigen Stück in der Wiedergabeliste springen.
-p, --play
Die Wiedergabe der aktuellen Wiedergabeliste starten.
-s, --stop
Die Wiedergabe stoppen.
--pause
Die Wiedergabe anhalten (Pause).
-f, --next
Zum nächsten Stück in der Wiedergabeliste springen.
-a, --append
Dateien/URLs and die Wiedergabeliste anhängen.
-e, --enqueue
Siehe "append", nur für Rückwärtskompatibilität vorhanden.
--queue
Dateien/URLs nach dem aktuellen Stück zur Wiedergabe einreihen.
-m, --toggle-playlist-window
Die Anzeige des Wiedergabelisten-Fensters ein/ausschalten.
--wizard
Den Einrichtungsassistent starten.
--engine "Name"
Startet &amarok; mit dem Audio-Ausgabe-Modul "Name".
Schreiben von Skripten
Mit Skripten kann &amarok; leicht erweitert werden, ohne die Codebasis von &amarok; ändern zu müssen. Skripte funktionieren ähnlich wie Module (Plugins), sie verwenden aber keine dedizierte Modul-API, sondern die DCOP-Schnittstelle. Auf diese Weise können &amarok;-Skripte in nahezu jeder Sprache programmiert werden (z. B. Ruby, Python oder PHP). Sie sind nichtmal auf Skriptsprachen beschränkt sondern können auch kompilierte Programme in C oder C++ verwenden. &amarok; kann Ihre Skripte über bestimmte Ereignisse informieren, sodass Ihre Skripte entsprechend reagieren können. Das Benachrichtigungs-System wird weiter hinten in diesem Abschnitt erklärt.
Bindungen
Man kann natürlich einfache Skripte ohne jegliche Benutzer-Interaktion programmieren. Aber es ist auch möglich, Skripte mit einer komfortablen Oberfläche zu programmieren, die sich wie eine eigene Anwendung verhalten. Zum Programmieren der Oberfläche können Sie eine der vielen KDE-Bindungen verwenden, zum Beispiel RubyQt. Bedenken Sie dabei aber bitte, dass nicht jeder Benutzer alle verfügbaren Bindungen installiert hat. Wenn Sie sich für eine Bindung entscheiden, dann verwenden Sie am besten eine der weit verbreiteten wie z. B. RubyQt oder PyQt.
Sie sollten dem Anwender eine Rückmeldung geben, wenn das Skript wegen einer fehlenden Abhängigkeit nicht ausgeführt werden kann. Bitte prüfen Sie in Ihrem Skript, ob alle benötigten Module vorhanden sind und nutzen Sie kdialog
, damit der Anwender weis, warum ein Skript nicht läuft.
Dieses Beispiel soll zeigen, wie man in Ruby eine fehlende Abhängigkeit abfängt:
begin
require 'Korundum'
rescue LoadError
error = 'Korundum (KDE bindings for ruby) from kdebindings v3.4 is required for this script.'
`kdialog --sorry '#{error}'`
exit
end
Erste Schritte: Die Vorlagen
Im Ordner scripts/templates finden Sie eine Menge Vorlage-Skripte in vielen verschiedenen Sprachen. Sie können sie als Basis für Ihre eigenen Skripte verwenden oder sie einfach um die benötigten Funktionen erweitern. Sie werden schnell feststellen, dass das Schreiben von Skripten relativ einfach ist.
DCOP zur Steuerung von &amarok; verwenden
Mit Hilfe von DCOP können Ihre Skripte Daten mit Amarok austauschen und Amarok steuern. Der einfachste Weg ist die Verwendung des Kommandos dcop
;, welches jeder KDE-Installation beiliegen sollte.
So können Sie beispielsweise die Lautstärke erhöhen:
dcop amarok player volumeUp
Die meisten Skriptsprachen ermöglichen das Ausführen von externen Programmen und Befehlen. Dazu wird meist die Funktion exec() verwendet. Auf diese Weise kann dcop
>
relativ einfach aufgerufen werden. Hier ein Beispiel in Python:
import os
os.system("dcop amarok player volumeDown")
Benachrichtigungen
&amarok; sendet Benachrichtigungen an alle laufenden Skripte. Dazu werden Strings an die Standardeingabe des Skripts geschrieben. Aus diesem Grund sollten Skripte ihre Standardeingabe laufend überwachen und entsprechend auf Ereignisse reagieren. Natürlich kann ein Skript die Ereignisse auch ignorieren wenn es keine Verwendung dafür hat.
Die folgenden Benachrichtigungen werden von &amarok; gesendet:
configure
Weist das Skript an, den Einrichtungsdialog anzuzeigen.
Um das Speichern und Laden der Einrichtungsdaten muss sich jedes Skript
selbst kümmern. Wenn ein Skript gestartet wird, setzt Amarok den
Arbeitsordner auf den Ordner, wo alle Daten gespeichert werden sollten.
engineStateChange:empty|idle|paused|playing
Signalisiert eine Änderung im Modul für Audio-Ausgabe.
trackChange
Signalisiert, dass ein neues Stück angespielt wird. Das Skript könnte nun
&zb; mit DCOP-Funktionen weitere Informationen zu dem neuen Stück abfragen (zum Beispiel die Metadaten
oder die Stücklänge).
volumeChangenewVolume
Signalisiert eine Änderung der Lautstärke. Die neue Lautstärke ist ein
Integerwert zwischen 0 und 100.
customMenuClicked:submenu itemTitle paths
Enthält den Pfad zu den ausgewählten Dateien der Wiedergabeliste, wenn ein
benutzerdefinierter Menüeintrag angeklickt wurde. submenu und itemTitle
werden ebenfalls übergeben, damit das Skript den geklickten
Eintrag identifizieren kann. Um dem Menü einen eigenen Eintrag
hinzuzufügen, kann man die DCOP-Funktion dcop amarok script
addCustomMenuItem( submenu itemTitle )
verwenden. Um einen
Eintrag wieder zu entfernen verwendet man
dcop amarok script removeCustomMenuItem( submenu itemTitle )
.
Beenden von Skripten
Bevor &amarok; sich beendet, oder wenn der Benutzer ein Skript stoppt, sendet &amarok; das Signal SIGTERM an das Skript. Dieses Signal sollte verarbeitet werden, um z. B. Aufräumarbeiten zu erledigen. Dazu gehört z. B. das Speichern von Daten oder Konfigurationseinstellungen.
Skript-Pakete
Amaroks Skript-Verwaltung kann auch Skript-Pakete installieren, die der Anwender &zb; von einem Webserver heruntergeladen hat. Solche Pakete sind im Grunde normale Tar-Archive (.tar), die optional auch mit bzip2 (.bz2) komprimiert sein können. Wir empfehlen einen Archivnamen wie z. B. meinskript.amarokscript.tar.bz2, damit der Benutzer das Archiv eindeutig als Amarok-Skript-Paket erkennen kann.
&amarok; 1.3 wird nur Skript-Pakete mit der Erweitungerung amarokscript
akzeptieren. Aus diesem Grund sollten Sie Ihre Skript-Pakete gleich richtig benennen.
Der Inhalt des Skript-Pakets muss so organisiert sein:
meinskript/
README
meinskript.py (ausführbar)
einmodul.py
foo.data
...
Dateirechte
Das Hauptskript muss ausführbar sein (+x), die restlichen zu ladenden Module sollte nicht ausführbar sein. Verwenden Sie den Tar-Parameter -p um die Dateirechte zu erhalten:
tar -cf meinskript.amarokscript.tar -p meinskript
&amarok; wird das Skript nicht installieren, wenn die Dateirechte nicht korrekt eingestellt sind!
Veröffentlichung
Wenn Ihr Skript-Paket fertig ist, können Sie es auf www.kde-apps.org hinaufladen und den Link an die Wiki Skripts Seite von &amarok; anhängen. Für Ihren Eintrag auf kde-apps sollten Sie die Kategorie &amarok; Skripts verwenden.