Curso Applescript: Recursos; adiciones de script (osaxen) y otros (bibliotecas, ‘appe’s, ‘FBA’s, UNIX…), por Julifos

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.

Con la entrada del OS X, parecía que iban a ser pocos los autores de viejas osaxen que actualizarán sus comandos. De hecho, hasta el día de hoy, han sido muy pocos. Uno de ellos ha sido Jon Pugh, con sus Jon’s Commands, que siguen funcionando estupendamente. Por contra, han llegado bastantes nuevos autores con nuevas utilidades; pero el tema aún está pendiente, porque no se sabe qué planea Apple respecto de la arquitectura de plugins, etc. Ya veremos…

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.

* Si queremos instalarlas sólo para un usuario, la primera vez tendremos que crear una carpeta llamada “ScriptingAdditions” en la “Librería” de nuestra “home”, y copiarlas ahí.

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.

* Akua Sweets y Tanaka’s aún no están portadas a OS X, pero se espera su llegada en cualquier momento.

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

*Ya lo ha hecho!

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

set nuevo_texto to Busca_y_reemplaza(“b”,”c”,”barajo”)

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

Sobre velocidad en búsquedas y reemplazos de texto, ver este pequeño artículo.

Ejemplo que sustituye el comando “round”, de la Adiciones Estándar, que es mucho más rápido y eficaz:

set nuevo_numero to roundNumber(25.2675, 1)

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

0 0 votos
Article Rating
Subscribe
Notify of
1 Comment
Oldest
Newest Most Voted
Opiniones Inline
Ver todos los comentarios
trackback
1 year ago

[…] 17/11/2004 – Recursos; adiciones de script (osaxen) y otros (bibliotecas, ’appe’s, ’FBA’s, UNIX…) […]

1
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x