Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 :

  1. wget photo_a.jpg (version 1)
        fond d'ecran devient photo_a.jpg (version 1)

  2. wget photo_b.jpg (version 1)
        fond d'écran devient photo_b.jpg (version 1)

  3. wget photo_a.jpg (version 2 (donc mise à jour))
        fond d'écran devient photo_a.jpg (version 1)

  4. 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 big_smile.
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