

Los scripts permiten extender Amarok con facilidad sin cambiar el código base principal. Los scripts son similares a las extensiones, pero en lugar de tener una API de extensiones dedicada utiliza la interfaz DCOP de Amarok para comunicarse. Éste hace posible la escritura de scripts en la mayor parte de los lenguajes de programación, como Ruby, Python o PHP. No solo puede crear scripts en los clásicos lenguajes de scripts, sino también en lenguajes compilados como C++ o C plano. Además, Amarok puede notificar los scripts para ciertos eventos y reaccionar de forma acorde. Este sistema de notificación se explicará posteriormente en esta sección.
Es posible escribir scripts simples que no necesiten interacción del usuario, y también es posible crear scripts con GUIs confortables que actúan como pequeñas aplicaciones independientes. Para la programación de GUI se pueden utilizar muchas de las interfaces que proporciona KDE, por ejemplo RubyQt, una biblioteca QT de interfaces para Ruby. Sin embargo, debe tener en cuenta que no todos los usuarios tienen todas las interfaces instaladas. Si decide utilizar una interfaz, pruebe a utilizar una de las más usadas (p.ej. RubyQt o PyQt).
Para provocar alguna reacción cuando falla la ejecución de un scripts por culpa de que falta una dependencia, compruebe si el módulo que desea incluir en su script existe. Si falta la dependencia, debería capturar el error y mostrar un diálogo con información utilizando la herramienta de la línea de órdenes «kdialog», de forma que el usuario sepa porqué falló la ejecución del script.
Este ejemplo muestra la captura de una dependencia que falta en Ruby:
begin
require 'Korundum'
rescue LoadError
error = 'Este script necesita Korundum (interfaz de KDE para ruby) que se encuentra en kdebindings v3.4.'
`kdialog --sorry '#{error}'`
exit
end
Amarok proporciona scripts modelo para varios lenguajes en el directorio scripts/templates/. Puede utilizar estos scripts como base para sus propios scripts, y extenderlo con la funcionalidad que necesite. Verá que la programación es bastante intuitiva. Por ejemplo, si sabe programar un poquito en Python, hacer su propio script no le tomará mucho tiempo.
Los programas pueden controlar Amarok llamando a algunas funciones DCOP. La forma más sencilla es llamar a la función utilizando la utilidad de la línea de órdenes «dcop», que forma parte de cada distribución de KDE.
Veamos un ejemplo para incrementar el volumen:
dcop amarok player volumeUp
La mayor parte de los lenguajes de script permiten ejecutar programas externos, con una función como exec(). De esta forma la utilidad «dcop» puede llamarse fácilmente. Veamos un ejemplo simple en Python:
import os
os.system("dcop amarok player volumeDown")
Amarok envía notificaciones a todos los scripts en ejecución escribiendo cadenas en el canal de la entrada estándar stdin. No obstante el script debería estar escuchando constantemente en stdin, para poder reaccionar de acuerdo con cada uno de los posibles eventos. Los scripts también pueden decidir ignorar cualquier evento que no necesiten.
Amarok envía las siguientes notificaciones:
Indica al script que muestre el diálogo de configuración. El script debe manejar el guardado y carga de las opciones de configuración por sí mismo. Cuando se inicia un programa, Amarok asigna la carpeta donde está el directorio de trabajo, siendo ésta el lugar en el que se guardarán los datos.configure
Asigna un cambio en el estado del motor.engineStateChange: [empty|idle|paused|playing]
Asigna el inicio de una nueva pista. El programa puede utilizar las funciones DCOP para pedir más información sobre la pista, p.ej., metadatos y longitud.trackChange
Establece un cambio en el nivel del volumen. El volumen es un entero con un rango de entre 0 y 100.volumeChange [nuevoVolumen]
Devuelve las rutas de los archivos seleccionados en la lista de reproducción cuando se pulse el elemento del menú contextual El submenú y el títuloElemento se devuelven para identificar los propósitos en el caso de que el script estuviera esperando varias notificaciones. Para insertar un elemento en el menú contextual utilice la llamada DCOP «dcop amarok script addCustomMenuItem( submenú títuloElemento )». Para eliminar un elemento del menú contextual utilice la llamada DCOP «dcop amarok script removeCustomMenuItem( submenú títuloElemento )».customMenuClicked: [submenú títuloElemento rutas]
Antes de salir de Amarok, o cuando se detiene el script con el Gestor de scritps, Amarok envía la señal SIGTERM al script. La señal debe capturarse para hacer un trabajo limpio, permitiendo guardar los datos o la configuración.
El Gestor de scripts de Amarok es capaz de instalar paquetes de programas que el usuario haya descargado del servidor web. Los paquetes son simplemente archivos comprimidos .tar, y opcionalmente archivos comprimidos con bzip2 (.bz2). Le recomendamos encarecidamente el uso de un nombre de archivo del estilo miscript.amarokscript.tar.bz2, de forma que el usuario pueda identificar con facilidad el paquete como un script de Amarok.
Amarok 1.3 solo aceptará paquetes de script con la extensión amarokscript, por tanto, es mejor utilizarlo para comenzar.
El contenido del paquete comprimido debe estar organizado de la siguiente forma:
miscript/ README miscript.py (ejecutable) algunmodulo.py foo.data ...
El script principal deber tener permisos de ejecución (+x), mientras que los módulos adicionales que cargue el script no deberían tener permisos de ejecución. Para preservar los permisos del archivo en el archivo comprimido, debería utilizar el parámetro -p.
tar -cf miscript.amarokscript.tar -p miscript
Amarok no podrá instalar el script si los permisos no están correctamente establecidos.
Cuando finalice el paquete, puede subirlo a www.kde-apps.org, y añadir el enlace a la página wiki de scripts de Amarok. Para introducir la entrada en kde-apps debería utilizar la categoría Scripts de Amarok.