Como programador y fanático del universo siempre he tenido la inquietud de visualizar la imagen del día de la nasa como fondo de pantalla, por supuesto esto de forma automática, hace tiempo por fin me di a la tarea de hacerlo por lo que si te interesa te dejo el script en Python.
Siempre me ha fascinado el universo, así como me encanta la programación.
Es por esto que he tenido en mente la idea de hacer algo que se relacione entre ambas materias.
Ya anteriormente he desarrollado una animación de planetas con programación en 3d.

¿Necesitas aprender algo nuevo ? Ve a Udemy, busca el tema del que quieres aprender, selecciona el curso para ti y continua con tu aprendizaje.
UdemyPero esta idea del día de hoy es otra de las inquietudes que tenia tiempo atrás.
Hoy veremos como establecer la imagen del día de la nasa como fondo de pantalla mediante un script en Python.
Antes de iniciar debemos de obtener un api key de la nasa.
Lo primero será obtener la ruta de la imagen del día de la nasa o apod.
# Obtener la imagen astronómica del día apod_url = "https://api.nasa.gov/planetary/apod" api_key = "[Tu api key]" today = datetime.date.today().strftime("%Y-%m-%d") url = f"{apod_url}?api_key={api_key}&date={today}" response = urllib.request.urlopen(url) data = response.read() textdata = json.loads(data) urlimage = textdata['hdurl'] descimage = textdata['explanation'] response.close()
Después vamos a descargarla directamente.
Como puedes ver se obtienen dos valores, la url de la imagen del día en HD y el texto descriptivo de esa imagen.
# Descargar la imagen response = urllib.request.urlopen(urlimage) data = response.read() response.close()
Para después volver a abrirla para trabajar un poco con ella.
# Abrimos nuevamente la imagen filename = f"_nasawallpapers/{today}_apod.jpg" with open(filename, "wb") as f: f.write(data)
Ahora vamos a prepararnos para agregar texto a la imagen.
# Preparamos para agregar texto a la imagen img = Image.open(filename) I1 = ImageDraw.Draw(img)
Antes de eso vamos a obtener el tamaño de la imagen del dia y de nuestro equipo.
# Obtener la resolución de la pantalla y imagen screen_width, screen_height = pyautogui.size() ancho_imagen, alto_imagen = img.size
Establecemos la fuente del texto a utilizar.
# Establecemos la fuente myFont = ImageFont.truetype('arial.ttf', 14)
Utilizaremos el texto descripción de la imagen del día, solo que como viene muy largo vamos a cortarlo en pedazos para que existan saltos de linea.
lineas = textwrap.wrap(descimage, width=50) x, y = (ancho_imagen/2)+150, (alto_imagen/2)-150 for linea in lineas: # Caja de fondo bbox = I1.textbbox((x,y), linea, font=myFont) I1.rectangle(bbox, fill="black") # Texto I1.text((x, y), linea, font=myFont, fill="white") y+= myFont.getbbox(linea)[1] + 12 img.save(filename)
También colocamos un fondo negro con las letras blancas para mejor visibilidad y asegurar que sea legible siempre.
Ahora vamos a redimensionar el tamaño de la imagen para que se vea bien en nuestra pantalla.
# Redimensionamos la imagen a tamaño de pantalla img = Image.open(filename) if ancho_imagen > screen_width or alto_imagen > screen_height: proporcion_ancho = screen_width / ancho_imagen proporcion_alto = screen_height / alto_imagen proporcion = min(proporcion_ancho, proporcion_alto) nuevo_ancho = int(ancho_imagen * proporcion) nuevo_alto = int(alto_imagen * proporcion) img = img.resize((nuevo_ancho, nuevo_alto), Image.LANCZOS) fondo = Image.new("RGB", (screen_width, screen_height)) x = (screen_width - nuevo_ancho) // 2 y = (screen_height - nuevo_alto) // 2 fondo.paste(img, (x, y)) fondo.save(filename)
Y por último establecemos la imagen generada como imagen de pantalla con el siguiente código.
# Establecer la imagen como fondo de pantalla SPI_SETDESKWALLPAPER = 20 ctypes.windll.user32.SystemParametersInfoW(SPI_SETDESKWALLPAPER, 0, os.path.abspath(filename) , 0)
Guardamos el script con extensión .py.
Obviamente debemos tener instalado Python así como realizar los import necesarios para este código.
import urllib.request import os import ctypes import datetime import json import textwrap import pyautogui from PIL import Image from PIL import ImageDraw from PIL import ImageFont
Ahora solo abrimos una consola y ejecutamos py script.py y listo.
Si queremos poder ver la imagen del día de la nasa automáticamente todos los días entonces haremos lo siguiente:
Vamos a crear en la misma ruta del script un archivo con extensión .cmd y con el código py script.py.
Al ejecutar este archivo se ejecutará el script y se cambiará el fondo de pantalla.
Ahora vamos a crear un acceso directo de este archivo cmd y lo vamos a pegar en la carpeta que se abre al ejecutar «shell:startup«.
Con esto cada que inicie nuestro equipo se ejecutará el script cmd que ejecutará a su vez el script Python.
Cada que iniciemos nuestra computadora podremos admirar de la imagen del día de la nasa con su descripción.
Si esta información sobre un script para establecer la imagen del día de la nasa como fondo de pantalla automáticamente te ha sido de utilidad entonces no olvides compartirla en tus redes sociales favoritas y dejarnos un comentario en la sección de abajo, será un placer poder ayudarte.
¡Hasta luego!