Adiciones de script (OSAX): Las adiciones de scripts son archivitos chorras que están en la carpeta “ScriptingAdditions” dentro de la librerÃa general o local (en OS 9 en la carpeta de “Adiciones de Script” en la Carpeta del Sistema), y que permiten utilizar comandos que no existen en AppleScript, lo cual los convierte en herramientas poderosÃsimas. Por ejemplo, gracias a ellas podemos hacer invisibles documentos y carpetas, hacer búsquedas y reemplazos de texto, conectarnos a Internet, borrar archivos sin avisar, desplegar interfaces, presionar teclas y el ratón sin hacerlo realmente… Vamos, de todo.
Las adiciones de script u osax(en) son realmente librerÃas de comandos escritas en C/C++, y algunas son extremadamente poderosas. Por ejemplo, Akua Sweets (hablo de la versión 1.4.3) implementa más de 150 comandos que permiten manipular el Finder, imágenes, sonidos, texto, pelÃculas, acceso a Internet y muchas cosas más. Gracias a Dios, parece que esta adición seguirá desarrollándose más allá del OS X, aunque Mr. Gregory Lemperle-Kerr no lo ha hecho aún, ni creo que vaya a hacer una “trasposición” de su Akua.
Con que estén en la carpeta de Adiciones de Script (o su equivalente en OS X*), podemos utilizar sus comandos para hacer lo que queramos.
Cuando instalamos nuestro sistema operativo, nos vienen unas cuantas por defecto: las Adiciones Estándar, los Comandos de Acceso Remoto… Asà pues, con estas solas herramientas ya podemos hacer muchas cosas. No obstante, conviene tener unas cuantas adiciones que resultan muy útiles (y aquà doy sólo mi parecer):
– Akua Sweets*: implementa más de 150 comandos (algunos muy útiles), y es muy rápida.
– Tanaka’s osax*: tiene también muchos comandos y permite manipulaciones complejas de texto y “resources”.
– Para sistemas OS 9 y anteriores, Dialog Director, que permite desplegar interfaces con botones, iconos, pop-ups, etc.
– ACME Script Widgets, que también manipula texto e incorpora algunas funciones útiles para el manejo del AppleScript para CGI.
– Jon’s Commands, que tiene de todo un poco y es una adición con funciones muy interesantes.
– XML Tools, que ahora están de moda para la intercomunicación de la máquina con cosas de PHP, SOAP, XML-RPC, etc.
– Satimage, que viene con “Smile“, un editor de scripts, que incorpora funciones de texto y matemáticas.
Por supuesto, hay cientos de adiciones que no he dicho y que, en un momento dado y según nuestros intereses particulares, nos pueden salvar la vida. Las hay de todo tipo. Para ver las últimas versiones, tenemos que visitar SIEMPRE http://osaxen.com/. Si queremos echar un vistazo a versiones antiguas y peculiares, entonces hay que ir a http://osax.cjb.net/ (ese magnÃfico sitio hecho por mÃ).
De la pequeña lista que he dado, parece que todas estas adiciones van a seguir desarrollándose, excepto “Dialog Director”, cuyo autor, Christopher E. Hyde está desaparecido desde hace tiempo para el mundo de las osaxen. Por su parte, Jon Pugh, el autor de (entre otras muchas cosas) los “Jon’s Commands”, dijo hace poco en la lista de Apple (applescript-users@lists.apple.com) que no tenÃa caso actualizar la mitad de los comandos que habÃa hasta OS 9 por culpa de la implementación de UNIX en el Mac OS X, pero prometió echarle un vistazo al resto de su magnÃfica librerÃa.*
UNIX
Tal vez les parezca extraño este titulillo… Voy a explicar qué tiene que ver UNIX en este asunto.
El lenguaje de UNIX se parece a AppleScript, en el sentido de que se ayuda de bibliotecas externas para realizar diversas tareas. Estas bibliotecas se almacenan en sitios extraños, como “usr/local/bin” y cosas asÃ; y estas movidas son como las osaxen: código compilado que responderá a las llamadas de un “shell script”. Y, por descontado, también pueden almacenarse y utilizarse en otras localizaciones (en cualquiera, dirÃa yo).
Por poner un ejemplo, existen las bibliotecas “rar” y “unrar”, que sirven para comprimir y descomprimir el formato “rar”, muy utilizado en PC. Pues se las puede invocar desde la lÃnea de comandos (por ejemplo, desde el Terminal, y suponiendo que las hayamos instalado) de esta manera:
unrar x /archivo.rar
Y desempaquetará el llamado “archivo.rar”. Como podemos ver, funciona de manera similar a las osaxen. Nombre de comando y parámetros: x (desempaquetar con el full path) y “archivo.rar” (el archivo a decodificar).
¿Y qué tiene esto que ver con AppleScript? Pues mucho, porque podemos acceder a estas grandiosas utilidades a través de la aplicación Terminal y, lo que es mejor aún, desde el comando do shell script, que se incorporó hace no mucho en las Adiciones Estándar. Por tanto, en AppleScript dirÃamos:
do shell script “unrar x /archivo.rar”
Y el efecto serÃa el mismo…
Ya veremos en un capÃtulo más extenso, si procede, algunas de las principales utilidades que podemos darle al “do shell script” que, en principio, se me antojan ilimitadas.
Otros
Se supone que con la llegada del Mac OS X y su asimilación con UNIX, va a tener mucha importancia el “lenguaje modular”. O sea, las “bibliotecas”. O sea, pequeños archivos que realicen subrutinas básicas y que puedan ser utilizados por todo el mundo. Desde hace no más de un año (es ahora el 2002) está creciendo mucho el uso de bibliotecas. Estas bibliotecas se pueden hacer de muchas maneras (de hecho, las adiciones de script son un tipo de biblioteca), pero ahora se trabaja mucho con applescript. Simplemente se elaboran “handler” que (cargados en el programa principal), realizan tareas especÃficas de bajo nivel. Voy a poner de ejemplo 4 casos:
– XML-RPC Lib, compañera de las XML Tools (de Mark Aldritt). En conjunción con esta adición de script, permite realizar llamadas a servidores de PHP para recoger información. Ya la usan muchos programitas (entre ellos, “Script Spy”, un invento que tenemos entre Rob Jorgensen y yo).
– Image Info, de David Lloyd, que sirve para recoger información sobre imágenes de una manera extraordinariamente rápida, y que no requiere nada más que a ella misma. (desde la versión 3, también es una aplicación con interface)
– MacScript Lib, una colección de muchas rutinas básicas y para el Finder de MacScript.com. Lo malo que tiene es que no es gratis, lo cual la hace en sà una mierda, porque no tiene nada de original.
– MSIE Library, que aparece aquà por dos razones: porque la he hecho yo y porque es un ejemplo de implementación de librerÃa orientada a aplicaciones. Incorpora funcionalidades para que un applescripter que no sabe javascript-JScript realice todo tipo de operaciones con el Internet Explorer.
Vuelvo a repetir que estas “librerÃas” o “bibliotecas” no son una novedad porque, de hecho, ya llevaban años funcionando cuando el “AppleScript Handbook” de Danny Goodman salió con varias bibliotecas de muestras hace diez años. Pero ahora se han puesto de moda y ya no hay quien las pare.
La mejor muestra de esta fiebre bibliotequera es la existencia de Has y su página, The Little Page of AppleScripts, donde podemos encontrar una contundente colección de rutinas y bibliotecas, que no dejan de sorprender por el malabarismo y el más absoluto purismo, que recuerda en algunos momentos a nuestro “perdido” Richard23.
Otro buen sitio para encontrar estas subrutinas es AppleMods.com (como se ha dado en llamar a estas subrutinas), parte de MacScripter.net. Allà hay (y se pueden enviar) rutinas para manipulación de listas, “records”, fechas, datos, números, caracteres ASCII, etc. Hay algunas cosas increÃbles y que, con muy pocas lÃneas de código, pueden llegar a ser más rápidas que las propias adiciones de script. Vamos a ver dos ejemplos muy sencillos sacados de la AUL (applescript-users list, de Apple).
Ejemplo sustituyente de cualquier adición de script con una función de búsqueda y reemplazo de texto (sólo para búsquedas y reemplazos simples con menos de 4000 coincidencias):
display dialog nuevo_texto
on Busca_y_reemplaza(busco, reemplazo, texto)
tell (a reference to AppleScript’s text item delimiters)
set {oldTID, contents} to {contents, {busco}}
set {lT, contents} to {(text items of texto), {reemplazo}}
set {nT, contents} to {(lT as text), oldTID}
return nT
end tell
end Busca_y_reemplaza
Ejemplo que sustituye el comando “round”, de la Adiciones Estándar, que es mucho más rápido y eficaz:
display dialog nuevo_numero
on roundNumber(theNumber, decPlace)
set decPlace to 10 ^ decPlace
(((theNumber * decPlace) + 0.5) div 1) / decPlace
end roundNumber
No sé de qué va todo esto, pero funciona muy bien y, efectivamente, es más rápido que las Adiciones Estándar, aparte de que permite redondear también decimales.
En cuanto a los “appe“, no hay mucho que decir. Suelen ser aplicaciones “FBA“; o sea, que corren en el “background” (como las “Acciones de Carpeta” o la Barra de Controles). Algunas son paneles de control, otras extensiones… Y otras, simplemente eso, aplicaciones FBA. También pueden ser “APPL” (aplicaciones, propiamente dichas), “APPC“, “INIT“, “cdev” o lo que sea.
En OS X ya no hay “appe”, pero sà FBAs. Un buen ejemplo es Extra Suites, de Kanzu software, que incorpora muchÃsimos comandos que habÃamos perdido en la transición de OS 9 a OS X.
Los ejemplos inmediatos son “AppleScript para la red”, “AppleScript para URL” o “Gestor impresión de escritorio” en OS 9, o “URL Access Scripting” y “Image Capture Scripting”, que son FBA’s que vienen instalados por defecto. Todas estas aplicaciones son “scriptables” y podemos utilizar sus comandos para lo que nos venga en gana. Digamos que no trabajan para ellas mismas (como lo puede hacer Quark o Word con sus comandos), sino que son elementos auxiliares para nosotros, y que no pueden ser utilizadas si no es vÃa AppleScript (más o menos, porque siempre hay una manera, claro está, aunque no entraremos en detalles).
AppleScript para URL (o URL Access Scripting), por ejemplo, tiene dos comandos: “upload” y “download” que, en sà mismo, ya están bastante bien. Con ellos podemos navegar sitios, subir documentos por FTP, etc.
Investigando un poco, podemos encontrar más cosas aún, de tipo “estándar”, que todo el mundo tiene, a no ser que las haya borrado expresamente. Son por ejemplo, el panel de control de Apariencia de OS 9, que también puede recibir apple events, Acciones de Carpeta (que sirve para lo que buenamente el nombre explica), etc. En OS X vienen incorporadas en los System Events, junto con muchas otras grandiosas utilidades. Una de ellas es lo que Apple ha llamado UI Scripting, que consiste en que podemos acceder a los elementos de cualquier aplicación basada en Cocoa (por ejemplo, el panel de preferencias o el Finder), lo cual es bastante interesante, ya que podemos acceder a los elementos de menú, comandos de teclado, etc., de la mayorÃa de aplicaciones.
Vamos, que hay muchos elementos auxiliares de los cuales podemos desconocer su existencia, pero que ahà están, esperando a ser útiles. Ahora voy a hacer una pequeña mención a otras cosas que NO están ahà y que también pueden ayudarnos:
– PreFab Player, es una extensión que sirve para controlar el ratón, el teclado y los menús de cualquier aplicación o ventana. En OS X, como acabamos de decir, le ha salido una especie de sustituto en System Events; y, también de mano de PreFab Software y de Bill Cheeseman, un gran auxiliar para comprender y elaborar estos scripts, tenemos el PreFab UI Browser, una especie de “navegador de elementos de interfaz”.
– Menu Events, en pre-X, era un grupo de extensión + adición de script que servÃa para controlar los menús de cualquier aplicación.
– NetEvents, también en pre-X, es una aplicación (también disponible en forma de FBA) con la cual se podrÃa poner a funcionar un programa de correo electrónico o un servidor web. Lee y escribe a los “stream”, hace look-ups, etc.
– ScriptServer, pre-X, es una aplicación de Jon Pugh que sirve para compilar y ejecutar scripts on-the-fly.
– Script Daemon, pre-X, hace algo parecido, pero vÃa TCP/IP.
– Una breve mención para Extra Suites (ya hemos hablado de ello anteriormente) y Image Info, que están concebidos para ser controlados por AppleScript y han sido portados a OS X magistralmente.
En MacScripter.net hay un listado (todavÃa deja bastante que desear) de este tipo de aplicaciones y otras que sirven para el manejo de AppleScript y Apple Events. Está bien echarle un vistazo, porque en un futuro la lista estará muy completa.
Los restantes artÃculos sobe AppleScript se pueden encontrar en la categorÃa de Tutorial
[…] 17/11/2004 – Recursos; adiciones de script (osaxen) y otros (bibliotecas, ’appe’s, ’FBA’s, UNIX…) […]