Pantallas informativas (anexo 3): Programar fecha de inicio de reproducción de archivos

Mira que lo pensé: «Tendría que poner un algo para poder subir ficheros y que se comenzaran a reproducir a partir de una fecha…» Pero dije «Bah, para lo que se va a usar esa función…»

Pues en efecto, se usa poco, pero algo sí, y es una auténtica lata el tener que andar con posit pegados por el monitor para acordarnos de cuándo subir uno u otro archivo por no escribir cuatro líneas de código. Así que: al tajo. Vamos a escribir esas cuatro líneas y así el próximo archivo que tengamos que programar una fecha concreta de visualización será dentro de un lustro y ya ni nos acordaremos (vamos, es lo que pasa siempre, pero no escribas esas líneas y cada semana tendrás un archivo de esos. Dichoso Murphy…).

Esto lo vamos a hacer en el servidor, ya sabéis, en nuestro caso el cacharro ese que sacamos de la basura y que sigue funcionando 24/7 con Ubuntu tan campante, y que así siga ad aeternum.

En el Home de Pi, donde tenemos su carpeta datos y las subcarpetas dias y pantallas, meteremos una tercera subcarpeta: programa. En esa carpeta meteremos los archivos que se tengan que reproducir a partir de una determinada fecha.

La fecha de inicio de reproducción de los archivos la incluiremos en el nombre del archivo, al final, después de la extensión en formato YYYYMMDD al que ya estamos acostumbrados. Crontab ejecutará un sencillo script que comparará los últimos 8 caracteres del nombre del archivo con la fecha actual, y si coinciden moverá dicho archivo a la carpeta pantallas eliminando esos caracteres. ¡Fácil!

Así pues, si queremos anunciar que se abre un plazo de inscripciones, digamos, el 15 de marzo de 2021 y el archivo se llama «inscripcurso.jpg», pues lo subiríamos a la carpeta programa con el nombre inscripcurso.jpg20210315 y nos podemos olvidar de él sin necesidad de tener año y medio un posit colgando del monitor.

Vale, pues ahora que ya hemos definido el método, escribimos el script:

Como se puede ver es muy simple, ocupan más espacio los comentarios que el código.

En modo copy&paste:

#!/bin/bash
#Comprobamos la fecha actual y la metemos en variable hoy
hoy=$(date +%Y%m%d)
#Comprobamos los ficheros que puede haber en la carpeta programa
for file in /home/pi/datos/programa/*
do
#Sacamos su nombre y lo metemos en variable
	filename=$(basename $file)
#Extraemos los 8 últimos caracteres, que tienen que comprender la fecha
	fechaprog=${filename: -8}
#Comparamos si las fechas son iguales
	if [ $fechaprog = $hoy ]
		then
#Si lo son, preparamos el nuevo nombre al fichero, eliminando la fecha de programación
#Y movemos el fichero a la carpeta "pantallas" con el nombre nuevo
			nuevonombre=${filename::-8}
			mv $file /home/pi/datos/pantallas/$nuevonombre
	fi
done

Nombramos el archivo con el nombre que queramos, por ejemplo «programafecha.sh», lo ubicamos en nuestro /home/pi en el servidor y le damos permisos de ejecución

Vale. Ahora lo único que hay que hacer es programar crontab para que lo ejecute por la noche, eso sí, pasadas las doce, y así a la mañana del día en cuestión se comenzará a proyectar. Vamos a ponerle que ejecute el script a las 2 am, así que con la instrucción crontab -e añadimos la siguiente línea:

* 2 * * * /home/pi/programafecha.sh &

Listo, eso es todo. Y como hemos visto, todo en el servidor. Esta vez no ha hecho falta tocar las Raspberry para nada.

 

Deja una respuesta

No está permitida la inserción de ningún dato de carácter personal (mail, tef...). Cualquier comentario que los contenga será editado o eliminado.

Por favor, si dejas un comentario pon cualquier nombre para poderme dirigir a ti pero que no te identifique

El comentario es totalmente anónimo. No se almacena la IP