# 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:

&percnt;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.