Uno sfondo spaziale ogni giorno, direttamente dalla NASA

Si ok, l’immagine accanto non è proprio della nasa1, ma un pò di autopromozione me la concedete? eccheccristo :D

Grazie ad un utente di friendfeed (boltz), sono venuto a conoscenza di uno script in python che ci consente di settare in automatico lo sfondo del nostro desktop prelevando una bellissima immagine dal sito apod (Astronomy Picture Of the Day).

Il sito di cui sopra è uno dei tanti siti nasa che ogni giorno pubblica una immagine astronomica tra le più belle dell’archivio.

Per chi è appassionato di astronomia può essere bello voler settare come sfondo l’immagine del giorno, e doverlo fare quasi ogni giorno a lungo andare può risultare alquanto scomodo.

Lo script in questione si connette in questo sito, preleva l’immagine, e la setta direttamente come sfondo del desktop.



#! /usr/bin/env python
#
# Stefano Lacaprara  <lacaprara@pd.infn.it>  INFN Padova
#
# Script to get the astronomy picture of the day from
# http://apod.nasa.gov/apod/ and set it as desktop background in a gnome
# environment
# It saves the images in ~/Private/AstroPicture/ : does not check for directory existence
#
import gconf
import os
import mimetypes
class GConfClient:
def __init__ (self):
self.__client__ = gconf.client_get_default()
def get_background (self):
return self.__client__.get_string(“/desktop/gnome/background/picture_filename”)
def set_background (self, background):
self.__client__.set_string(“/desktop/gnome/background/picture_filename”, background)
import urllib2
import re
import os
url = “http://apod.nasa.gov/apod/”
page = “astropix.html”
try:
f = urllib2.urlopen(url+page).read()
except urllib2.URLError:
print “cannot open %s”,url+page
abort
m = re.compile(“image/\w+/[\w-]+.jpg”).search(f)
if m:
print ‘Match found: ‘, m.group()
try:
jpg=urllib2.urlopen(url + m.group()).read()
except:
print “Error”
jpgname=(m.group()).replace(“image/”,”").replace(“/”,”_”)
filename=os.environ.get(‘HOME’) + “/Private/AstroPicture/” + jpgname
if (not os.path.exists(filename)):
file=open(filename, “w”)
file.write(jpg)
print “JPG “, jpgname, ” saved to “,filename
file.close()
client = GConfClient()
client.set_background(filename)
else:
print ‘No match’

ATTENZIONE: Il codice qui sopra l’ho inserito solo per libera consultazione, se volete lo script prelevatelo da qui, wordpress purtroppo non mi mantiene le identazioni del codice e quindi in esecuzione darà errore. Chrome infine vi dirà che il file se scaricato potrebbe danneggiare il vostro pc, potete ignorare il warning e scaricarlo tranquillamente, fidatevi :)

AGGIORNAMENTO: Mi è stato detto che è stata creata una nuova versione dello script col controllo sull’esistenza della cartella di parcheggio dei files, lo trovate qui.

Come possiamo vedere dal codice qui sopra lo script salva i files scaricati in ~/Private/AstroPicture ma attenzione che non fa il controllo sull’esistenza di questa cartella (ci sono lettori python-powered disposti ad aggiungerlo?) quindi dobbiamo prima crearla. Leggere sopra….

Chi vuole può inserire questo script nelle sessioni di gnome dentro Sistema, Preferenze, Applicazioni d’avvio (o di kde ma non mi ricordo dove si trova :P ), io l’ho inserito e fino adesso non ho ancora trovato una immagine che non mi piace :D

  1. è uno degli scatti miei più riusciti :D []


Articoli (forse) correlati:

  1. 10 dicembre 2008: un giorno speciale
    Oggi è un giorno speciale per me, esattamente due anni fa due persone hanno scelto di stare insieme, e nonostante...
  2. Plymouth su ubuntu ma a partire dalla 9.10
    Da tempo si vocifera circa la sotituzione di usplash a favore del più giovane e performante plymouth, sulla distribuzione...
  3. Ecco cosa provano i nostri tuffatori dalla piattaforma dei 10 metri
    Girando per la rete ho trovato questa cosa: una splendida ricostruzione fotografica a 360° in alta definizione dell'interno del watercube....
    • massimo valerio
      riotamd@riotamd-desktop:~$ ./nasa_wallpaper
      File "./nasa_wallpaper", line 14
      def __init__ (self):
      ^
      IndentationError: expected an indented block

      a me da questo problema
    • è un problema di identazione come già detto sopra :) adesso risolvo
    • Trattandosi di python la mancanza di indentazione potrebbe essere un problema visto che fa parte della sintassi.
      E' leggibile ma non comprensibile fino in fondo. I blocchi di istruzioni sono nascosti dalla mancanza di indentazione per cui vedo ne problematica l'esecuzione.
    • chiedo venia, essendo profano di python non sapevo di questa cosa, cerco di rimediare il prima possibile
    • xxx
      Dove hai copiato lo script?
      L'hai messo non identato!!!!!!
    • l'ho copiato dalla mia shell e non si è portato le identazioni, è un problema? gli a capo ci sono quindi è leggibile.
    blog comments powered by Disqus