Avancerede Amarok-funktioner
Genvejstaster
&amarok; bruger tastaturgenveje ligesom de fleste andre programmer. Nedenfor er der en liste af disse genveje og deres respektive handlinger. De globale genveje kan indstilles ved at højreklikke i afspillervinduet og vælge Indstil globale genveje... &amarok;'s genveje kan indstilles ved at højreklikke i afspillerevinduet og vælge Indstil genveje...
Du kan knytte dine multimedie-taster til at virke som genveje for &amarok; og derved gøre dit tastatur til et kontrolcenter for &amarok;.
De globale genveje er:
Tastekombination
Handling
WinX
Spil
WinC
Pause
WinV
Stop
WinB
Næste spor
WinZ
Forrige spor
WinKP_Add
Højere lydstyrke
WinKP_Subtract
Lavere lydstyrke
WinShiftKP_Add
Søg fremad
WinShiftKP_Subtract
Søg tilbage
WinA
Tilføj medie
WinP
Slå spilleliste til og fra
WinO
Vis OSD
WinM
Slå lyd fra
&amarok;'s genveje er:
Tastekombination
Handling
CtrlC
Kopiér
CtrlKP_Enter
Gå til nuværende
CtrlD
Sæt markerede spor i kø
CtrlQ
Afslut
CtrlShiftZ
Annullér fortryd
CtrlS
Gem spilleliste
CtrlA
Markér alle
CtrlM
Vis menulinje
CtrlH
Bland
CtrlZ
Fortryd
Spilleliste-browserens genveje er:
Tastekombination
Handling
Mellemrum
Indlæs spilleliste
F2
Omdøb spilleliste
Backspace
Fjern spilleliste
DCOP-Grænsefladen
Amarok's DCOP-grænseflade giver dig en nem måde at kontrollere Amarok med dine hjemmelavede scripter.
DCOP-grænsefladen for Amarok har mange generiske kald der kan findes i andre af KDE's programmer. Dette afsnit er opdelt i seks tabeller og er beregnet til at beskrive DCOP-kald for samling, sammenhængsbrowser, afspiller, spilleliste, spillelistebrowser og scripter. Et eksempel på pause
dcop-kaldet ville se sådan ud:
%dcop amarok player pause
dcop amarok-samling
DCOP-kald
Handling
int totalAlbums()
Returnerer det totale antal albummer i samlingen.
int totalArtists()
Returnerer det totale antal artister i samlingen.
int totalCompilations()
Returnerer det totale antal samlingsalbummer i samlingen.
int totalGenres()
Returnerer det totale antal genrer i samlingen.
int totalTracks()
Returnerer det totale antal spor i samlingen.
QString query( QString sql)
Sender en forespørgsel til databasen via SQL.
QStringList similarArtists( int artister )
Returnerer lignende artister som det nuværende spor, begrænset til antal givet af artister.
void migrateFile( QString gammel_url, QString ny_url )
Flyt en fil i samlingen, og behold statistikken intakt.
void scanCollection()
Gennemsøg samlingen.
void scanCollectionChanges()
Søg kun gennem samlingen efter ændringer.
dcop amarok sammengs-browser
DCOP-kald
Handling
void showCurrentTrack()
Vis det nuværende spor i sammenhængsbrowseren.
void showLyrics()
Vis sangtekstfanebladet i sammenhængsbrowseren.
void showWiki()
Vis Wikipedia-fanebladet i sammenhængsbrowseren.
dcop amarok player
DCOP-kald
Handling
bool dynamicModeStatus()
Returnér status for dynamisk tilstand.
bool equalizerEnabled()
Returnér status for equalizeren.
bool isPlaying()
Returnér sand hvis noget spilles nu.
bool randomModeStatus()
Returnér status for tilfældig tilstand
bool repeatPlaylistStatus()
Returnér status for gentagelse af spillelisten.
bool repeatTrackStatus()
Returnér status for gentagelse af spor.
int getVolume()
Returnér lydstyrke i intervallet 0 - 100 %.
int sampleRate()
Returnerer samplingsfrekvensen for sporet som for øjeblikket spilles.
int score()
Returnér scoring for sporet som for øjeblikket spilles.
int status()
Returnér afspilningsstatus: 0 - stoppet, 1 - pause, 2 - spiller.
int trackCurrentTime()
Returnerer nuværende afspilningsposition i sekunder.
int trackPlayCounter()
Returnerer afspilningstælleren for nuværende sang.
int trackTotalTime()
Returnerer sporlængden i sekunder.
QString album()
Returnerer albummet for sporet som for øjeblikket spilles.
QString artist()
Returnerer artisten for sporet som for øjeblikket spilles.
QString bitrate()
Returnér bithastigheden for sporet som for øjeblikket spilles (i kilobit pr sekund).
QString comment()
Returnerer kommentaren for sporet som for øjeblikket spilles.
QString coverImage()
Returnerer den kodede URL for nuværende spors omslag
QString currentTime()
Returnér positionen for sporet som for øjeblikket spilles (i formatet [t:]mm:ss).
QString encodedURL()
Returnér den indkodede url for sporet som for øjeblikket spilles.
QString engine()
Returnerer nuværende lydgrænseflade.
QString genre()
Returnerer genren for sporet som for øjeblikket spilles.
QString lyrics()
Returnerer sangteksten for sporet som for øjeblikket spilles.
QString lyricsByPath( QString søgesti )
Returnér sangtekst for et spor ifølge søgesti.
QString nowPlaying()
Titlen på det medium som nu spilles.
QString path()
Returnér den ikke-indkodede søgesti for sporet som for øjeblikket spilles.
QString setContekstStyle( QString )
Indstil CSS-stilen for sammenhængsbrowseren.
QString title()
Returnerer titlen for sporet som for øjeblikket spilles.
QString totalTime()
Returnér den totale længde for sporet som for øjeblikket spilles (i formatet [t:]mm:ss).
QString track()
Returnér spornummeret.
QString type()
Returnér filtypen.
QString year()
Returnerer året for sporet som for øjeblikket spilles.
void configEqualizer()
Skift equalizerens indstillingsdialog.
void enableDynamicMode(bool aktivere)
Slå dynamisk tilstand til og fra.
void enableOSD(bool aktivér)
Slå skærmmeddelelser til og fra.
void enableRandomMode(bool aktivere)
Slå tilfældigt tilstand til og fra.
void enableRepeatPlaylist(bool aktivere)
Slå gentagelse af spilleliste til og fra.
void enableRepeatTrack(bool aktivere)
Slå gentagelse af spor til og fra.
void mediaDeviceMount()
Indstiller kommandoen som bruges til at montere medieenheder.
void mediaDeviceUmount()
Indstiller kommandoen som bruges til at afmontere medieenheder.
void mute()
Slå lyd til og fra.
void next()
Svarer til at klikke på knappen "Næste".
void pause()
Svarer til at klikke på knappen "Pause".
void play()
Svarer til at klikke på knappen "Spil".
void playPause()
Skift tilstand mellem at spille og holde pause (godt for brugere af multimedietastatur)
void prev()
Svarer til at klikke på knappen "Foregående".
void queueForTransfer( KURL url )
Sæt filer i kø for overførsel til medieenheden.
void seek(int s)
Søg i sporet til positionen i sekunder.
void seekRelative(int s)
Søg til en position i forhold til sporets nuværende position.
void setEqualizer(int, int, int, int, int, int, int, int, int, int, int)
Indstil equalizerens bånd
void setEqualizerEnabled( bool active )
Skift equalizeren.
void setEqualizerPreset( QString navn )
Indstil equalizerens forudindstilling
void setLyricsByPath( QString url, QString sangtekst )
Indstil sangtekst for et spor ifølge dets søgesti.
void setScore( int scoring )
Indstil scoring for sporet som for øjeblikket spilles.
void setScoreByPath( QString url, int scoring )
Indstil scoring for et spor ifølge dets søgesti.
void setVolume(int lydstyrke)
Indstil lydstyrke i intervallet 0 - 100 %
void showBrowser( QString browser )
Viser browserne i spillelistens vindue.
void showOSD()
Vis skærmmeddelelser på skærmen.
void stop()
Svarer til at klikke på knappen "Stop".
void transferDeviceFiles()
Overfør filer til medieenheden.
void volumeDown()
Mindsk lydstyrke med et rimeligt skridt.
void volumeUp()
Øg lydstyrke med et rimeligt skridt.
dcop amarok playlist
DCOP-kald
Handling
int getActiveIndex()
Returnér indeks for sporet som for øjeblikket er aktivt. -1 hvis intet.
int getTotalTrackCount()
Returnér antal spor i spillelisten. 0 hvis ingen.
QString saveCurrentPlaylist()
Gemmer den nuværende spilleliste i nuværende.xml og og returnerer dens søgesti.
void addMedia( KURL )
Tilføj lydmedium angivet af url'en.
void addMediaList( KURL::List )
Tilføj et lydmedie angivet af url'en.
void clearPlaylist()
Rydder spillelisten.
void playByIndex(int)
Begynder at afspille sporet med angivet indeks.
void playMedia( KURL )
Tilføj lydmedium angivet af url'en.
void popupMessage( QString)
Viser en midlertidig skærmmeddelelse.
void removeCurrentTrack()
Fjerner nuværende spor fra spillelisten.
void repopulate()
Fyld i spillelisten ind igen med tilfældige spor.
void saveM3u( QString søgesti, bool relativ_søgesti)
Gemmer nuværende spilleliste som m3u.
void setStopAfterCurrent( bool )
Aktiverer eller deaktiverer funktionen "Stop efter dette spor".
void shortStatusMessage( QString)
Viser en midlertidig meddelelse på statuslinjen.
void shufflePlaylist()
Blander spillelisten.
void togglePlaylist()
Slå spillelistens vindue til og fra.
dcop amarok playlistbrowser
DCOP-kald
Handling
void addPodcast( QString )
Tilføj en podradioudsendelse til spillelistebrowseren.
void scanPodcasts()
Søg gennem alle podradioudsendelser efter opdateringer.
void addPlaylist( QString )
Tilføj en spilleliste til spillelistebrowseren.
dcop amarok script
DCOP-kald
Handling
bool runScript( QString navn)
Starter scriptet med angivet navn. Returnerer sandt hvis det lykkes.
bool stopScript( QString navn)
Stopper scriptet med angivet navn. Returnerer sandt hvis det lykkes.
QStringList listRunningScripts()
Returnerer en liste med scripter som for øjeblikket kører.
void addCustomMenuItem(QString undermenu, QString punkttitel )
Aktiverer og indstiller titlen for eget menupunkt.
void removeCustomMenuItem(QString undermenu, QString punkttitel )
Fjerner det egne menupunkt.
QString readConfig( QString nøgle)
Returnerer værdien af en indstillingsindgang fra AmarokConfig for angiven nøgle.
Kommandolinje-tilvalg
Amarok understøtter brug af de sædvanlige Qt- og KDE-kommandolinjeflag. Amarok har også sine egne programspecifikke flag.
Qt og kde flag:
Tilvalg
Handling
--help
Vis hjælp om flag.
--help-qt
Vis Qt-specifikke flag.
--help-kde
Vis KDE-specifikke flag.
--help-all
is alle flag.
--author
Vis udviklerinformation.
-v, --version
Vis versionsinformation.
--license
Vis licensinformation.
Amarok-flag:
amarok's flag er designet til at blive brugt mens Amarok kører.
Tilvalg
Handling
-r, --previous
Spring over forrige spor på spillelisten.
-p, --play
Start med af spille den nuværende spilleliste.
-s, --stop
Stop afspilning.
--pause
Hold pause i afspilning.
-f, --next
Spring over det næste spor på spillelisten.
-a, --append
Vedlæg filer/URL'er i spillelisten.
-e, --enqueue
Se append, tilgængelig for bagudkompatibilitet.
--queue
Sætter filer/URL'er i kø efter det spor der afspilles nu.
-m, --toggle-playlist-window
Slå spillelistens vindue til og fra.
--wizard
Start førstekørselsguide.
--engine "navn"
Start &amarok; med "navn"-motoren.
Skrive scripter
At skrive scripter tillader dig nemt at udvide &amarok; uden at ændre den egentlige kodebase. Scripter ligner plugin, men i stedet for en særlig programmeringsgrænseflade bruger de &amarok;s DCOP-grænseflade til kommunikation. Det gør det muligt at skrive scripter i næsten hvilket som helst programsprog, såsom Ruby, Python eller PHP. Du kan ikke kun oprette scripter med klassiske scriptsprog, men også med kompilerede sprog såsom C++ eller almindelig C. Desuden kan &amarok; underrette scripter om særlige begivenheder og få dem til at reagere i overensstemmelse med dem. Systemet med underretninger forklares senere i afsnittet.
Bindinger
Det er muligt at skrive enkle scripter som ikke kræver indblanding af brugeren, og det er også muligt at oprette scripter med bekvemme grafiske grænseflader som fungerer som små program i sig selv. For programmering af den grafiske grænseflade kan en af de mange bindinger som KDE sørger for bruges, for eksempel RubyQt, en binding til Qt-biblioteket for Ruby. Det er dog værd at notere at ikke alle brugere har installeret alle tilgængelige bindinger. Hvis du bestemmer dig for at bruge en binding, så forsøg at bruge en af dem som er relativt udbredte (f.eks. RubyQt eller PyQt).
For at give nogen tilbagemelding når et script mislykkes at køre på grund af en afhængighed som mangler, skal du kontrollere i scriptet om modulet du vil inkludere virkelig findes. Hvis afhængigheder mangler, bør du fange fejlen og vise en informationsdialog med kommandolinjeværktøjet "kdialog", så brugeren får rede på hvorfor scriptet mislykkes at køre.
Følgende eksempel viser hvordan en afhængighed som mangler kan fanges i Ruby:
begin
require 'Korundum'
rescue LoadError
error = 'Korundum (KDE-bindinger for Ruby) fra kdebindings v3.4 kræves af dette script.'
`kdialog --sorry '#{error}'`
exit
end
Kom i gang: Skabelonerne
&amarok; sørger for skabelonscripter for flere sprog i mappen scripts/templates/. Du kan bruge disse scripter som en basis for dine egne, og udvide dem med funktioner du behøver. Du vil bemærke at det i virkeligheden er ganske ligetil at skrive scripter. Hvis du for eksempel véd en del om hvordan man programmerer i Python, tager det ikke lang tid at oprette dit eget script.
Kontrollér &amarok; med DCOP
Scripter kan styre Amarok ved at kalde visse af dets DCOP-funktioner. Den enkleste måde at udføre en DCOP-funktion er ved at bruge kommandolinjeværktøjet "dcop", som indgår i alle distributioner af KDE.
Her er et eksempel på hvordan hovedlydstyrken øges:
dcop amarok player volumeUp
De fleste scriptsprog tillader at eksterne programmer køres, med en funktion såsom exec(). På den måde kan værktøjet "dcop" nemt kaldes. Her er et enkelt eksempel i Python:
import os
os.system("dcop amarok player volumeDown")
Underretninger
&amarok; sender underretninger til alle scripter som kører ved at skrive strenge til deres standardindtastning. Scripterne bør derfor hele tiden overvåge standardindtastningen og reagere på passende måde på hver af de mulige begivenheder. Scripter kan også vælge at ignorere alle begivenheder de ikke har nogen nytte af.
Følgende underretninger sendes af &amarok;:
configure
Fortæller scriptet at dets indstillingsdialog skal vises. Scriptet
skal håndtere lagring og indlæsning af indstillingstilvalg selv.
Når et script startes, indstiller Amarok dets arbejdsmappe til mappen
hvor al data skal opbevares.
engineStateChange:empty|idle|paused|playing
Signalerer en ændring af grænsefladens tilstand.
trackChange
Signalerer start af et nyt spor. Scriptet kan derefter bruge DCOP-funktioner
til at spørge efter yderligere information om sporet, f.eks. metadata og længde.
volumeChangeny-volym
Signalerer en ændring af hovedlydstyrken. Lydstyrken er et heltal med
intervallet 0 - 100.
customMenuClicked:undermenu objektnavn søgestier
Returnerer søgestier til markerede filer i spillelisten når det egne tilvalg
i spillelistens sammenhængsafhængige menu klikkes. Undermenuen og objektnavnet returneres
også i identifieringsformål i tilfældet hvor et script lytter efter flere underretninger.
Brug DCOP-kaldet 'dcop amarok script addCustomMenuItem( undermenu objektnavn )'
til at indsætte et objekt i den sammenhængsafhængige menu. Anvend
DCOP-kaldet 'dcop amarok script removeCustomMenuItem( undermenu objektnavn )'
til at fjerne et objekt fra den sammenhængsafhængige menu.
Afslutning af script
Inden &amarok; afsluttes, eller når brugeren stopper et script i scripthåndteringen, sender &amarok; signalet SIGTERM til scriptet. Signalet kan indfanges for at udføre oprensningsarbejde, såsom at gemme data eller indstillinger.
Pakning
Scripthåndteringen i &amarok; kan installere scriptpakker som brugeren har hentet ned fra en webserver. Pakker er blot sædvanlige arkiver (.tar), valgfrit komprimerede med bzip2 (.bz2). Vi anbefaler stærkt at bruge et filnavn såsom mit-script.amarokscript.tar.bz2, så brugeren læt kan identificere pakken som et script for Amarok.
&amarok; 1.3 accepterer kun scriptpakker med filendelsen amarokscript, det er altså bedre at bruge det lige fra begyndelsen.
Filens indhold skal være organiseret på følgende vis:
mit-script/
README
mit-script.py (kørbar fil)
en-modul.py
fil.data
...
Filrettigheder
Hovedscriptet skal have kørerettigheder (+x) indstillede,mens yderligere moduler som scriptet indlæser ikke skal have kørerettigheder. For at bevare filrettigheder i arkivet, skal du bruge tar med flaget -p.
tar -cf mitt-script.amarokscript.tar -p mit-script
&amarok; kan ikke installere scriptet hvis filrettighederne ikke er rigtigt indstillede.
Distribution
Når pakken er klar, kan du overføre den til www.kde-apps.org og tilføje linket på &amarok;s Wiki scriptside. For indgangen i kde-apps skal du bruge kategorien &amarok; Scripter.