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.

#1951 Le 07/02/2013, à 18:50

Didier-T

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

jpdipsy a écrit :

Ne sentez vous pas poindre cette subtil ,discrète et ineluctable odeur de renouveau ? ah c'est bon !!
Ah que c'est bon

j'adore, en effet, c'est bon, très bon même.

on signe ou ???

Hors ligne

#1952 Le 07/02/2013, à 19:09

Didier-T

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

@ RayBan10,

essaye avec ceci

function conky_Meteo_Alerte(j)
	local n = 0
	if j == nil then
	   j = 1
	else
	   j = tonumber(j)
	end
	if os.date("%H%M", os.time()) <= InfoJour[j].CoucherSoleilH..InfoJour[j].CoucherSoleilM and os.date("%H%M", os.time()) >= InfoJour[j].LeverSoleilH..InfoJour[j].LeverSoleilM 
	then
		moment = "Jour"
		moment1 = tonumber(conditionJour[j].VentRafales)
		moment2 = tonumber(conditionJour[j].QNeige)
		moment3 = tonumber(conditionJour[j].EVerglas)
		moment4 = tonumber(conditionJour[j].Uv)
		moment5 = tonumber(conditionJour[j].NivPrec)
		moment6 = tonumber(conditionJour[j].QPluie)
	else 
		moment = "Nuit"
		moment1 = tonumber(conditionNuit[j].VentRafales)
		moment2 = tonumber(conditionNuit[j].QNeige)
		moment3 = tonumber(conditionNuit[j].EVerglas)
		moment4 = tonumber(conditionNuit[j].Uv)
		moment5 = tonumber(conditionNuit[j].NivPrec)
		moment6 = tonumber(conditionNuit[j].QPluie)
	end
	print (moment)
	
	
	if moment1 >= tonumber(rafale)
	then n = n+1000000 
	end
	if moment2 >= tonumber(neige)
	then n = n+100000 
	end
	if moment3 >= tonumber(verglas)
	then n = n+10000
	end
	if moment4 >= tonumber(uv)
	then n = n+1000
	end
	if moment5 >= tonumber(preci)
	then n = n+100
	end 
	if moment6 >= tonumber(pluie)
	then n = n+10
	end 
	if tonumber(conditioncourante.Visibilite) <= tonumber(visibil)
	then n = n+1
	end
	
	print (moment1)
	print (moment2)
	print (moment3)
	print (moment4)
	print (moment5)
	print (moment6)
	
	print (Alerte.." Ok : "..n.."  "..moment1.."  "..rafale)
return n
 
end

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

Hors ligne

#1953 Le 07/02/2013, à 21:54

ragamatrix

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

@jpdipsy
Bon maintenant le conky fond d'ecran ne se lance plus du tout... hmm

Hors ligne

#1954 Le 08/02/2013, à 07:00

jpdipsy

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

Hello

Les croissants chauds du matin bonne appetit

Hors ligne

#1955 Le 08/02/2013, à 09:00

ragamatrix

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

ragamatrix a écrit :

@jpdipsy
Bon maintenant le conky fond d'ecran ne se lance plus du tout... hmm

Comprends pas aujourd'hui ça fonctionne...
Bravo pour ta démo !

Hors ligne

#1956 Le 08/02/2013, à 11:31

jpdipsy

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

ragamatrix a écrit :
ragamatrix a écrit :

@jpdipsy
Bon maintenant le conky fond d'ecran ne se lance plus du tout... hmm

Comprends pas aujourd'hui ça fonctionne...
Bravo pour ta démo !

Histoire du clignotant Belge certainement (un coup y marche ! un coup y marche pas ! ) le premier qui tape aura raison lol

Merki

Hors ligne

#1957 Le 09/02/2013, à 06:42

Didier-T

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

voici la version définitive (enfin je pense) du script python
le tableau des huit heures est récupéré de manière plus résistante au changement de site
la taille utilisé en mémoire est contenu (~21Mo)
ajout des fenêtres de notification avec option pour les désactivés (notify=oui (defaut) ou non)
temps de mise a jour partielle défini par l'utilisateur, et mise a jour complète toutes les heures, sa évitera de se faire black listé par accuweather

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

from urllib.request import Request, urlopen
from os import path, system
from time import time, sleep
from re import search, compile, findall
from sys import argv
from gc import collect
from bs4 import BeautifulSoup

Version=1.0

homedir = path.expanduser('~')

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

for a in argv:
    if search("adressWeb=", a) is not None:
        adressWeb=compile("adressWeb=(.*)").search(a).group(1)
    if search("repsauv=", a) is not None:
        repsauv=compile("repsauv=(.*)").search(a).group(1)
    if search("huitHeures=", a) is not None:
        huitHeures=compile("huitHeures=(.*)").search(a).group(1)
    if search("nbJour=", a) is not None:
        nbJour=compile("nbJour=(.*)").search(a).group(1)
    if search("interval=", a) is not None:
        interval=compile("interval=(.*)").search(a).group(1)
    if search("notify=", a) is not None:
        notifi=compile("notify=(.*)").search(a).group(1)
    
nbJour=int(nbJour)
interval=int(interval)
repsauv=repsauv.replace("~", homedir)
notifi=str.lower(notifi)
huitHeures=str.lower(huitHeures)

#### fin initialisation des variables

#### Fonction de traitement des fichiers
def traitement(adress, fichier):
    url=Request(adress)
    currentCond=urlopen(url)
    soup = BeautifulSoup(currentCond)
    currentCond.close()
#    fiche = open(fichier, "w")
    #pour debug
#    fiche.write(soup.prettify())
    #si autres que huit heures
    table=soup.find_all('table')
    if search("huitHeures", fichier) is None:
        # recherche vent
        current_balise=soup.find(id="details")
        ventd=compile("var d = '(.*)';").search(str(current_balise)).group(1).replace("W", "O")
        ventf=compile("var s = '(.*)';").search(str(current_balise)).group(1)
        information="direction: "+ventd+"\n"
        information=information+"vitesse: "+ventf+"\n"
        #info dans l'image
        inf=current_balise.select("[class~=info]")
        icone=current_balise.select("[class~=icon]")
        i=0
        #recherche icone
        for ic in icone:
            i=i+1
            information=information+"icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '').replace('"></div>', '')+"\n"
        i=0
        #récupération date + historique
        if search("Jour", fichier) is not None or 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=compile("^.* - (.*)/(.*)/(.*)").search(d.get_text())
            information=information+"jour: "+jour.group(1)+"\n"
            information=information+"mois: "+jour.group(2)+"\n"
            information=information+"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")
            information=information+"maxjour: "+hivalue[2]+"\n"
            information=information+"maxnormal: "+hivalue[3]+"\n"
            information=information+"maxrecord: "+hivalue[4]+"\n"
            information=information+"max1ans: "+hivalue[5]+"\n"
            lo=histo.select("[class~=last]")
            for v in lo:
                lovalue=v.get_text().split("\n")
            information=information+"minjour: "+lovalue[2]+"\n"
            information=information+"minnormal: "+lovalue[3]+"\n"
            information=information+"minrecord: "+lovalue[4]+"\n"
            information=information+"min1ans: "+lovalue[5]+"\n"
            #info dans l'image
            if search("Jour", fichier) is not None:
                infs=inf[0].get_text().split("\n")
                information=information+"Tempjour: "+findall('-?\d+', infs[0])[0]+"\n"
                information=information+"RealFeeljour: "+findall('-?\d+', infs[1])[0]+"\n"
                information=information+"Précipitationsjour: "+findall('-?\d+', infs[2])[0]+"\n"
                infs=inf[1].get_text().split("\n")
                information=information+"Tempnuit: "+findall('-?\d+', infs[0])[0]+"\n"
                information=information+"RealFeelnuit: "+findall('-?\d+', infs[1])[0]+"\n"
                information=information+"Précipitationsnuit: "+findall('-?\d+', infs[2])[0]+"\n"
            p=current_balise.find_all('p')
            i=0
            x=0
            for pv in p:
                i=i+1
                if i==5 or i==10:
                    x=x+1
                    information=information+"cond"+str(x)+": "+pv.get_text()+"\n"


        #localisation si condition courante
        if search("CC", fichier) is not None:
            ville=soup.select("[class~=current-city]")[0].get_text().split(",")[0]
            longi=compile("lon: '(.*)',").search(str(soup)).group(1)
            lat=compile("lat: '(.*)',").search(str(soup)).group(1)
            information=information+"ville: "+ville+"\n"
            information=information+"lat: "+lat+"\n"
            information=information+"long: "+longi+"\n"
            #info dans l'image
            inf=inf[0].get_text()
            cond=inf[:inf.find(findall('\d+', inf)[0])]
            inf=inf.replace(cond, "")
            infs=inf.split(" ")
            information=information+"cond:"+cond+"\n"
            information=information+"Temp: "+infs[0]+"\n"
            information=information+"RealFeel: "+infs[2]+"\n"

        if search("Matin", fichier) is not None or search("AM", fichier) is not None or search("Soiree", fichier) is not None or search("Nuit", fichier) is not None:
            infs=inf[0].get_text().split("\n")
            information=information+"cond:"+infs[0]+"\n"
            information=information+"max: "+infs[1]+"\n"
            information=information+"min: "+infs[2].replace("Mn ", "")+"\n"
            information=information+"RealFeelmax: "+findall('-?\d+', infs[5])[0]+"\n"
            information=information+"RealFeelmin: "+findall('-?\d+', infs[5])[1]+"\n"
            
            #info conditions générales
            cc=current_balise.find_all('li')
            i=0
            for inf in cc:
                inf=inf.get_text().replace("                                ", "").replace("\n", "")
                if search(":", inf) is not None:
                    i=i+1
                    if i <= 7:
                        inf=inf.replace(":", " jour:")
                    else:
                        inf=inf.replace(":", " nuit:")
                    information=information+inf+"\n"
        else:
            cc=current_balise.find_all('li')
            for inf in cc:
                inf=inf.get_text().replace("                                ", "").replace("\n", "")
                if search(":", inf) is not None:
                    information=information+inf+"\n"
    else:
        #recherche icones huit heures
        rows = table[0].findAll('tr')
        information=""
        x=0
        for tr in rows:
            cols = tr.findAll('td')
            texte_tr=tr.text.split("\n")[1].replace("\n", "")
            i=0
            for td in cols:
                i=i+1
                texte_bu = td.text.replace("\n", "")
    #		    texte_bu = texte_bu.encode('utf-8')
                if texte_bu != "" :
                    if texte_tr == " " and x < len(cols):
                        information=information+"Heure"+str(i)+": "+texte_bu+"\n"
                        x=x+1
                    elif texte_tr != " ":
                        information=information+texte_tr+str(i)+": "+texte_bu+"\n"
        icone=table[0].find_all('div')
        i=0
        for ic in icone:
            i=i+1
            ico="icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '')
            fin=compile('">(.*)div>').search(ico).group(1)
            information=information+ico.replace('">'+fin+'div>', '')+"\n"
            if i == 8:
                break
    fiche = open(fichier, "w")
    fiche.write(information)
    fiche.close()
    collect()
#### fin Fonction de traitement des fichiers

#### Mise en tache de fond
def demonise(ent, id1, id2, huitHeures, nbJour, interval):
    start=time()-(60*60)
    misajour=1
    while 1 :
        heure=time()
        traitement(ent+nb1+'/current-weather/'+nb2, repsauv+"/CC")
        if time()-start >= 60*60:
            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()
        if notifi == "oui":
            if time()-start >= 60*60:
                system('notify-send "Météo mise à jour complète"')
            else:
                system('notify-send "Météo mise à jour Conditions courantes"')
        start=heure
        pause=60*interval-int(fin-start)
        print("temps de mise a jour",fin-start)
        collect()
        sleep(pause)


#### Lancement du script et initialisation de la tache de fond
nb1=findall('\d+', adressWeb)[0]
nb2=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
print("Version =",Version)
demonise(ent, nb1, nb2, huitHeures, nbJour, interval)

Dernière modification par Didier-T (Le 09/02/2013, à 07:20)

Hors ligne

#1958 Le 09/02/2013, à 06:53

jpdipsy

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

Didier-T a écrit :

voici la version définitive (enfin je pense) du script python

Maintenant il faut prier pour que le site change quelque chose pour mesurer la résistance au changement.

Edit: Ps n'oublie pas de mettre un numéro de version s.t.p çà pourra servir

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

Hors ligne

#1959 Le 09/02/2013, à 07:17

Didier-T

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

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

voici la version définitive (enfin je pense) du script python

Maintenant il faut prier pour que le site change quelque chose pour mesurer la résistance au changement.

Edit: Ps n'oublie pas de mettre un numéro de version s.t.p çà pourra servir

Ok pour la version, moins pour les changement de site (si il pouvait rester tranquille un moment...)

Edit: c'est modifier dans le post précédant

Dernière modification par Didier-T (Le 09/02/2013, à 07:22)

Hors ligne

#1960 Le 09/02/2013, à 07:42

jpdipsy

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

Didier-T a écrit :

Ok pour la version, moins pour les changement de site (si il pouvait rester tranquille un moment...)

Edit: c'est modifier dans le post précédant

Merci
tiens des chiffres :

M.a.j complete  20.97
M.a.j partielle  0.68

Y'a pas photo

Hors ligne

#1961 Le 09/02/2013, à 08:13

Didier-T

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

Pour combien de jours ?

Hors ligne

#1962 Le 09/02/2013, à 08:15

jpdipsy

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

Didier-T a écrit :

Pour combien de jours ?

6 jours huitheures désactivées

Edit: Je vais essayer  avec des M.A.J completes  à 6 heures

Dernière modification par jpdipsy (Le 09/02/2013, à 08:19)

Hors ligne

#1963 Le 09/02/2013, à 08:27

Didier-T

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

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

Pour combien de jours ?

6 jours huitheures désactivées

Edit: Je vais essayer  avec des M.A.J completes  à 6 heures

pourquoi pas, mais il me semble que le site fait ses mise a jour ~ 1 fois par heure (sauf pour les conditions courantes)

Hors ligne

#1964 Le 09/02/2013, à 08:35

jpdipsy

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

Loulouttes,Loulou

Maintenant que Didier à mis en place les fondements je vais m'occuper à retravailler sur l'affichage des données en fond d'écran.
Conky ne sera plus nécessaire (puisque un démon tourne) juste un script de traitement des données (je ne sais pas encore sous quel langage) et toujours un  script de mise en forme.
Donc wait and see

Hors ligne

#1965 Le 09/02/2013, à 08:38

Didier-T

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

au fait n'oublie pas de nous donner ton script pour la configuration de la météo, que tu montre sur tes dernières vidéos

edit: pour la récupération des données je te conseille de les récupérer par position, les noms changeant avec la langue de la page météo

Dernière modification par Didier-T (Le 09/02/2013, à 08:40)

Hors ligne

#1966 Le 09/02/2013, à 09:04

jpdipsy

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

Didier-T a écrit :

au fait n'oublie pas de nous donner ton script pour la configuration de la météo, que tu montre sur tes dernières vidéos

edit: pour la récupération des données je te conseille de les récupérer par position, les noms changeant avec la langue de la page météo

Vi bien sur tiens le voilà installrecmeteo

Deux choix pour l'utilisation soit tu le lance sans arguments et il te créer un meteo.py dans .config soit avec argument installrecmeteo meteo-argenteuil (pour avoir possibilité de plusieurs config) la config étant passé en argument à recmeteo (ça c'est que ma vision bien évidement tu vois le truc quoi Ragamatrix pourra acheter un troisième écran).
Attention il est pas terminé j'en suis à l'installe des fichiers.

Edit je ferais les M.A.J au fur et à mesure sur le même lien

reedit : quel buse j'ai oublié pour récuperer la config et les variables dans recmeteo j'utilise ceci :

configfile = '~/.config/meteo.py'
sys.path.append(os.path.dirname(os.path.expanduser(configfile)))
import meteo

#### initialisation des variables
adressWeb=(meteo.adressWeb)
repsauv=(meteo.repsauv)
huitHeures=(meteo.huitHeures)
nbJour=(meteo.nbJour)
interval=(meteo.interval)
notifi=(meteo.notifi)

Mais c'est que du test pour le moment

Dernière modification par jpdipsy (Le 09/02/2013, à 09:19)

Hors ligne

#1967 Le 09/02/2013, à 09:35

jpdipsy

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

feuille de route pour installrecmeteo

- installer recmeteo (avec vérification des versions )soit en mode autonome lancé à l'ouverture de session soit pour les utilisateurs de conky lancer par le conky cde pre_exec
- installation des conky pour les utilisateurs de conky
- installation d'autres modes si il y'a lieu 

J'ai jusqu'au printemps après c'est dehors ..................   lol

Hors ligne

#1968 Le 09/02/2013, à 11:46

jpdipsy

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

@Didier

Vérifie la recup Temp:  CC de recmeteo  chez moi 2° en place de -2° ( j'ai failli sortir l'huile solaire)   cool

Hors ligne

#1969 Le 10/02/2013, à 02:13

Didier-T

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

bien vue jpdipsy, c'est corrigé.

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

from urllib.request import Request, urlopen
from os import path, system
from time import time, sleep
from re import search, compile, findall
from sys import argv
from gc import collect
from bs4 import BeautifulSoup

Version=1.01

homedir = path.expanduser('~')

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

for a in argv:
    if search("adressWeb=", a) is not None:
        adressWeb=compile("adressWeb=(.*)").search(a).group(1)
    if search("repsauv=", a) is not None:
        repsauv=compile("repsauv=(.*)").search(a).group(1)
    if search("huitHeures=", a) is not None:
        huitHeures=compile("huitHeures=(.*)").search(a).group(1)
    if search("nbJour=", a) is not None:
        nbJour=compile("nbJour=(.*)").search(a).group(1)
    if search("interval=", a) is not None:
        interval=compile("interval=(.*)").search(a).group(1)
    if search("notify=", a) is not None:
        notifi=compile("notify=(.*)").search(a).group(1)
    
nbJour=int(nbJour)
interval=int(interval)
repsauv=repsauv.replace("~", homedir)
notifi=str.lower(notifi)
huitHeures=str.lower(huitHeures)

#### fin initialisation des variables

#### Fonction de traitement des fichiers
def traitement(adress, fichier):
    url=Request(adress)
    currentCond=urlopen(url)
    soup = BeautifulSoup(currentCond)
    currentCond.close()
#    fiche = open(fichier, "w")
    #pour debug
#    fiche.write(soup.prettify())
    #si autres que huit heures
    table=soup.find_all('table')
    if search("huitHeures", fichier) is None:
        # recherche vent
        current_balise=soup.find(id="details")
        ventd=compile("var d = '(.*)';").search(str(current_balise)).group(1).replace("W", "O")
        ventf=compile("var s = '(.*)';").search(str(current_balise)).group(1)
        information="direction: "+ventd+"\n"
        information=information+"vitesse: "+ventf+"\n"
        #info dans l'image
        inf=current_balise.select("[class~=info]")
        icone=current_balise.select("[class~=icon]")
        i=0
        #recherche icone
        for ic in icone:
            i=i+1
            information=information+"icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '').replace('"></div>', '')+"\n"
        i=0
        #récupération date + historique
        if search("Jour", fichier) is not None or 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=compile("^.* - (.*)/(.*)/(.*)").search(d.get_text())
            information=information+"jour: "+jour.group(1)+"\n"
            information=information+"mois: "+jour.group(2)+"\n"
            information=information+"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")
            information=information+"maxjour: "+hivalue[2]+"\n"
            information=information+"maxnormal: "+hivalue[3]+"\n"
            information=information+"maxrecord: "+hivalue[4]+"\n"
            information=information+"max1ans: "+hivalue[5]+"\n"
            lo=histo.select("[class~=last]")
            for v in lo:
                lovalue=v.get_text().split("\n")
            information=information+"minjour: "+lovalue[2]+"\n"
            information=information+"minnormal: "+lovalue[3]+"\n"
            information=information+"minrecord: "+lovalue[4]+"\n"
            information=information+"min1ans: "+lovalue[5]+"\n"
            #info dans l'image
            if search("Jour", fichier) is not None:
                infs=inf[0].get_text().split("\n")
                information=information+"Tempjour: "+findall('-?\d+', infs[0])[0]+"\n"
                information=information+"RealFeeljour: "+findall('-?\d+', infs[1])[0]+"\n"
                information=information+"Précipitationsjour: "+findall('-?\d+', infs[2])[0]+"\n"
                infs=inf[1].get_text().split("\n")
                information=information+"Tempnuit: "+findall('-?\d+', infs[0])[0]+"\n"
                information=information+"RealFeelnuit: "+findall('-?\d+', infs[1])[0]+"\n"
                information=information+"Précipitationsnuit: "+findall('-?\d+', infs[2])[0]+"\n"
            p=current_balise.find_all('p')
            i=0
            x=0
            for pv in p:
                i=i+1
                if i==5 or i==10:
                    x=x+1
                    information=information+"cond"+str(x)+": "+pv.get_text()+"\n"


        #localisation si condition courante
        if search("CC", fichier) is not None:
            ville=soup.select("[class~=current-city]")[0].get_text().split(",")[0]
            longi=compile("lon: '(.*)',").search(str(soup)).group(1)
            lat=compile("lat: '(.*)',").search(str(soup)).group(1)
            information=information+"ville: "+ville+"\n"
            information=information+"lat: "+lat+"\n"
            information=information+"long: "+longi+"\n"
            #info dans l'image
            inf=inf[0].get_text()
            cond=inf[:inf.find(findall('-?\d+', inf)[0])]
            inf=inf.replace(cond, "")
            infs=inf.split(" ")
            information=information+"cond:"+cond+"\n"
            information=information+"Temp: "+infs[0]+"\n"
            information=information+"RealFeel: "+infs[2]+"\n"

        if search("Matin", fichier) is not None or search("AM", fichier) is not None or search("Soiree", fichier) is not None or search("Nuit", fichier) is not None:
            infs=inf[0].get_text().split("\n")
            information=information+"cond:"+infs[0]+"\n"
            information=information+"max: "+infs[1]+"\n"
            information=information+"min: "+infs[2].replace("Mn ", "")+"\n"
            information=information+"RealFeelmax: "+findall('-?\d+', infs[5])[0]+"\n"
            information=information+"RealFeelmin: "+findall('-?\d+', infs[5])[1]+"\n"
            
            #info conditions générales
            cc=current_balise.find_all('li')
            i=0
            for inf in cc:
                inf=inf.get_text().replace("                                ", "").replace("\n", "")
                if search(":", inf) is not None:
                    i=i+1
                    if i <= 7:
                        inf=inf.replace(":", " jour:")
                    else:
                        inf=inf.replace(":", " nuit:")
                    information=information+inf+"\n"
        else:
            cc=current_balise.find_all('li')
            for inf in cc:
                inf=inf.get_text().replace("                                ", "").replace("\n", "")
                if search(":", inf) is not None:
                    information=information+inf+"\n"
    else:
        #recherche icones huit heures
        rows = table[0].findAll('tr')
        information=""
        x=0
        for tr in rows:
            cols = tr.findAll('td')
            texte_tr=tr.text.split("\n")[1].replace("\n", "")
            i=0
            for td in cols:
                i=i+1
                texte_bu = td.text.replace("\n", "")
    #		    texte_bu = texte_bu.encode('utf-8')
                if texte_bu != "" :
                    if texte_tr == " " and x < len(cols):
                        information=information+"Heure"+str(i)+": "+texte_bu+"\n"
                        x=x+1
                    elif texte_tr != " ":
                        information=information+texte_tr+str(i)+": "+texte_bu+"\n"
        icone=table[0].find_all('div')
        i=0
        for ic in icone:
            i=i+1
            ico="icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '')
            fin=compile('">(.*)div>').search(ico).group(1)
            information=information+ico.replace('">'+fin+'div>', '')+"\n"
            if i == 8:
                break
    fiche = open(fichier, "w")
    fiche.write(information)
    fiche.close()
    collect()
#### fin Fonction de traitement des fichiers

#### Mise en tache de fond
def demonise(ent, id1, id2, huitHeures, nbJour, interval):
    start=time()-(60*60)
    misajour=1
    while 1 :
        heure=time()
        traitement(ent+nb1+'/current-weather/'+nb2, repsauv+"/CC")
        if huitHeures=="oui":
            traitement(ent+nb1+'/hourly-weather-forecast/'+nb2, repsauv+"/huitHeures")
        if time()-start >= 60*60:
            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()
        if notifi == "oui":
            if time()-start >= 60*60:
                system('notify-send "Météo mise à jour complète"')
            else:
                system('notify-send "Météo mise à jour Conditions courantes"')
        start=heure
        pause=60*interval-int(fin-start)
        print("temps de mise a jour",fin-start)
        collect()
        sleep(pause)


#### Lancement du script et initialisation de la tache de fond
nb1=findall('\d+', adressWeb)[0]
nb2=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
print("Version =", Version)
demonise(ent, nb1, nb2, huitHeures, nbJour, interval)

Edit: j'en ai profité pour modifier le temps entre deux mise a jour pour les huit heures (en même temps que les conditions courantes)

Dernière modification par Didier-T (Le 10/02/2013, à 02:41)

Hors ligne

#1970 Le 10/02/2013, à 10:25

jpdipsy

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

Didier-T a écrit :

Edit: j'en ai profité pour modifier le temps entre deux mise a jour pour les huit heures (en même temps que les conditions courantes)

Merci
Et quid des heures  de lever/coucher je crois que c'est tout  ce qui manque

Hors ligne

#1971 Le 10/02/2013, à 12:24

Didier-T

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

jpdipsy a écrit :

Et quid des heures  de lever/coucher je crois que c'est tout  ce qui manque

oups, je me disais bien aussi que c'était trop beau pour être vrai.

Hors ligne

#1972 Le 10/02/2013, à 14:06

Didier-T

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

c'est modifié,

ajout heure lever, coucher + durée pour le soleil et la lune

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

from urllib.request import Request, urlopen
from os import path, system
from time import time, sleep
from re import search, compile, findall
from sys import argv
from gc import collect
from bs4 import BeautifulSoup

Version=1.02

homedir = 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
notifi="oui"

for a in argv:
    if search("adressWeb=", a) is not None:
        adressWeb=compile("adressWeb=(.*)").search(a).group(1)
    if search("repsauv=", a) is not None:
        repsauv=compile("repsauv=(.*)").search(a).group(1)
    if search("huitHeures=", a) is not None:
        huitHeures=compile("huitHeures=(.*)").search(a).group(1)
    if search("nbJour=", a) is not None:
        nbJour=compile("nbJour=(.*)").search(a).group(1)
    if search("interval=", a) is not None:
        interval=compile("interval=(.*)").search(a).group(1)
    if search("notify=", a) is not None:
        notifi=compile("notify=(.*)").search(a).group(1)
    
nbJour=int(nbJour)
interval=int(interval)
repsauv=repsauv.replace("~", homedir)
notifi=str.lower(notifi)
huitHeures=str.lower(huitHeures)

#### fin initialisation des variables

#### Fonction de traitement des fichiers
def traitement(adress, fichier):
    url=Request(adress)
    currentCond=urlopen(url)
    soup = BeautifulSoup(currentCond)
    currentCond.close()
#    fiche = open(fichier, "w")
    #pour debug
#    fiche.write(soup.prettify())
    #si autres que huit heures
    table=soup.find_all('table')
    information=""
    if search("huitHeures", fichier) is None:
        # recherche vent
        current_balise=soup.find(id="details")
        divs=current_balise.select("[class~=wind-box-lg]")
        if len(divs) == 0:
            divs=current_balise.select("[class~=wind-box-sm]")
        i=0
        for div in divs:
            i=i+1
            ventd=compile("var d = '(.*)';").search(str(div)).group(1).replace("W", "O")
            ventf=compile("var s = '(.*)';").search(str(div)).group(1)
            information=information+"direction"+str(i)+": "+ventd+"\n"
            information=information+"vitesse"+str(i)+": "+ventf+"\n"
        #info dans l'image
        inf=current_balise.select("[class~=info]")
        icone=current_balise.select("[class~=icon]")
        i=0
        #recherche icone
        for ic in icone:
            i=i+1
            information=information+"icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '').replace('"></div>', '')+"\n"
        i=0
        #récupération date + historique
        if search("Jour", fichier) is not None or 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=compile("^.* - (.*)/(.*)/(.*)").search(d.get_text())
            information=information+"jour: "+jour.group(1)+"\n"
            information=information+"mois: "+jour.group(2)+"\n"
            information=information+"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")
            information=information+"maxjour: "+hivalue[2]+"\n"
            information=information+"maxnormal: "+hivalue[3]+"\n"
            information=information+"maxrecord: "+hivalue[4]+"\n"
            information=information+"max1ans: "+hivalue[5]+"\n"
            lo=histo.select("[class~=last]")
            for v in lo:
                lovalue=v.get_text().split("\n")
            information=information+"minjour: "+lovalue[2]+"\n"
            information=information+"minnormal: "+lovalue[3]+"\n"
            information=information+"minrecord: "+lovalue[4]+"\n"
            information=information+"min1ans: "+lovalue[5]+"\n"
            #info dans l'image
            if search("Jour", fichier) is not None:
                infs=inf[0].get_text().split("\n")
                information=information+"Tempjour: "+findall('-?\d+', infs[0])[0]+"\n"
                information=information+"RealFeeljour: "+findall('-?\d+', infs[1])[0]+"\n"
                information=information+"Précipitationsjour: "+findall('-?\d+', infs[2])[0]+"\n"
                infs=inf[1].get_text().split("\n")
                information=information+"Tempnuit: "+findall('-?\d+', infs[0])[0]+"\n"
                information=information+"RealFeelnuit: "+findall('-?\d+', infs[1])[0]+"\n"
                information=information+"Précipitationsnuit: "+findall('-?\d+', infs[2])[0]+"\n"
                lever_coucher=soup.select("[class~=time-period]")
                i=0
                for p in lever_coucher:
                    spans=p.find_all('span')
                    i=i+1
                    x=0
                    for span in spans:
                        span=span.get_text()
                        if len(findall('\d+', span)) > 0:
                            x=x+1
                            if i == 1:
                                span_nom="Soleil "
                            else:
                                span_nom="Lune "
                            if x == 1:
                                information=information+span_nom+"lever: "+span+"\n"
                            elif x == 2:
                                information=information+span_nom+"durée: "+span+"\n"
                            else :
                                information=information+span_nom+"coucher: "+span+"\n"


            p=current_balise.find_all('p')
            i=0
            x=0
            for pv in p:
                i=i+1
                if i==5 or i==10:
                    x=x+1
                    information=information+"cond"+str(x)+": "+pv.get_text()+"\n"


        #localisation si condition courante
        if search("CC", fichier) is not None:
            ville=soup.select("[class~=current-city]")[0].get_text().split(",")[0]
            longi=compile("lon: '(.*)',").search(str(soup)).group(1)
            lat=compile("lat: '(.*)',").search(str(soup)).group(1)
            information=information+"ville: "+ville+"\n"
            information=information+"lat: "+lat+"\n"
            information=information+"long: "+longi+"\n"
            #info dans l'image
            inf=inf[0].get_text()
            cond=inf[:inf.find(findall('-?\d+', inf)[0])]
            inf=inf.replace(cond, "")
            infs=inf.split(" ")
            information=information+"cond:"+cond+"\n"
            information=information+"Temp: "+infs[0]+"\n"
            information=information+"RealFeel: "+infs[2]+"\n"

        if search("Matin", fichier) is not None or search("AM", fichier) is not None or search("Soiree", fichier) is not None or search("Nuit", fichier) is not None:
            infs=inf[0].get_text().split("\n")
            information=information+"cond:"+infs[0]+"\n"
            information=information+"max: "+infs[1]+"\n"
            information=information+"min: "+infs[2].replace("Mn ", "")+"\n"
            information=information+"RealFeelmax: "+findall('-?\d+', infs[5])[0]+"\n"
            information=information+"RealFeelmin: "+findall('-?\d+', infs[5])[1]+"\n"
            
            #info conditions générales
            cc=current_balise.find_all('li')
            for inf in cc:
                inf=inf.get_text()
                inf=inf.replace(compile('^ *').search(inf).group(0), "").replace("\n", "")
                if search(":", inf) is not None:
                    information=information+inf+"\n"
        else:
            i=0
            cc=current_balise.find_all('li')
            for inf in cc:
                inf=inf.get_text()
                inf=inf.replace("                                ", "").replace("\n", "").replace(" \r", "")
                if search(": ", inf) is not None:
                    i=i+1
                    print(i)
                    if i <= 6:
                        inf=inf.replace(":", " jour:")
                    else:
                        inf=inf.replace(":", " nuit:")
                    information=information+inf+"\n"
    else:
        #recherche icones huit heures
        rows = table[0].findAll('tr')
        information=""
        x=0
        for tr in rows:
            cols = tr.findAll('td')
            texte_tr=tr.text.split("\n")[1].replace("\n", "")
            i=0
            for td in cols:
                i=i+1
                texte_bu = td.text.replace("\n", "")
                if texte_bu != "" :
                    if texte_tr == " " and x < len(cols):
                        information=information+"Heure"+str(i)+": "+texte_bu+"\n"
                        x=x+1
                    elif texte_tr != " ":
                        information=information+texte_tr+str(i)+": "+texte_bu+"\n"
        icone=table[0].find_all('div')
        i=0
        for ic in icone:
            i=i+1
            ico="icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '')
            fin=compile('">(.*)div>').search(ico).group(1)
            information=information+ico.replace('">'+fin+'div>', '')+"\n"
            if i == 8:
                break
    fiche = open(fichier, "w")
#    fiche.write(current_balise.prettify())
    fiche.write(information)
    fiche.close()
    collect()
#### fin Fonction de traitement des fichiers

#### Mise en tache de fond
def demonise(ent, id1, id2, huitHeures, nbJour, interval):
    start=time()-(60*60)
    misajour=1
    while 1 :
        heure=time()
        traitement(ent+nb1+'/current-weather/'+nb2, repsauv+"/CC")
        if huitHeures=="oui":
            traitement(ent+nb1+'/hourly-weather-forecast/'+nb2, repsauv+"/huitHeures")
        if time()-start >= 60*60:
            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()
        if notifi == "oui":
            if time()-start >= 60*60:
                system('notify-send "Météo mise à jour complète"')
            else:
                system('notify-send "Météo mise à jour Conditions courantes"')
        start=heure
        pause=60*interval-int(fin-start)
        print("temps de mise a jour",fin-start)
        collect()
        sleep(pause)


#### Lancement du script et initialisation de la tache de fond
nb1=findall('\d+', adressWeb)[0]
nb2=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
print("Version =", Version)
demonise(ent, nb1, nb2, huitHeures, nbJour, interval)

Edit: infos compacté dans retour jour

Dernière modification par Didier-T (Le 10/02/2013, à 15:34)

Hors ligne

#1973 Le 10/02/2013, à 18:08

jpdipsy

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

@Didier

 if search(": ", inf) is not None:
                    i=i+1
                    print(i)           <------------------------------------------------------------------
                    if i <= 6:
                        inf=inf.replace(":", " jour:")
                    else:

"I'm an alien I'm a legal alien
I'm an debug code in recmeteo"    lol

Hors ligne

#1974 Le 10/02/2013, à 18:11

Didier-T

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

oups, j'étais persuadé d'avoir viré ce print

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

from urllib.request import Request, urlopen
from os import path, system
from time import time, sleep
from re import search, compile, findall
from sys import argv
from gc import collect
from bs4 import BeautifulSoup

Version=1.03

homedir = path.expanduser('~')

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

for a in argv:
    if search("adressWeb=", a) is not None:
        adressWeb=compile("adressWeb=(.*)").search(a).group(1)
    if search("repsauv=", a) is not None:
        repsauv=compile("repsauv=(.*)").search(a).group(1)
    if search("huitHeures=", a) is not None:
        huitHeures=compile("huitHeures=(.*)").search(a).group(1)
    if search("nbJour=", a) is not None:
        nbJour=compile("nbJour=(.*)").search(a).group(1)
    if search("interval=", a) is not None:
        interval=compile("interval=(.*)").search(a).group(1)
    if search("notify=", a) is not None:
        notifi=compile("notify=(.*)").search(a).group(1)
    
nbJour=int(nbJour)
interval=int(interval)
repsauv=repsauv.replace("~", homedir)
notifi=str.lower(notifi)
huitHeures=str.lower(huitHeures)

#### fin initialisation des variables

#### Fonction de traitement des fichiers
def traitement(adress, fichier):
    url=Request(adress)
    currentCond=urlopen(url)
    soup = BeautifulSoup(currentCond)
    currentCond.close()
#    fiche = open(fichier, "w")
    #pour debug
#    fiche.write(soup.prettify())
    #si autres que huit heures
    table=soup.find_all('table')
    information=""
    if search("huitHeures", fichier) is None:
        # recherche vent
        current_balise=soup.find(id="details")
        divs=current_balise.select("[class~=wind-box-lg]")
        if len(divs) == 0:
            divs=current_balise.select("[class~=wind-box-sm]")
        i=0
        for div in divs:
            i=i+1
            ventd=compile("var d = '(.*)';").search(str(div)).group(1).replace("W", "O")
            ventf=compile("var s = '(.*)';").search(str(div)).group(1)
            information=information+"direction"+str(i)+": "+ventd+"\n"
            information=information+"vitesse"+str(i)+": "+ventf+"\n"
        #info dans l'image
        inf=current_balise.select("[class~=info]")
        icone=current_balise.select("[class~=icon]")
        i=0
        #recherche icone
        for ic in icone:
            i=i+1
            information=information+"icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '').replace('"></div>', '')+"\n"
        i=0
        #récupération date + historique
        if search("Jour", fichier) is not None or 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=compile("^.* - (.*)/(.*)/(.*)").search(d.get_text())
            information=information+"jour: "+jour.group(1)+"\n"
            information=information+"mois: "+jour.group(2)+"\n"
            information=information+"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")
            information=information+"maxjour: "+hivalue[2]+"\n"
            information=information+"maxnormal: "+hivalue[3]+"\n"
            information=information+"maxrecord: "+hivalue[4]+"\n"
            information=information+"max1ans: "+hivalue[5]+"\n"
            lo=histo.select("[class~=last]")
            for v in lo:
                lovalue=v.get_text().split("\n")
            information=information+"minjour: "+lovalue[2]+"\n"
            information=information+"minnormal: "+lovalue[3]+"\n"
            information=information+"minrecord: "+lovalue[4]+"\n"
            information=information+"min1ans: "+lovalue[5]+"\n"
            #info dans l'image
            if search("Jour", fichier) is not None:
                infs=inf[0].get_text().split("\n")
                information=information+"Tempjour: "+findall('-?\d+', infs[0])[0]+"\n"
                information=information+"RealFeeljour: "+findall('-?\d+', infs[1])[0]+"\n"
                information=information+"Précipitationsjour: "+findall('-?\d+', infs[2])[0]+"\n"
                infs=inf[1].get_text().split("\n")
                information=information+"Tempnuit: "+findall('-?\d+', infs[0])[0]+"\n"
                information=information+"RealFeelnuit: "+findall('-?\d+', infs[1])[0]+"\n"
                information=information+"Précipitationsnuit: "+findall('-?\d+', infs[2])[0]+"\n"
                lever_coucher=soup.select("[class~=time-period]")
                i=0
                for p in lever_coucher:
                    spans=p.find_all('span')
                    i=i+1
                    x=0
                    for span in spans:
                        span=span.get_text()
                        if len(findall('\d+', span)) > 0:
                            x=x+1
                            if i == 1:
                                span_nom="Soleil "
                            else:
                                span_nom="Lune "
                            if x == 1:
                                information=information+span_nom+"lever: "+span+"\n"
                            elif x == 2:
                                information=information+span_nom+"durée: "+span+"\n"
                            else :
                                information=information+span_nom+"coucher: "+span+"\n"


            p=current_balise.find_all('p')
            i=0
            x=0
            for pv in p:
                i=i+1
                if i==5 or i==10:
                    x=x+1
                    information=information+"cond"+str(x)+": "+pv.get_text()+"\n"


        #localisation si condition courante
        if search("CC", fichier) is not None:
            ville=soup.select("[class~=current-city]")[0].get_text().split(",")[0]
            longi=compile("lon: '(.*)',").search(str(soup)).group(1)
            lat=compile("lat: '(.*)',").search(str(soup)).group(1)
            information=information+"ville: "+ville+"\n"
            information=information+"lat: "+lat+"\n"
            information=information+"long: "+longi+"\n"
            #info dans l'image
            inf=inf[0].get_text()
            cond=inf[:inf.find(findall('-?\d+', inf)[0])]
            inf=inf.replace(cond, "")
            infs=inf.split(" ")
            information=information+"cond:"+cond+"\n"
            information=information+"Temp: "+infs[0]+"\n"
            information=information+"RealFeel: "+infs[2]+"\n"

        if search("Matin", fichier) is not None or search("AM", fichier) is not None or search("Soiree", fichier) is not None or search("Nuit", fichier) is not None:
            infs=inf[0].get_text().split("\n")
            information=information+"cond:"+infs[0]+"\n"
            information=information+"max: "+infs[1]+"\n"
            information=information+"min: "+infs[2].replace("Mn ", "")+"\n"
            information=information+"RealFeelmax: "+findall('-?\d+', infs[5])[0]+"\n"
            information=information+"RealFeelmin: "+findall('-?\d+', infs[5])[1]+"\n"
            
            #info conditions générales
            cc=current_balise.find_all('li')
            for inf in cc:
                inf=inf.get_text()
                inf=inf.replace(compile('^ *').search(inf).group(0), "").replace("\n", "")
                if search(":", inf) is not None:
                    information=information+inf+"\n"
        else:
            i=0
            cc=current_balise.find_all('li')
            for inf in cc:
                inf=inf.get_text()
                inf=inf.replace("                                ", "").replace("\n", "").replace(" \r", "")
                if search(": ", inf) is not None:
                    i=i+1
                    if i <= 6:
                        inf=inf.replace(":", " jour:")
                    else:
                        inf=inf.replace(":", " nuit:")
                    information=information+inf+"\n"
    else:
        #recherche icones huit heures
        rows = table[0].findAll('tr')
        information=""
        x=0
        for tr in rows:
            cols = tr.findAll('td')
            texte_tr=tr.text.split("\n")[1].replace("\n", "")
            i=0
            for td in cols:
                i=i+1
                texte_bu = td.text.replace("\n", "")
                if texte_bu != "" :
                    if texte_tr == " " and x < len(cols):
                        information=information+"Heure"+str(i)+": "+texte_bu+"\n"
                        x=x+1
                    elif texte_tr != " ":
                        information=information+texte_tr+str(i)+": "+texte_bu+"\n"
        icone=table[0].find_all('div')
        i=0
        for ic in icone:
            i=i+1
            ico="icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '')
            fin=compile('">(.*)div>').search(ico).group(1)
            information=information+ico.replace('">'+fin+'div>', '')+"\n"
            if i == 8:
                break
    fiche = open(fichier, "w")
#    fiche.write(current_balise.prettify())
    fiche.write(information)
    fiche.close()
    collect()
#### fin Fonction de traitement des fichiers

#### Mise en tache de fond
def demonise(ent, id1, id2, huitHeures, nbJour, interval):
    start=time()-(60*60)
    misajour=1
    while 1 :
        heure=time()
        if huitHeures=="oui":
            traitement(ent+nb1+'/hourly-weather-forecast/'+nb2, repsauv+"/huitHeures")
        if time()-start >= 60*60:
            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()
        if notifi == "oui":
            if time()-start >= 60*60:
                system('notify-send "Météo mise à jour complète"')
            else:
                system('notify-send "Météo mise à jour Conditions courantes"')
        traitement(ent+nb1+'/current-weather/'+nb2, repsauv+"/CC")
        start=heure
        pause=60*interval-int(fin-start)
        print("temps de mise a jour",fin-start)
        collect()
        sleep(pause)


#### Lancement du script et initialisation de la tache de fond
nb1=findall('\d+', adressWeb)[0]
nb2=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
print("Version =", Version)
demonise(ent, nb1, nb2, huitHeures, nbJour, interval)

Hors ligne

#1975 Le 11/02/2013, à 06:55

jpdipsy

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

@Didier

remeteo
Est-ce normal que certaines données sur les prév de tous poil n'ait pas leurs unités de mesure  ex : RealFeelnuit: -3

edit : sur CC et Huitheures pas de souci

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

Hors ligne