Photo satellite avec archivage

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 800 fois - Téléchargée 17 fois

Contenu du snippet

Cette source lorsqu'elle est lancée télécharge un fichier 'png' sur le site "http://www.sat24.com/"
cet image est mis à jour environ tout les quarts d'heure.
Le script boucle sur lui même toute les 3 minutes.

En téléchargeant le fichier représentant la dernière image de la journée il
les archive dans un zip puis les effaces.

Source / Exemple :


from os       import system
from os.path  import isfile
from urllib2  import urlopen
from datetime import datetime

DirDay = 'CurrentDay/'
DirArchive = 'Archive/'
system('mkdir -p ' + DirDay[:-1])
system('mkdir -p ' + DirArchive[:-1])

print "Start satellite screen"
now = datetime.now()
minute = "%02d" % (now.minute / 15 * 15,)
date = now.strftime("%Y%m%d%H") + minute
filepath = DirDay + date + '.gif'
print "Last print is at "+ now.strftime("%H") + ":" + minute

if isfile(filepath):
	print "Already update"
else:
	url = "http://www.sat24.com/image.ashx?country=eu&type=last&time=" + date
	print "Get the lastest file:\n", url
	data = urlopen(url).read()
	if data[0] == "\x00":
	    data = data[1:]
	if data[:3] != 'GIF':
		print "Not actually accessible.. but u may retry in some instant and be happy :-)\n\n"
		print "The sat pic is take every quarter (00,15,30,45), \n normaly less than 5 min latency are observed\n to get the output public pic file. \nplease be patient"
	else:
		file(filepath, 'w').write(data)
		system("cp " + filepath + ' screen.gif') #if u wanna screen saver
		if now.hour == 23 and minute == "45":
			print "DoClean"
			system("zip -r " + DirArchive + date + ".zip " + DirDay)
			system("rm " + DirDay + "*.gif")
		print "local disk filename:", date

Conclusion :


...

A voir également

Ajouter un commentaire

Commentaires

Messages postés
45
Date d'inscription
samedi 3 mai 2003
Statut
Membre
Dernière intervention
25 janvier 2011

Je sais mais à la prochaine update je m en occupe :-)
Messages postés
382
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
8 novembre 2010
11
Toutes les fonctions que tu utilises avec os.system existe aussi dans le module os :
Par exemple au lieu d'utiliser la commande Linux rm tu peux utiliser os.remove(cheamin).

Un petit tour sur http://pydoc.org/2.4.1/os.html pourra t'aider.

Seul cp n'existe pas. Pour cela, il faut lire le fichier en mode 'rb' et écrire en 'wb' (b pour lecture binaire). Sinon je crois que tu peux utiliser aussi shutil.copyfile(source,destination) (sans oublier d'inclure la librairie shutil).

Avec ces méthodes, ton programme fonctionnera aussi bien sous Linux que Windows et même sur MacOS (pas sure, jamais testé).
Messages postés
45
Date d'inscription
samedi 3 mai 2003
Statut
Membre
Dernière intervention
25 janvier 2011

Yep, je t avoue qu'a l origine je viens d un environnement de programmation sous licence (windows + visual basic)
et du coups les reflexe de python ne sont pas toujours au rendez vous.
Le 'os.path.join()', je l'ai découvert après avoir écris ce mini code.
Mais bon et pour les utilisateur de windows endurcis je ne peux que leur conseiller de s orienter sur de l'os free... mais comme il est necessaire d'être ouvert, je reposterais le code en version compatible windows.
En attendant pour les plus curieux il y a une solution qui fonctionne sous 'win' et qui est libre (hormis la licence 'win')
c'est le combo suivant :
Virtual Box : http://www.virtualbox.org/ > http://www.virtualbox.org/wiki/Downloads
+
Ubuntu 10.10 en virtualisation : http://www.ubuntu.fr/ > http://www.ubuntu.com/desktop/get-ubuntu/download

et après quelque moment à telecharger et a installer vous pourrez goutter au joie de linux et de sa command line
depuis n import quel os.
Voila
Messages postés
2
Date d'inscription
lundi 7 février 2011
Statut
Membre
Dernière intervention
7 février 2011

sympa mais tu aurais pu essayer de faire ce script en pure python et ainsi éviter les os.system() qui rendent ton script incompatible avec les système Windows (et il faut aussi y penser ;-) - De meme, tu concatènes bcp pour rien, os.path.join() fait ca tres bien pour les chemins système !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.