185 - Python y fondos de pantalla
Como poner los fondos de pantalla de tu servicio preferido en tu escritorio utilizando Python y Daily Wallpaper. Todos los días un nuevo fondo de pantalla.
Después de más de 180 episodios ya era hora que le dedicara uno a mi amado Python. Lo cierto es que este tampoco va a ser un episodio del podcast, dedicado en exclusivo a Python, pero si será un punto de partida para futuras ocasiones en las que si que pueda dedicar un episodio completo a Python. Seguramente te estarás preguntando a que viene este título tan rocambolesco. La cuestión es que durante las últimas semanas he estado trabajando en actualizar y modificar la aplicación National Geographic Wallpaper, sobre la que te comentaré mas adelante en el episodio, y en este sentido, quiero plantearte una propuesta relacionada con Python.
Python y fondos de pantalla
Sobre los fondos de pantalla
Hace unas semanas, en el proyecto antes conocido como National Geographic Wallpaper, que puedes encontrar en GitHub, y que ahora he rebautizado como Daily Wallpaper, un contribuidor comentó un problema que desencadenó en que me liara a actualilzar y modificar la aplicación, hasta el punto de cambiarle el nombre.
Si no conoces, la hasta ahora conocida como National Geographic Wallpaper, ahora Daily Wallpaper, indicarte que es una sencilla aplicación que todos los días pretende traerte nuevos fondos de pantalla a tu escritorio.
Un poco de historia
Allá por el 2017 descubrí un concepto muy interesante conocido como Foto del día. Yo hasta aquel momento no tenía ni idea de que iba eso. Se trata de que existen algunos servicios que todos los días publican una nueva foto o que simplemente bautizan una foto como la foto del día.
Uno de estos servicios es National Geographic, y de ahí el anterior nombre de la aplicación. Este servicio todos los días te muestra una espectacular, o al menos sugerente, fotografía.
Esto, en su momento, dio pie al nacimiento de la aplicación. Esto unido con el hecho de que a mi no me gusta dedicar tiempo a personalizar el escritorio. No me gusta invertir ni un segundo en cambiar el fondo de pantalla o personalizar los iconos. En general, no me gusta invertir tiempo en estas cosas.
Sin embargo la idea me pareció una idea excelente, porque, sinceramente los fondos de pantalla son realmente excepcionales.
Al poco tiempo, otros servicios se fueron uniendo a National Geographic. Otros servicios que también ofrecían esto de la foto del día. Servicios como puede ser Bing. Así, modifiqué la aplicación para incorporar estos otros servicios. Fue, justo en ese momento, cuando el nombre de la aplicación perdió todo su sentido.
Sin embargo, a pesar de eso, no ha sido hasta recientemente cuando me he decidido a cambiar el nombre de la aplicación. Fue precisamente la issue que abrió un contribuidor de la aplicación la que desencadenó el cambio.
Pero, ¿Que hace la aplicación? Daily Wallpaper es una sencilla aplicación que lo único que hace es cambiar tu fondo de pantalla con la foto del día del servicio que selecciones. La ventaja de esta aplicación es que tiene un reducido consumo de recursos. No es que sea reducido, es que es inexistente, porque utiliza cron. Si no conoces cron
, te recomiendo leas este interesante artículo sobre programación de tareas con cron.
Daily Wallpaper
La cuestión es que este contribuidor que comentaba, indicó que existían algunos de estos servicios que que añadí a posteriori, que habían dejado de funcionar. En este sentido, proponía varias cosas,
- Eliminar o corregir aquellas fuentes que no funcionaban
- Añadir otras fuentes como Unsplash
- Dar la posibilidad al usuario de la aplicación a añadir nuevas fuentes.
Así que me puse manos a la obra para dar la posibilidad al usuario de añadir nuevas fuentes, y aquí es donde tiene el sentido el título del podcast fondos de pantalla y Python.
¿Como dar esa opción al usuario?
Inicialmente podrías pensar que es algo sencillo. Simplemente se trata de abrir una caja de texto para que el usuario introduzca la url
de donde extraer la foto del día. Pero no es algo tan sencillo. No todos los servicios te proporcionan un API de donde saber cual es la foto del día.
Y entonces ¿como sabe Daily Wallpaper cual es la foto del día? En los casos en los que el servicio no tiene una API, la manera de saber cual es la foto del día, es tal y como lo haces tu. Ir a la página donde se publica la foto del día y descargarla.
¿Y como obtener el enlace? Mediante scraping. Esto del scraping consiste en la extracción de datos de una página web utilizando diferentes técnicas, desde las expresiones regulares a diferentes herramientas.
El el caso de Daily Wallpaper esto lo realizo utilizando diferentes módulos de Python, y por supuesto mis amadas expresiones regulares.
Así para dar la opción al usuario, simplemente o no tan simplemente tiene que copiar alguna de los módulos que puede encontrar en /usr/share/daily-wallpaper/dailies
al directorio ~/.config/daily-wallpaper/dailies
y modificarlo.
Evidentemente no es algo sencillo o trivial, pero es un punto de partida. Necesitas ciertos conocimientos de programación, si es en Python mejor, y por supuesto paciencia para ver donde encontrar esa url
.
Instalar Daily Wallpaper
Como bien te puedes imaginar, Daily Wallpaper no se encuentra en los repositorios oficiales de Ubuntu, ni derivadas. Sin embargo, lo puedes instalar fácilmente, ejecutando las siguientes instrucciones en un terminal,
sudo add-apt-repository ppa:atareao/atareao
sudo apt update
sudo apt install daily-wallpaper
Una vez instalado busca Daily Wallpaper en el menú o directamente escribe en el lanzador, y ya lo tienes. Selecciona una de las fuentes y programa el cambio.
Mi propuesta
Como decía anteriormente, te propongo 2 cosas y una pregunta,
- Prueba Daily Wallpaper y dame tu opinión al respecto.
- Intenta crear tu propio módulo y compártelo conmigo
Y la pregunta ¿te interesaría un primer tutorial de Python?
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.
Imagen de portada de Hitesh Choudhary en Unsplash