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.

#1901 Le 03/02/2013, à 18:13

RayBan10

Re : [Conky] Alternative à weather.com (2)

Didier-T a écrit :

si il faut les mètres dans tonumber(variable)

mais le soucis ne doit pas venir de la

Ok, j'essaye

Hors ligne

#1902 Le 03/02/2013, à 18:15

Didier-T

Re : [Conky] Alternative à weather.com (2)

ton "lol" s'affiche ?

Hors ligne

#1903 Le 03/02/2013, à 18:16

RayBan10

Re : [Conky] Alternative à weather.com (2)

Yes !

Hors ligne

#1904 Le 03/02/2013, à 18:21

RayBan10

Re : [Conky] Alternative à weather.com (2)

Didier-T a écrit :

pour les rafales
conditionJour[tonumber(j)].VentRafales
pour la neige
conditionJour[tonumber(j)].QNeige
pour le verglas
conditionJour[tonumber(j)].EVerglas
pour la visibilité
conditioncourante.Visibilite

Ca semble fonctionner ! (en tout cas avec rafale)

Merci beaucoup Didier-T.
J'y serais pas arrivé sans vous.

J'avais deja essayé, mais cela devait venir de if j == nil, que je n'avais pas essayé en meme temps.

Merci beaucoup Didier-T.

Hors ligne

#1905 Le 03/02/2013, à 18:39

Didier-T

Re : [Conky] Alternative à weather.com (2)

de rien

Hors ligne

#1906 Le 04/02/2013, à 17:58

daniel38100

Re : [Conky] Alternative à weather.com (2)

petit tableau de prévision complète que j'me suis amusé a faire au boulot
1359993395.png

Hors ligne

#1907 Le 04/02/2013, à 18:58

ragamatrix

Re : [Conky] Alternative à weather.com (2)

daniel38100 a écrit :

petit tableau de prévision complète que j'me suis amusé a faire au boulot
http://pix.toile-libre.org/upload/img/1359993395.png

Bon travail !! wink
J'ai un truc bizarre avec le calendrier.Il affiche deux fois la date (lu 04): ?
calendrier

Hors ligne

#1908 Le 04/02/2013, à 19:43

Didier-T

Re : [Conky] Alternative à weather.com (2)

daniel38100 a écrit :

petit tableau de prévision complète que j'me suis amusé a faire au boulot
http://pix.toile-libre.org/upload/img/1359993395.png

et bien y'en a qui ont des tafs en or

Hors ligne

#1909 Le 06/02/2013, à 10:39

ragamatrix

Re : [Conky] Alternative à weather.com (2)

Peut-on mettre en place les éléments du creationmodules sans être en ligne; pour aller plus vite. J'ai essayé de mettre en hors ligne dans le conky mais ça ne marche pas ?

Hors ligne

#1910 Le 06/02/2013, à 11:20

jpdipsy

Re : [Conky] Alternative à weather.com (2)

ragamatrix a écrit :

Peut-on mettre en place les éléments du creationmodules sans être en ligne; pour aller plus vite. J'ai essayé de mettre en hors ligne dans le conky mais ça ne marche pas ?

Hello

Si c'est pour faire des tests sur les creations-modules tu créé un conky basic du style:

  
 # scripts lua à charger ##################################### changer ~/conky par votre rep si vous n'avez pas le mme
  lua_load  ~/conky/Meteo-Lua/scripts/meteo.lua               # ces  scripts sont obligatoires
  lua_startup_hook init  ~/conky/Meteo-Lua/configs/meteo.cfg  #
    #############################################################
       TEXT
#### Lancement des scripts récupérant les données météo  ##
#Important si vous avez un conky lançant déja meteo.lua
# utilisez ${lua Meteo_horsligne}
#--------------------------------------------------------------
${lua Meteo_Maj}

sans l'appel à images_meteo.lua donc qui ne se chargera que des mises à jours des données
et un second avec appel à images_meteo.lua (donc celui que tu utilise) mais en mode hors_ligne que tu peux dans ce cas lancer dans des délais plus court voir à chaque fois que tu sauvegarde ce conky.
et pis c'est tout

eh bin c'est pas tout

tu crée un script bash nommé relance-conky-test (par ex) rendu executable et tu y met

#!/bin/bash

# pour le tuer
pid=$(ps x |grep "[c]onky -c /lechemin/detonconkyimagetest" | cut -d " " -f2)
kill -9 $pid
#pour le relancer
conky -c /lechemin/detonconkyimagetest

comme çà quand tu fait tes essais du creation-modules un clic sur le relance-conky-test et c'est tout bon

Dernière modification par jpdipsy (Le 06/02/2013, à 11:45)

Hors ligne

#1911 Le 06/02/2013, à 12:24

Didier-T

Re : [Conky] Alternative à weather.com (2)

bonjour a tous,

je tenais a vous montrer l'avancé du script en python

attention pour le tester il vous faudra la bibliothèque BeautifulSoup 4 ainsi que python 3
normalement les changements sur le site ne devrais pas affecter le bon fonctionnement de ce script (sauf pour la partie 8 heures)
le script actuel retourne des fichiers texte dans le répertoire repsauv, ses fichiers serviront de base de donnée a un futur meteo.lua

#! /usr/bin/python3
# -*- coding: utf-8 -*-
# Par Didier-T Forum Ubuntu.fr

import urllib.request, os, time, re
from bs4 import BeautifulSoup
adressWeb="http://www.accuweather.com/fr/fr/argenteuil/133593/current-weather/133593"
homedir = os.path.expanduser('~')
repsauv= homedir+"/essais"

def traitement(adress, fichier, pat):
    
    url=urllib.request.Request(adress)
    currentCond=urllib.request.urlopen(url)
    soup = BeautifulSoup(currentCond)
    currentCond.close()
    fiche = open(fichier, "w")
    #si autres que huit heures
    if re.search("huitHeures", fichier) is None:
        #récupération date + historique
        if re.search("Jour", fichier) is not None or re.search("CC", fichier) is not None:
            histo=soup.find(id="feature-history")
            #récupération date
            date=histo.select("[class~=lt]")
            for d in date:
                jour=re.compile("^.* - (.*)/(.*)/(.*)").search(d.get_text())
            fiche.write("jour: "+jour.group(1)+"\n")
            fiche.write("mois: "+jour.group(2)+"\n")
            fiche.write("année: "+jour.group(3)+"\n")
            #récupération historique
            hi=histo.select("[class~=hi]")
            for v in hi:
                hivalue=v.get_text().split("\n")
            fiche.write("maxjour: "+hivalue[2]+"\n")
            fiche.write("maxnormal: "+hivalue[3]+"\n")
            fiche.write("maxrecord: "+hivalue[4]+"\n")
            fiche.write("max1ans: "+hivalue[5]+"\n")
            lo=histo.select("[class~=last]")
            for v in lo:
                lovalue=v.get_text().split("\n")
            fiche.write("minjour: "+lovalue[2]+"\n")
            fiche.write("minnormal: "+lovalue[3]+"\n")
            fiche.write("minrecord: "+lovalue[4]+"\n")
            fiche.write("min1ans: "+lovalue[5]+"\n")

        #localisation si condition courante
        if re.search("CC", fichier) is not None:
            ville=re.compile("city: '(.*)',").search(str(soup)).group(1)
            longi=re.compile("lon: '(.*)',").search(str(soup)).group(1)
            lat=re.compile("lat: '(.*)',").search(str(soup)).group(1)
            fiche.write("ville: "+ville+"\n")
            fiche.write("lat: "+lat+"\n")
            fiche.write("long: "+longi+"\n")
        
        # recherche vent
        current_balise=soup.find(id="details")
        ventd=re.compile("var d = '(.*)';").search(str(current_balise)).group(1).replace("W", "O")
        ventf=re.compile("var s = '(.*)km/h';").search(str(current_balise)).group(1)
        fiche.write("direction: "+ventd+"\n")
        fiche.write("vitesse: "+ventf+"\n")
        
        #recherche icone
        icone=current_balise.select("[class~=icon]")
        i=0
        for ic in icone:
            i=i+1
            fiche.write("icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '').replace('"></div>', '')+"\n")
            
        #info conditions générales
        cc=current_balise.find_all('li')
        for inf in cc:
            inf=inf.get_text().replace("                                ", "").replace("\n", "")
            if re.search(":", inf) is not None:
                fiche.write(inf+"\n")
    else:
        table=soup.find_all('table')
#        fiche.write(table[0].prettify())
        #recherche icones huit heures
        icone=table[0].find_all('div')
        i=0
        for ic in icone:
            i=i+1
            fiche.write("icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '').replace('"></div>', '')+"\n")
            if i == 8:
                break
        #donée huit heures
        tablevalue=table[0].get_text().split("\n")
        i=0
        for v in tablevalue:
            i=i+1
            #pour le débug
#            fiche.write(str(i)+" "+v+"\n")
            if i >= 18 and i <= 25:
                x=x+1
                fiche.write("heure"+str(x)+": "+v+"\n")
            elif i >= 57 and i <= 64:
                x=x+1
                fiche.write("temp"+str(x)+": "+v+"\n")
            elif i >= 68 and i <= 75:
                x=x+1
                fiche.write("res"+str(x)+": "+v+"\n")
            elif i >= 79 and i <= 86:
                x=x+1
                fiche.write("humid"+str(x)+": "+v+"\n")
            elif i >= 105 and i <= 112:
                x=x+1
                fiche.write("probpluie"+str(x)+": "+v+"\n")
            elif i >= 116 and i <= 123:
                x=x+1
                fiche.write("probneige"+str(x)+": "+v+"\n")
            elif i >= 127 and i <= 134:
                x=x+1
                fiche.write("probverglas"+str(x)+": "+v+"\n")
            elif i >= 153 and i <= 160:
                x=x+1
                fiche.write("vent"+str(x)+": "+v+"\n")
            elif i >= 164 and i <= 171:
                x=x+1
                fiche.write("uv"+str(x)+": "+v+"\n")
            elif i >= 175 and i <= 182:
                x=x+1
                fiche.write("couvnuage"+str(x)+": "+v+"\n")
            elif i >= 186 and i <= 193:
                x=x+1
                fiche.write("rosée"+str(x)+": "+v+"\n")
            else :
                x=0


    fiche.close()

# Mise en tache de fond
def demonise(entete, id1, id2, huitHeures="non", nbJour=1, interval=5):
    while 1 :
        debut=time.time()
        traitement(ent+nb1+'/current-weather/'+nb2, repsauv+"/CC", '<!-- /#detail-tab-buttons.detail-tab-buttons -->')
        if huitHeures=="oui":
            traitement(ent+nb1+'/hourly-weather-forecast/'+nb2, repsauv+"/huitHeures", '<!-- /#detail-tab-buttons.detail-tab-buttons -->')
        x=0
        while x<nbJour:
            x=x+1
            traitement(ent+nb1+'/daily-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Jour"+str(x), '<!-- /#detail-tab-buttons.detail-tab-buttons -->')
            traitement(ent+nb1+'/morning-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Matin"+str(x), '<!-- /#detail-tab-buttons.detail-tab-buttons -->')
            traitement(ent+nb1+'/afternoon-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/AM"+str(x), '<!-- /#detail-tab-buttons.detail-tab-buttons -->')
            traitement(ent+nb1+'/evening-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Soiree"+str(x), '<!-- /#detail-tab-buttons.detail-tab-buttons -->')
            traitement(ent+nb1+'/overnight-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Nuit"+str(x), '<!-- /#detail-tab-buttons.detail-tab-buttons -->')
        fin=time.time()
        print("temps de mise a jour",fin-debut)
        time.sleep(60*interval)
        
nb1=re.findall('\d+', adressWeb)[0]
nb2=re.findall('\d+', adressWeb)[1]
ent=adressWeb[:adressWeb.find(nb1)]
demonise(ent, nb1, nb2, "oui", 5, 5)

bon j'ai encore un peut de ménage a faire dedans tongue

Dernière modification par Didier-T (Le 06/02/2013, à 12:26)

Hors ligne

#1912 Le 06/02/2013, à 12:35

jpdipsy

Re : [Conky] Alternative à weather.com (2)

Didier-T a écrit :

bonjour a tous,

je tenais a vous montrer l'avancé du script en python

çà tombe bien jm'ennuyais  roll

Testé çà roule 

Le temps de mise à jour est digne d'une horloge atomique mon petit  lol

Dernière modification par jpdipsy (Le 06/02/2013, à 12:51)

Hors ligne

#1913 Le 06/02/2013, à 13:52

ragamatrix

Re : [Conky] Alternative à weather.com (2)

jpdipsy a écrit :
ragamatrix a écrit :

Peut-on mettre en place les éléments du creationmodules sans être en ligne; pour aller plus vite. J'ai essayé de mettre en hors ligne dans le conky mais ça ne marche pas ?

Hello

Si c'est pour faire des tests sur les creations-modules tu créé un conky basic du style:

  
 # scripts lua à charger ##################################### changer ~/conky par votre rep si vous n'avez pas le mme
  lua_load  ~/conky/Meteo-Lua/scripts/meteo.lua               # ces  scripts sont obligatoires
  lua_startup_hook init  ~/conky/Meteo-Lua/configs/meteo.cfg  #
    #############################################################
       TEXT
#### Lancement des scripts récupérant les données météo  ##
#Important si vous avez un conky lançant déja meteo.lua
# utilisez ${lua Meteo_horsligne}
#--------------------------------------------------------------
${lua Meteo_Maj}

sans l'appel à images_meteo.lua donc qui ne se chargera que des mises à jours des données
et un second avec appel à images_meteo.lua (donc celui que tu utilise) mais en mode hors_ligne que tu peux dans ce cas lancer dans des délais plus court voir à chaque fois que tu sauvegarde ce conky.
et pis c'est tout

eh bin c'est pas tout

tu crée un script bash nommé relance-conky-test (par ex) rendu executable et tu y met

#!/bin/bash

# pour le tuer
pid=$(ps x |grep "[c]onky -c /lechemin/detonconkyimagetest" | cut -d " " -f2)
kill -9 $pid
#pour le relancer
conky -c /lechemin/detonconkyimagetest

comme çà quand tu fait tes essais du creation-modules un clic sur le relance-conky-test et c'est tout bon

J'ai bien essayé mais lorsque je lance le conky fond ecran rien ne s'affiche

Hors ligne

#1914 Le 06/02/2013, à 14:25

Didier-T

Re : [Conky] Alternative à weather.com (2)

jpdipsy a écrit :
Didier-T a écrit :

bonjour a tous,

je tenais a vous montrer l'avancé du script en python

çà tombe bien jm'ennuyais  roll

Testé çà roule 

Le temps de mise à jour est digne d'une horloge atomique mon petit  lol

cool, reste a faire le reste (en plus ce script tournera en tache de fond, du coup on auras l’impression que la mise a jour prend moins d'une seconde)

Hors ligne

#1915 Le 06/02/2013, à 14:59

jpdipsy

Re : [Conky] Alternative à weather.com (2)

Didier-T a écrit :
jpdipsy a écrit :
Didier-T a écrit :

bonjour a tous,

je tenais a vous montrer l'avancé du script en python

çà tombe bien jm'ennuyais  roll

Testé çà roule 

Le temps de mise à jour est digne d'une horloge atomique mon petit  lol

cool, reste a faire le reste (en plus ce script tournera en tache de fond, du coup on auras l’impression que la mise a jour prend moins d'une seconde)

J'avais saisie le but de celui là mais je suppose que le reste sera de nouveau en Lua pour garder la souplesse avec conky ?
ou me tromp-je

Hors ligne

#1916 Le 06/02/2013, à 15:01

Didier-T

Re : [Conky] Alternative à weather.com (2)

jpdipsy a écrit :
Didier-T a écrit :
jpdipsy a écrit :

çà tombe bien jm'ennuyais  roll

Testé çà roule 

Le temps de mise à jour est digne d'une horloge atomique mon petit  lol

cool, reste a faire le reste (en plus ce script tournera en tache de fond, du coup on auras l’impression que la mise a jour prend moins d'une seconde)

J'avais saisie le but de celui là mais je suppose que le reste sera de nouveau en Lua pour garder la souplesse avec conky ?
ou me tromp-je

tu as tout a fait compris, lua pour communiquer avec conky et python pour communiquer avec accuweather

Hors ligne

#1917 Le 06/02/2013, à 15:04

jpdipsy

Re : [Conky] Alternative à weather.com (2)

@Ragamatrix fait juste pêter ton conky original (à partir de scripts lua à charger # ) et le chemin complet ou il se trouve

Hors ligne

#1918 Le 06/02/2013, à 15:14

ragamatrix

Re : [Conky] Alternative à weather.com (2)

Bonne nouvelle ! Bravo Didier-T.
J'attends un peu pour les tests, déja que j'ai du mal à mettre les choses en place avec creationmodules...
Enfin je viens de faire un test avec celui-ci en enlevant les transparences de cadres pour changer plus facilement de fond...Quoique...
jpdipsy merci quand-même, j'y arriverais un jour... big_smile
aperçu

Dernière modification par ragamatrix (Le 06/02/2013, à 15:14)

Hors ligne

#1919 Le 06/02/2013, à 15:21

ragamatrix

Re : [Conky] Alternative à weather.com (2)

jpdipsy a écrit :

@Ragamatrix fait juste pêter ton conky original (à partir de scripts lua à charger # ) et le chemin complet ou il se trouve

conky_fond_ecran:

 # -- Conky settings -- #
    ############################### Mode fond ecran 
    background yes
    update_interval 1
    double_buffer yes
    own_window yes
    own_window_type override
    own_window_transparent yes
    own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
    alignment tl
    maximum_width 1  
    gap_x -10
    gap_y -30
    # scripts lua à charger ##################################### changer ~/conky par votre rep si vous n'avez pas le mme
    lua_load  ~/.conky/conky40/Meteo-Lua/scripts/meteo.lua               # ces quatres scripts sont obligatoires
    lua_load  ~/.conky/conky40/Meteo-Lua/scripts/images_meteo.lua        #
    lua_startup_hook init  ~/.conky/conky40/Meteo-Lua/configs/meteo.cfg  #
    lua_shutdown_hook extinction                                #
    #############################################################
         TEXT
#### Lancement des scripts récupérant les données météo  ##
#Important si vous avez un conky lançant déja meteo.lua
# utilisez ${lua Meteo_horsligne}en ligne###${lua Meteo_Maj}
#--------------------------------------------------------------
#--------------------  changer ~/conky par votre rep si vous n'avez pas le mme
${lua Meteo_horsligne}${lua Images_MAJ ~/.conky/conky40/Meteo-Lua/configs/fondecran.cfg}
###############################################################
# lancement du script qui vérifie à interval régulier que votre fond d'écran
# n'a pas changé (ici 10s à augmenter si vous avez des prob de double affichage)
# il doit être lancé suivit du nom du modules que vous avez édité
# si vous ne changez jamais de fond d'écran vous pouvez vous en passer
${execi 10 ~/.conky/conky40/Meteo-Lua/scripts/fond-gestion.sh verification creationmodules-fondecran}
############## N'ajoutez rien ################################# 

conky_fond_ecran_test:

 # -- Conky settings -- #
    ############################### Mode fond ecran 
    background yes
    update_interval 1
    double_buffer yes
    own_window yes
    own_window_type override
    own_window_transparent yes
    own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
    alignment tl
    maximum_width 1  
    gap_x -10
    gap_y -30
    # scripts lua à charger ##################################### changer ~/conky par votre rep si vous n'avez pas le mme
    lua_load  ~/.conky/conky40/Meteo-Lua/scripts/meteo.lua               # ces quatres scripts sont obligatoires

    lua_startup_hook init  ~/.conky/conky40/Meteo-Lua/configs/meteo.cfg  #
    lua_shutdown_hook extinction                                #
    #############################################################
         TEXT
#### Lancement des scripts récupérant les données météo  ##
#Important si vous avez un conky lançant déja meteo.lua
# utilisez ${lua Meteo_horsligne}en ligne###${lua Meteo_Maj}
#--------------------------------------------------------------
#--------------------  changer ~/conky par votre rep si vous n'avez pas le mme
${lua Meteo_Maj}
 

restart_test.sh:

 #!/bin/bash

# pour le tuer
pid=$(ps x |grep "[c]onky -c ~/.conky/conky40/Meteo-Lua/scripts/conky_fond_ecran" | cut -d " " -f2)
kill -9 $pid
#pour le relancer
conky -c ~/.conky/conky40/Meteo-Lua/scripts/conky_fond_ecran
 

Hors ligne

#1920 Le 06/02/2013, à 15:21

Phyllinux

Re : [Conky] Alternative à weather.com (2)

ragamatrix a écrit :

Le moins que l'on puisse dire, c'est que le bureau est 'un peu' chargé lol
On dirait la chambre de mes garçons à la fin d'un week end ! Y'en a de partout wink


The ship is sinking normally...

Hors ligne

#1921 Le 06/02/2013, à 15:22

jpdipsy

Re : [Conky] Alternative à weather.com (2)

ragamatrix a écrit :

Bonne nouvelle ! Bravo Didier-T.
J'attends un peu pour les tests, déja que j'ai du mal à mettre les choses en place avec creationmodules...
Enfin je viens de faire un test avec celui-ci en enlevant les transparences de cadres pour changer plus facilement de fond...Quoique...
jpdipsy merci quand-même, j'y arriverais un jour... big_smile
aperçu

Je crois que la bonne formule est "Je l'aurais un jour ! je l'aurais ......."

Hors ligne

#1922 Le 06/02/2013, à 15:27

jpdipsy

Re : [Conky] Alternative à weather.com (2)

Je suis perdu dans tout ce bintz lol

Hors ligne

#1923 Le 06/02/2013, à 15:31

jpdipsy

Re : [Conky] Alternative à weather.com (2)

Phyllinux a écrit :
ragamatrix a écrit :

Le moins que l'on puisse dire, c'est que le bureau est 'un peu' chargé lol
On dirait la chambre de mes garçons à la fin d'un week end ! Y'en a de partout wink

Et je crois bien qu'il ne nous à pas montré l'autre écran avec les prévisions à cinq minute.
Il doit plus avoir le temps de vérifier dehors avec le temps passé à programmer ......

On rigole

Hors ligne

#1924 Le 06/02/2013, à 15:58

Didier-T

Re : [Conky] Alternative à weather.com (2)

aller comme c'est la journée du script.

une petite modif qui feras plaisir à ragamatrix, avec sa plus de ville fantôme (enfin j'espère)

j'ai ajouté le passage d'argument au script, comme il est fait pour fonctionner de façon autonome avec le futur meteo.lua, il n'y auras pas de notice livrée avec.
mais pour les testeurs fous que vous êtes voici la façon de passer les arguments

python3 recmeteo.py adressWeb=http://www.accuweather.com/fr/fr/argenteuil/133593/current-weather/133593 repsauv=~/essais huitHeures=non nbJour=5 interval=30

si des arguments ne sont pas passé, ce n'est pas grave, ils ont tous une valeur par défaut.
recmeteo.py

#! /usr/bin/python3
# -*- coding: utf-8 -*-
# Par Didier-T Forum Ubuntu.fr

import urllib.request, os, time, re, sys

from bs4 import BeautifulSoup
homedir = os.path.expanduser('~')

#### initialisation des variables
adressWeb="http://www.accuweather.com/fr/fr/argenteuil/133593/current-weather/133593"
repsauv= "~/essais"
huitHeures="non"
nbJour=1
interval=30

for a in sys.argv:
    if re.search("adressWeb=", a) is not None:
        adressWeb=re.compile("adressWeb=(.*)").search(a).group(1)
    if re.search("repsauv=", a) is not None:
        repsauv=re.compile("repsauv=(.*)").search(a).group(1)
    if re.search("huitHeures=", a) is not None:
        huitHeures=re.compile("huitHeures=(.*)").search(a).group(1)
    if re.search("nbJour=", a) is not None:
        nbJour=re.compile("nbJour=(.*)").search(a).group(1)
    if re.search("interval=", a) is not None:
        interval=re.compile("interval=(.*)").search(a).group(1)
nbJour=int(nbJour)
interval=int(interval)
repsauv=repsauv.replace("~", homedir)
#### fin initialisation des variables

#### Fonction de traitement des fichiers
def traitement(adress, fichier):
    
    url=urllib.request.Request(adress)
    currentCond=urllib.request.urlopen(url)
    soup = BeautifulSoup(currentCond)
    currentCond.close()
    fiche = open(fichier, "w")
    #pour debug
#    fiche.write(soup.prettify())
    #si autres que huit heures
    if re.search("huitHeures", fichier) is None:
        #récupération date + historique
        if re.search("Jour", fichier) is not None or re.search("CC", fichier) is not None:
            histo=soup.find(id="feature-history")
            #récupération date
            date=histo.select("[class~=lt]")
            for d in date:
                jour=re.compile("^.* - (.*)/(.*)/(.*)").search(d.get_text())
            fiche.write("jour: "+jour.group(1)+"\n")
            fiche.write("mois: "+jour.group(2)+"\n")
            fiche.write("année: "+jour.group(3)+"\n")
            #récupération historique
            hi=histo.select("[class~=hi]")
            for v in hi:
                hivalue=v.get_text().split("\n")
            fiche.write("maxjour: "+hivalue[2]+"\n")
            fiche.write("maxnormal: "+hivalue[3]+"\n")
            fiche.write("maxrecord: "+hivalue[4]+"\n")
            fiche.write("max1ans: "+hivalue[5]+"\n")
            lo=histo.select("[class~=last]")
            for v in lo:
                lovalue=v.get_text().split("\n")
            fiche.write("minjour: "+lovalue[2]+"\n")
            fiche.write("minnormal: "+lovalue[3]+"\n")
            fiche.write("minrecord: "+lovalue[4]+"\n")
            fiche.write("min1ans: "+lovalue[5]+"\n")

        #localisation si condition courante
        if re.search("CC", fichier) is not None:
            ville=soup.select("[class~=current-city]")[0].get_text().split(",")[0]
            longi=re.compile("lon: '(.*)',").search(str(soup)).group(1)
            lat=re.compile("lat: '(.*)',").search(str(soup)).group(1)
            fiche.write("ville: "+ville+"\n")
            fiche.write("lat: "+lat+"\n")
            fiche.write("long: "+longi+"\n")
        
        # recherche vent
        current_balise=soup.find(id="details")
        ventd=re.compile("var d = '(.*)';").search(str(current_balise)).group(1).replace("W", "O")
        ventf=re.compile("var s = '(.*)km/h';").search(str(current_balise)).group(1)
        fiche.write("direction: "+ventd+"\n")
        fiche.write("vitesse: "+ventf+"\n")
        
        #recherche icone
        icone=current_balise.select("[class~=icon]")
        i=0
        for ic in icone:
            i=i+1
            fiche.write("icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '').replace('"></div>', '')+"\n")
            
        #info conditions générales
        cc=current_balise.find_all('li')
        for inf in cc:
            inf=inf.get_text().replace("                                ", "").replace("\n", "")
            if re.search(":", inf) is not None:
                fiche.write(inf+"\n")
    else:
        table=soup.find_all('table')
#        fiche.write(table[0].prettify())
        #recherche icones huit heures
        icone=table[0].find_all('div')
        i=0
        for ic in icone:
            i=i+1
            fiche.write("icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '').replace('"></div>', '')+"\n")
            if i == 8:
                break
        #donée huit heures
        tablevalue=table[0].get_text().split("\n")
        i=0
        for v in tablevalue:
            i=i+1
            #pour le débug
#            fiche.write(str(i)+" "+v+"\n")
            if i >= 18 and i <= 25:
                x=x+1
                fiche.write("heure"+str(x)+": "+v+"\n")
            elif i >= 57 and i <= 64:
                x=x+1
                fiche.write("temp"+str(x)+": "+v+"\n")
            elif i >= 68 and i <= 75:
                x=x+1
                fiche.write("res"+str(x)+": "+v+"\n")
            elif i >= 79 and i <= 86:
                x=x+1
                fiche.write("humid"+str(x)+": "+v+"\n")
            elif i >= 105 and i <= 112:
                x=x+1
                fiche.write("probpluie"+str(x)+": "+v+"\n")
            elif i >= 116 and i <= 123:
                x=x+1
                fiche.write("probneige"+str(x)+": "+v+"\n")
            elif i >= 127 and i <= 134:
                x=x+1
                fiche.write("probverglas"+str(x)+": "+v+"\n")
            elif i >= 153 and i <= 160:
                x=x+1
                fiche.write("vent"+str(x)+": "+v+"\n")
            elif i >= 164 and i <= 171:
                x=x+1
                fiche.write("uv"+str(x)+": "+v+"\n")
            elif i >= 175 and i <= 182:
                x=x+1
                fiche.write("couvnuage"+str(x)+": "+v+"\n")
            elif i >= 186 and i <= 193:
                x=x+1
                fiche.write("rosée"+str(x)+": "+v+"\n")
            else :
                x=0


    fiche.close()
#### fin Fonction de traitement des fichiers

#### Mise en tache de fond
def demonise(ent, id1, id2, huitHeures, nbJour, interval):
    while 1 :
        debut=time.time()
        traitement(ent+nb1+'/current-weather/'+nb2, repsauv+"/CC")
        if huitHeures=="oui":
            traitement(ent+nb1+'/hourly-weather-forecast/'+nb2, repsauv+"/huitHeures")
        x=0
        while x<nbJour:
            x=x+1
            traitement(ent+nb1+'/daily-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Jour"+str(x))
            traitement(ent+nb1+'/morning-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Matin"+str(x))
            traitement(ent+nb1+'/afternoon-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/AM"+str(x))
            traitement(ent+nb1+'/evening-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Soiree"+str(x))
            traitement(ent+nb1+'/overnight-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Nuit"+str(x))
        fin=time.time()
        print("temps de mise a jour",fin-debut)
        time.sleep(60*interval)

#### Lancement du script et initialisation de la tache de fond
nb1=re.findall('\d+', adressWeb)[0]
nb2=re.findall('\d+', adressWeb)[1]
ent=adressWeb[:adressWeb.find(nb1)]
fin=adressWeb.replace(ent+nb1, "")
fin=fin.replace(fin[:fin.find(nb2)]+nb2, "")
nb2=nb2+fin
demonise(ent, nb1, nb2, huitHeures, nbJour, interval)

edit : bien entendu, si vous mettez des chemins avec espace il faut l'entourer de "
par exemple
repsauv="~/essais du jour"

Dernière modification par Didier-T (Le 06/02/2013, à 16:03)

Hors ligne

#1925 Le 06/02/2013, à 16:11

ragamatrix

Re : [Conky] Alternative à weather.com (2)

jpdipsy a écrit :
Phyllinux a écrit :
ragamatrix a écrit :

Le moins que l'on puisse dire, c'est que le bureau est 'un peu' chargé lol
On dirait la chambre de mes garçons à la fin d'un week end ! Y'en a de partout wink

Et je crois bien qu'il ne nous à pas montré l'autre écran avec les prévisions à cinq minute.
Il doit plus avoir le temps de vérifier dehors avec le temps passé à programmer ......

On rigole

Non de ZEUS Qu'est-ce que j'me prends aujourd'hui !
Pawce que jew lew vow bieeenn (accent loreal)
ffff "qu'est-ce qu'on s'marre" comme disait l'autre

Hors ligne