#1 Le 14/02/2016, à 14:16
- Cotaka
[Résolu] Python en background depuis le web toutes les x secondes
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érait 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...
Pour info si ça peut éclairer : il s'avère qu'après déconnexion de la session, l'arrière-plan s'est mis à jour (avec la version 2 cf ci-dessous)
Pour info bis : j'ai tenté le script avec un délais de 10 minutes avant de changer d'image -> même probème
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.
Dernière modification par Cotaka (Le 17/02/2016, à 11:50)
Hors ligne
#2 Le 17/02/2016, à 11:50
- Cotaka
Re : [Résolu] Python en background depuis le web toutes les x secondes
Bon j'ai trouvé me solution seul.
Je renomme la photo de façon aléatoire à chaque passage de boucle avec shuf.
Hors ligne