Calendario de feriados de Chile para Google Calendar

Tenía una duda: ¿cuales son los feriados de cada año? ¿será necesario tener que esperar a comprar un calendario para saberlo? Con ese par de preguntas me puse a buscar donde Mr. G para ver si existía algo relacionado a los feriados. Para mi sorpresa, Miguel Farah investigó en diversas fuentes todo lo relacionado a los feriados chilenos, aspirando a listar los que ya pasaron y los del futuro, asombrosamente hasta el 2100.

Viendo esta info se me ocurrió pasarla a Google Calendar. Para ello la idea es importar todas las fechas hasta el 2100 en uno de los formatos que Google Calendar acepta. En este caso, el conocido públicamente como iCalendar y crípticamente como la especificación RFC2445 :)

El procedimiento
Obteniendo las fechas del sitio antes mencionado, podemos generar un listado enorme que guardaré en el archivo baseTres, el que limpiando un poco con el típico Find & Replace, podemos dejarlo de esta forma

21/05/2009 Día de las Glorias Navales

como el formato de fecha no es aceptado por el estándar, jugamos con el Find & Replace, logrando un listado de la forma

21 05 2009 @Día_de_las_Glorias_Navales

Con lo que podemos separar en cuatro campos (21,05,2009, @Día_de_las_Glorias_Navales) gracias a los espacios simples.

Con nuestro viejo amigo AWK reordenamos el asunto ya que Día Mes Año debe quedar como AñoMesDía, es decir, en variables, $1 $2 $3 como $3$2$1:

awk -F" " '{printf $3$2$1" "$4"n"}' baseTres > date

logrando un archivo llamado date como sigue

20090521 @Día_de_las_Glorias_Navales

Find & Replace nuevamente y tenemos un lindo archivo con este formato

20090521@Día de las Glorias Navales

Ahora como pueden notarlo, el separador será una @ para distinguir fechas de descripción. Para formatear el archivo en iCal y guardarlo en calendario.html (puede ser cualquier formato):

awk -F"@" '{printf "BEGIN:VEVENT<br>URL:VEVENT<br>DTSTART:"$1"<br>DTEND:"$1<br>SUMMARY:"$2"<br>LOCATION:Chile<br>END:VEVENT<br><br>“}’ date > calendario.html

Esto nos entrega el listado en el formato iCal de este estilo

BEGIN:VEVENT
URL:VEVENT
DTSTART:20090101
DTEND:20090101
SUMMARY:Año Nuevo (irrenunciable)
LOCATION:Chile
END:VEVENT

A lo que debemos agregar la cabecera del archivo

BEGIN:VCALENDAR
PRODID:-//FERIADOSCHILE//EN
VERSION:3.0

y el pie del archivo

END:VCALENDAR

Generando el inmenso archivo con feriados el que será importado por una cuenta especialmente creada para la ocasión.

Como agregarlo a tu calendario

Ingresa a calendar.google.com. En la columna izquierda abajo encontrarás algo como “otros calendarios” y “añadir el calendario de un amigo”. En tal recuadro agrega feriadoschile@gmail.com y listo! :D

Como recomendación, pueden cambiarle color a rojo para marcar el feriado tal como en un calendario tradicional.

Notas finales y agradecimientos
Existen múltiples formas de lograr lo mismo, probablemente magos de AWK en una línea lo lograrían :) el sentido era lograr la utilidad y… funciona!. Cualquier sugerencia o comentario será leído atentamente.

El procedimiento para creación del calendario, puede usarse para crear otro calendario de otro país, organización o eventos que tengan algo de sistemático. Algo mezclado con rss sería interesante, por ejemplo, para generar carteleras de eventos por localidad :O

Agradezco a Sergio Lorca por salvarme con Ubuntu Live ya que por acá no lo tengo y desde luego a Miguel Farah por toda la pega que ha hecho en lo relativo a documentar los feriados de Chile.

Enlaces relacionados
Internet Calendaring and Scheduling Core Object Specification (iCalendar)
Días feriados en Chile

(2386)