Notificaciones no vinculantes al descargar o copiar archivos por red con Growl y Applescript

01/12/2009 por Redacción

test_applescript_disco.jpgCalamidad nos cuenta: "Hola: trabajamos en una oficina donde estamos contínuamente pasándonos archivos de un ordenador a otro. El problema es que tenemos que estar a gritos preguntando si el archivo ha terminado de copiarse, porque si lo intentas abrir creyendo que ha terminado da error ... y esto es un fastidio y una molestia. Hemos probado varios métodos, pero todos ellos son bastante intrusivos. ¿Podéis echarnos una mano?".

Una buena solución a este problema es usar las Acciones de Carpeta, una característica del sistema que "se usa poco" pero que es una gran adición de Mac OS X. Las acciones de carpeta determinan que se puede hacer con un archivo una vez que se incluye dentro de una carpeta y permite, usando Applescript, modificarlo o realizar acciones de todo tipo con el.

Para activar las Acciones de Carpeta de una carpeta solo hay que acceder al menú contextual de la misma y en la parte de abajo dispondremos de la opción correspondiente: al activarla tendremos un cuadro de diálogo con la gestión de las diferentes carpetas que tienen las Acciones de Carpeta activadas y los Scripts que ejecutan.

Apple ofrece por defecto varias acciones de todo tipo, algunas de ellas orientadas al tratamiento de imágenes y otras, avisos como el caso que nos ocupa. Estos scripts se almacenan en Librería > Scripts > Folder Action Scripts.

Captura-de-pantalla-2009-11-30-a-las-13.10.27.jpg

La solución mas sencilla para el caso que nos ocupa es usar un script que viene por defecto: add - New item alert.scpt, que nos mostrará un cuadro de diálogo una vez se haya añadido un archivo a esta carpeta.

Sin embargo este script es bastante intrusivo, porque requiere una acción por parte del usuario (pulsar un botón) y en muchos casos lo que necesitamos es simplemente saber que el archivo ya ha llegado y que está disponible para usarlo en el momento que lo necesitemos.

Una buena opción para solucionar este problema es usar Growl.

Este software, gratuito, es un sistema de avisos no vinculante, es decir, solo informa pero no requiere ninguna decisión por nuestra parte. La ventaja de Growl, es que es compatible, vía plug ins o soporte integrado con un listado mucho más amplio de aplicaciones, incluido iTunes, la mayoría de clientes de correo del mercado, clientes de FTP, etc.

Growl básicamente nos informa de las aciones que toma el programa y de sus resultados si los hubiera. Resulta muy cómodo porque los avisos pueden tomar diferentes formas y aspectos, e incluso puede guardar un log de lo que ha hecho el programa y enviar correos electrónicos con los diferentes resultados. Y además trabaja muy bien con AppleScript. La aplicación mantiene informado al usuario de ciertas operaciones que realiza el ordenador ofreciéndome confirmaciones de tareas hechas o de su estado. Se maneja desde un panel de control dentro de las preferencias del sistema de una manera sencilla y transparente. Es Binario Universal. Puedes descargar Growl desde la Web del desarrollador.

Un vez descargado e instalado Growl, lo que vamos a hacer es aprovecharnos de su soporte Applescript para recibir la información oportuna sin necesidad de realizar ninguna acción.

Partiremos de un script de Cocoa Forge:

on adding folder items to this_folder after receiving added_items

try

set notification to ""

set fileList to ("") as Unicode text

set notifyTitle to ("") as Unicode text

tell application "Finder"

--get the name of the folder

set the folder_name to the name of this_folder

end tell

set the item_count to the number of items in the added_items

repeat with thisFile in added_items

tell application "Finder"

--get the name of the folder

set the file_name to the name of thisFile

end tell

if the fileList is "" then

set the fileList to the fileList & file_name

else

set the fileList to the fileList & ", " & file_name

end if

end repeat

if the item_count is 1 then

set notifyTitle to "Nuevo archivo en la carpeta " & the folder_name & ""

set notification to fileList & " ha sido añadido a la carpeta " & the folder_name & "."

else

set notifyTitle to "Nuevo archivo/s en la carpeta " & the folder_name & ""

set notification to fileList & " ha sido añadido a la carpeta " & the folder_name & "."

end if

tell application "System Events"

if (application processes whose name is "GrowlHelperApp") is not {} then

tell application "GrowlHelperApp"

register as application ¬

"Folder Actions" all notifications {"Added File"} ¬

default notifications {"Added File"} ¬

icon of application "Finder"

notify with name "Added File" title notifyTitle description notification application name "Folder Actions" icon of file this_folder with sticky

end tell

end if

end tell

end try

end adding folder items to

Copia y pega el script en un documento nuevo del Editor de Scripts, guárdalo en Librería > Scripts > Folder Action Scripts. Ahora en Acciones de Carpeta selecciona este nuevo script y cuando el archivo termine de copiarse, recibirás una notificación de Growl sin la necesidad de tener que pulsar ningún botón.

Comentarios

  • avatar
    #1 Anónimo el 30/11/2009
    Muchas gracias, de verdad. Sois muy, muy buenos. Funciona de maravilla.
  • avatar
    #2 Anónimo el 30/11/2009
    Buenisimo!
  • #3 Javi Dominguez el 30/11/2009
    Nosotros usamos iChat para comunicación y envío de archivos.
    Tienes controlada la comunicación y el envío es claro y directo entre usuarios.
  • avatar
    #4 Anónimo el 30/11/2009
    El título es espesísimo, pero el truco es MUY, MUY bueno. Es más, creo que sería posible reenviar estas notificaciones vía el servidor de Growl para que se supiera el final de la copia si estás en otro ordenador.

Escribe un comentario

Regístrate o identifícate para poder comentar