Logotipo de Zephyrnet

Codificación de maestros: explorando archivos CalDav

Fecha:

Codificación de profesores: exploración de archivos CalDav

25 de agosto de 2019

Es el comienzo del año escolar, y para mí una de las grandes tareas mundanas es preparar mi calendario para el año escolar. El SAS casero de nuestra escuela tiene esta gran característica que generará un archivo .ics que contiene todas sus clases que puede importar al calendario de Google o cualquier otro programa de calendario. Pero tiene un problema: todos los datos de su clase están en el archivo único. Como tenemos un nuevo horario rotativo, esperaba poder poner cada clase en su propio calendario para poder ver mejor cómo se está trazando una clase en particular durante las próximas semanas.

Cuando lo pensé un poco, me di cuenta de que era una gran oportunidad para poner en práctica mis habilidades de codificación. Sabía que un archivo .ics era básicamente un archivo de texto que enumeraba todos los eventos que se importarían al calendario. Abrí el archivo de calendario en un editor de texto (Atom, en este caso) y echó un vistazo:

Captura de pantalla 2019 08 25 a las 11 23 39 PM

Si observa detenidamente este archivo, verá que la estructura es bastante simple. Las primeras 7 líneas son el encabezado que configura el calendario, y luego cada evento comienza con un INICIO: VEVENT y termina con un FIN: VEVENT 7 líneas más tarde.

Eso me hizo pensar que podría escribir un programa de Python que encontraría el primer evento, y luego analizarlo en fragmentos de 7 líneas, escribiendo cada fragmento en un archivo basado en la clase con la que estaba asociado (la línea RESUMEN).

Sabía que Python es excelente para esto, pero había olvidado los puntos más finos de leer y escribir archivos, así que lo busqué en Google. Tampoco sabía cómo analizaría el archivo de texto en fragmentos de 7 líneas, pero googlear "analizar archivo de texto n líneas a la vez python" me envió a esta publicación muy útil eso me presentó a itertools y la función islice que hace exactamente lo que necesitaba.

Aquí está el programa que se me ocurrió (enlace al código en Github Gist):

Nueva imagen

Si está interesado, aquí hay un screencast de 5 minutos donde explico cómo funciona este código

En total, me llevó unos 45 minutos escribir este código, lo que probablemente sea casi la cantidad de tiempo que me habría llevado cortar y pegar el archivo original en 4 archivos de calendario separados. También estoy seguro de que hay algún experto en expresiones regulares que podría haber hecho esto en 5 segundos, y si estás leyendo esto, me encantaría saberlo en los comentarios.

Si estaba en mi escuela o tenía un archivo calDav similar que contenía eventos con el mismo nombre que quería separar en archivos individuales, debería poder modificar las cadenas de búsqueda en las líneas 27, 31, 35 y 39 a lo que sea que está buscando, cambie los nombres de los archivos de salida en las primeras 4 líneas y estará listo para comenzar.

Ahora, tengo una idea mucho mejor de cómo funcionan los archivos CalDav, y puedo pensar en muchas maneras de modificar este programa:

  • Si supiera todos los días que iba a dar una prueba en una clase, podría armar un archivo que enumeraría todos los días de prueba para compartir con mis alumnos.
  • Podría modificar este programa para calcular el número total de períodos de clase o el total de minutos que tengo en una clase.
  • Podría exportar mi calendario de Google como un archivo .ics, y luego usar un programa como este para analizar todo tipo de preguntas, como si hubiera registrado mis entrenamientos, con qué frecuencia hago ejercicio en el último año.


Fuente: https://quantumprogress.wordpress.com/2019/08/25/teachers-coding-exploring-caldav-files/

punto_img

Información más reciente

punto_img