Cotaka Posted February 14, 2016 Share Posted February 14, 2016 Hello à tous, Je souhaite faire un petit script qui télécharge (wget) une image avec le protocole http toutes les heure et la met en fond d'écran. Mon problème : le script télécharge l'image comme il faut, met l'image en fond d'écran, mais lors du nouveau téléchargement, il ne met plus à jour l'image... J'ai alors pensé que le problème venait du fait que comme le chemin et nom de l'image ne changent pas, il considédrait que c'était la même, alors il ne fait rien. Donc, j'ai fais en sorte qu'un coup sur 2 l'image téléchargée s'appelle respectivement : photo_a.jpg, photo_b.jpg (en prenant soins de supprimer l'image précédente). Il met bien à jour avec les 2 images, le fond changent, mais si entre temps les images photo_a.jpg et photo_b.jpg ont changé il continue de mettre à jour avec les premières versions téléchargées. Comme s'il y avait une histoire de cache... [EDIT] Pour info si ça peut éclairer : je viens de m'apercevoir qu'après déconnexion de la session, l'arrière-plan s'est mis à jour (avec la version 2 cf ci-dessous) Schéma pour mieux comprendre : wget photo_a.jpg (version 1) fond d'ecran devient photo_a.jpg (version 1) wget photo_b.jpg (version 1) fond d'écran devient photo_b.jpg (version 1) wget photo_a.jpg (version 2 (donc mise à jour))fond d'écran devient photo_a.jpg (version 1) wget photo_b.jpg (version 2)fond d'écran devient photo_b.jpg (version 1) Voici le code : #!/usr/bin/python # -*- coding: utf-8 -*- import time import os # Configuration des variables chemin = '/home/bryan/.local/share/backgrounds' temps = 20 url = 'http://cotaka.net/partage/photo.jpg' while True : if os.path.isfile(''+chemin+'/photo_a.jpg') is False : if os.path.isfile(''+chemin+'/photo_b.jpg') is True : os.system('rm '+chemin+'/photo_b.jpg') os.system('wget -O photo_a.jpg '+url+'') os.system('mv photo_a.jpg '+chemin+'') os.system('gsettings set org.gnome.desktop.background picture-uri "file://'+chemin+'/photo_a.jpg"') time.sleep(temps) else : os.system('rm '+chemin+'/photo_a.jpg') os.system('wget -O photo_b.jpg '+url+'') os.system('mv photo_b.jpg '+chemin+'') os.system('gsettings set org.gnome.desktop.background picture-uri "file://'+chemin+'/photo_b.jpg"') time.sleep(temps) A noter que le temps est bien de 20 secondes pour les tests. Solutions probables : il y aurait-t-il un autre emplacement où stocker l'image qui "surpasserait" un cache quelconque ? il y a-t-il une commande pour forcer la mise à jour du fond d'écran ? il y a-t-il une option à changer pour modifier le comportement de gnome ? Merci par avance pour vos réponses . Bon dimanche à tous. Link to comment Share on other sites More sharing options...
Kekos Posted February 14, 2016 Share Posted February 14, 2016 Salut, pourquoi tu ne fais pas l'algo suivant : while true wget -O /path/to/file.jpg http://www.example.com/image.jpg gsettings set org.gnome.desktop.background picture-uri "file:///path/to/file.jpg" sleep 3600; Si tu veux éviter le sleep, je te conseille de lancer ton script (qui fait juste un wget et gsettings) via une tache cron (cherches crontab sur le net). Est-ce que ceci pourrait également fonctionner ? gsettings set org.gnome.desktop.background picture-uri "http://www.example.com/image.jpg" Link to comment Share on other sites More sharing options...
Cotaka Posted February 14, 2016 Author Share Posted February 14, 2016 Salut, Merci de ta réponse. Si je ne me trompe pas, ton code c'est le même que le miens mise à part que tu indiques le bon chemin dés le wget et non en passant par un mv ? J'ai fais le test : donc en téléchargeant l'image dans le dossier concerné puis en mettant la commande avec le chemin de ce dossier. Mais le comportement est le même... Bonne idée de passer directement l'URL dans la commande, je n'y avais pas pensé ! Mais malheureusement ça ne fonctionne pas ça serait trop beau . Link to comment Share on other sites More sharing options...
Kekos Posted February 16, 2016 Share Posted February 16, 2016 oui c'est le même comportement. Peut être que ça pourrait aller comme ça : while true wget -O /path/to/file.jpg http://www.example.com/image.jpg # mise à une valeur vide pour prendre en compte un changement gsettings set org.gnome.desktop.background picture-uri "" gsettings set org.gnome.desktop.background picture-uri "file:///path/to/file.jpg" sleep 3600; Link to comment Share on other sites More sharing options...
Cotaka Posted February 16, 2016 Author Share Posted February 16, 2016 Bonsoir Kekos, Toujours le même résultat :/J'me dis... je vais peut-être essayer de nommer l'image 0123456789.jpg et la renommer de façon aléatoire avec un petit shuffle à chaque passage de boucle... Link to comment Share on other sites More sharing options...
Cotaka Posted February 17, 2016 Author Share Posted February 17, 2016 Problème résolu : Je renomme aléatoirement l'image à chaque nouveau téléchargement. import commands shuf = 'shuf -n 1 -i 0-1000' nom = commands.getoutput(shuf) mv photo.jpg '+nom+'.jpg Merci à vous. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now