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 tdebindings 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.