Photo satellite avec archivage

0/5 (4 avis)

Snippet vu 9 797 fois - Téléchargée 19 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
saigneurdushi Messages postés 45 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 25 janvier 2011
20 mars 2011 à 07:00
Je sais mais à la prochaine update je m en occupe :-)
aera group Messages postés 382 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 8 novembre 2010 18
19 févr. 2011 à 10:51
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é).
saigneurdushi Messages postés 45 Date d'inscription samedi 3 mai 2003 Statut Membre Dernière intervention 25 janvier 2011
10 févr. 2011 à 07:06
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
svmars Messages postés 2 Date d'inscription lundi 7 février 2011 Statut Membre Dernière intervention 7 février 2011
7 févr. 2011 à 21:55
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.