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.

#1126 Le 03/03/2015, à 10:56

ragamatrix

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

@daniel38100; j'ai cette version de convert :

 convert --version
Version: ImageMagick 6.8.9-9 Q16 i586 2015-01-05 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2014 ImageMagick Studio LLC
Features: DPC Modules OpenMP
Delegates: bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff wmf x xml zlib

J'ai aussi imagemagick et imagemagick-common installés... J'ai peut-etre un problème de versions et de dépendances... hmm

Hors ligne

#1127 Le 03/03/2015, à 13:34

daniel38100

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

je sais pas trop a mon avis c'est un problème avec convert ou peut être avec ta compo

Hors ligne

#1128 Le 05/03/2015, à 19:09

daniel38100

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

1425578556.png

je bricole un peut ton script Didier-T pour avoir les alertes
mais je connais pas une ville ou ya des vrais alerte

Dernière modification par daniel38100 (Le 05/03/2015, à 19:17)

Hors ligne

#1129 Le 05/03/2015, à 19:24

Phyllinux

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

daniel38100 a écrit :

Didier-T

   Je crois qu'il y a un problème de recmeteo pour les alertes

J'avais fait remonter l'info à Didier, et j'ai aussi été relayé par ragamatrix.
Le site a changé , et donc les alertes ne sont plus récupérées.

Concernant les alertes, il ne s'agit pas des alertes telles que Météo France les diffuse.
Ce sont des informations sur les changements de température importants, les avis de vent fort, de précipitations importantes...

Si Didier se sent de reprendre son script, et surtout si il en a le temps, ce serait sympa, car c'est un petit plus dans l'affichage de la météo wink, et cela 'finit bien' le conky !

Dernière modification par Phyllinux (Le 05/03/2015, à 19:25)


The ship is sinking normally...

Hors ligne

#1130 Le 06/03/2015, à 11:56

ragamatrix

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

@daniel38100:
Bon j'ai cherché et je n"ai pas trouvé... J'ai quand-même l'affichage et les mises à jour se font...
Merci d'avoir penser à mon problème.
1425639148.png

Dernière modification par ragamatrix (Le 06/03/2015, à 11:57)

Hors ligne

#1132 Le 06/03/2015, à 20:42

ragamatrix

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

daniel38100----->Au "taquet"  comme on dit en Haute Loire wink

Hors ligne

#1133 Le 06/03/2015, à 21:42

daniel38100

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

[*][/*]wai ca bricole
le recmeteo pour ceux qui veulent en attendent Didiet-T
recmeteo1.py

#! /usr/bin/python3
# -*- coding: utf-8 -*-
# Par Didier-T Forum Ubuntu.fr
# Ajout notification par jpdipsy Forum Ubuntu.fr
# Ajout notification via DBus par ti_tux Forum Ubuntu.fr
# Ajout création repsauv si inexistant par jpdipsy Forum Ubuntu.fr

from socket import timeout
from urllib.request import Request, urlopen, URLError
from os import path, makedirs, system
from time import time, sleep, strftime, localtime
from re import search, compile, findall
from sys import argv
from gc import collect
from bs4 import BeautifulSoup

Version='1.31c'

homedir = path.expanduser('~')

#### initialisation des variables
adressWeb="http://www.accuweather.com/fr/fr/belfort/133341/daily-weather-forecast/133341"
repsauv= "~/essais"
huitHeures="oui"
nbFoisHuit=1
matin="oui"
apresmidi="oui"
soiree="oui"
nuit="oui"
nbJour=1
interval=30
notifi="oui"
externe = None
Id = "sans"
demon = "oui"
fullnotify = "non"

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)
    if search("notifyPartielle=", a) is not None:
        fullnotify=compile("notifyPartielle=(.*)").search(a).group(1)
    if search("matin=", a) is not None:
        matin=compile("matin=(.*)").search(a).group(1)
    if search("apresmidi=", a) is not None:
        apresmidi=compile("apresmidi=(.*)").search(a).group(1)
    if search("soiree=", a) is not None:
        soiree=compile("soiree=(.*)").search(a).group(1)
    if search("nuit=", a) is not None:
        nuit=compile("nuit=(.*)").search(a).group(1)
    if search("externe=", a) is not None:
        externe=compile("externe=(.*)").search(a).group(1)
    if search("nbFoisHuit=", a) is not None:
        nbFoisHuit=compile("nbFoisHuit=(.*)").search(a).group(1)
    if search("id=", a) is not None:
        Id=compile("id=(.*)").search(a).group(1)
    if search("demon=", a) is not None:
        demon=compile("demon=(.*)").search(a).group(1)

nbJour=int(nbJour)
interval=int(interval)
repsauv=repsauv.replace("~", homedir)
notifi=str.lower(notifi)
fullnotify==str.lower(fullnotify)
huitHeures=str.lower(huitHeures)
nbFoisHuit=int(nbFoisHuit)
print(fullnotify)

#### fin initialisation des variables

#### Fonction de traitement des fichiers
def traitement(adress, fichier, repsauv):
    current_balise=None
    x=1
    user_agent = 'Mozilla/5.0 (X11; Linux x86_64)'
    headers = { 'User-Agent' : user_agent }
    while current_balise is None:
        response = None
        while response is None:
            try:
                html_page = urlopen(adress, timeout=10)
            except (URLError) as error:
                print("HTML ", error)
            except timeout:
                print("erreur timeout acces HTML")
            else:
                try:
                    currentCond=html_page.read()
                except (URLError) as error:
                    print("Lecture page ", error)
                except timeout:
                    print("erreur timeout lecture page")
                else:
                    fiche = open("/tmp/page.html", "wb")
                    fiche.write(currentCond)
                    fiche.close()
                    response = "ok"
            if response is None:
                sleep(10)
        fiche = open("/tmp/page.html", "r")
        lines = fiche.readlines()
        curr = {}
        curr[0] = []
        curr[1] = []
        i=0
        for line in lines:
            curr[i].append(line)
            if search("!-- /.feed-tabs --", line) is not None:
                i=1
        curr[0] = ''.join(curr[0])
        curr[1] = ''.join(curr[1])
        soup1 = BeautifulSoup(curr[0])
        soup = BeautifulSoup(curr[1])
        #si autres que huit heures
        table=soup.find_all('table')
        current_balise=soup.find(id="details")
    information=[]
    information.append("")
    if search("huitHeures", fichier) is None:
        # recherche vent
        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.append("direction"+str(i)+": "+ventd)
            information.append("vitesse"+str(i)+": "+ventf)
        #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.append("icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '').replace('"></div>', ''))
        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.find_all('th')
            jour=compile("(.*)/(.*)/(.*)").search(date[4].get_text())
            information.append("jour: "+jour.group(1))
            information.append("mois: "+jour.group(2))
            information.append("année: "+str(int(jour.group(3))+1))
            #récupération historique
            hi=histo.select("[class~=hi]")
            for v in hi:
                hivalue=v.get_text().split("\n")
            information.append("maxjour: "+hivalue[2])
            information.append("maxnormal: "+hivalue[3])
            information.append("maxrecord: "+hivalue[4])
            information.append("max1ans: "+hivalue[5])
            lo=histo.select("[class~=last]")
            for v in lo:
                lovalue=v.get_text().split("\n")
            information.append("minjour: "+lovalue[2])
            information.append("minnormal: "+lovalue[3])
            information.append("minrecord: "+lovalue[4])
            information.append("min1ans: "+lovalue[5])
            #info dans l'image
            if search("Jour", fichier) is not None:
                infs=inf[0].get_text().split("\n")
                information.append("Tempjour: "+findall('-?\d+', infs[0])[0])
                information.append("RealFeeljour: "+findall('-?\d+', infs[1])[0])
                information.append("Précipitationsjour: "+findall('-?\d+', infs[2])[0])
                infs=inf[1].get_text().split("\n")
                information.append("Tempnuit: "+findall('-?\d+', infs[0])[0])
                information.append("RealFeelnuit: "+findall('-?\d+', infs[1])[0])
                information.append("Précipitationsnuit: "+findall('-?\d+', infs[2])[0])
                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:
                        if i == 1:
                            span_nom="Soleil "
                        else:
                            span_nom="Lune "
                        if search('start', str(span)) is not None:
                            information.append(span_nom+"lever: "+span.get_text())
                        if search('time', str(span)) is not None:
                            information.append(span_nom+"durée: "+span.get_text())
                        if search('finish', str(span)) is not None:
                            information.append(span_nom+"coucher: "+span.get_text())


            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.append("cond"+str(x)+": "+pv.get_text())


        #localisation si condition courante
        if search("CC", fichier) is not None:
#            ville=soup1.select("[class~=current-city]")[0].get_text().split(",")[0]
            ville=compile(" city: '(.*)',").search(str(soup1)).group(1)
            longi=compile("lon: '(.*)',").search(str(soup1)).group(1)
            lat=compile("lat: '(.*)',").search(str(soup1)).group(1)
            information.append("ville: "+ville)
            information.append("lat: "+lat)
            information.append("long: "+longi)
            #info alerte
            alerte_page=urlopen(adressWeb, timeout=10)
            alerte=alerte_page.read()
            alerte=BeautifulSoup(alerte)
            alerte=alerte.select("[class~=fc-status]")
            if str(alerte) != "[]":
                information.append("alerte: "+alerte[0].get_text().replace('\n', '').replace("\r", ""))
            else:
                information.append("alerte: RAS")
            #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.append("cond:"+cond)
            information.append("Temp: "+infs[0])
            information.append("RealFeel: "+infs[2])

        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")
            i=0
            infsc=["","","",""]
            for inf in infs:
                if inf!="":
                    infsc[i]=inf
                    i=i+1
            information.append("cond:"+infsc[0])
            information.append("max: "+infsc[1])
            information.append("min: "+infsc[2].replace("Mn ", ""))
            information.append("RealFeelmax: "+findall('-?\d+', infsc[3])[0])
            information.append("RealFeelmin: "+findall('-?\d+', infsc[3])[1])
            
            #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.append(inf)
        elif search("Jour", fichier) is not None:
            i=0
            cc=current_balise.find_all('li')
            for inf in cc:
                inf=inf.get_text()
                inf=inf.lstrip().replace("\n", "").replace(" \r", "")
                if search(": ", inf) is not None:
                    i=i+1
                    if i <= 7:
                        inf=inf.replace(":", " jour:")
                    else:
                        inf=inf.replace(":", " nuit:")
                    information.append(inf)
        else:
            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.append(inf)
            information.append(str(int(time())))
    else:
        #recherche icones huit heures
        rows = table[0].findAll('tr')
        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", "").replace(chr(160), "")
                if texte_bu != "" :
                    if texte_tr == chr(160) and x < len(cols):
                        information.append("Heure"+str(i)+": "+texte_bu)
                        x=x+1
                    elif texte_tr != chr(160):
                        information.append(texte_tr+str(i)+": "+texte_bu)
        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.append(ico.replace('">'+fin+'div>', ''))
            if i == 8:
                break
    fiche = open(fichier, "w")
#    fiche.write(current_balise.prettify())
    information = '\n'.join(information)
    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, nbFoisHuit, Id, demon):
    dem=time()-(60*60)
    misajour=1
    while 1 :
        heure=time()
        if huitHeures=="oui":
            x=0
            while x<nbFoisHuit:
                h=(x*8)+int(strftime('%H', localtime()))
                x=x+1
                traitement(ent+nb1+'/hourly-weather-forecast/'+nb2+'?hour='+str(h), repsauv+"/huitHeures"+str(x), repsauv)
                print("huitHeures "+str(x)+" Ok")
        if heure-dem >= 60*60:
            x=0
            while x<nbJour:
                x=x+1
                traitement(ent+nb1+'/daily-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Jour"+str(x), repsauv)
                print("Jour "+str(x)+" Ok")
                if matin=="oui":
                    traitement(ent+nb1+'/morning-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Matin"+str(x), repsauv)
                    print("Matin "+str(x)+" Ok")
                if apresmidi=="oui":
                    traitement(ent+nb1+'/afternoon-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/AM"+str(x), repsauv)
                    print("AM "+str(x)+" Ok")
                if soiree=="oui":
                    traitement(ent+nb1+'/evening-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Soiree"+str(x), repsauv)
                    print("Soiree "+str(x)+" Ok")
                if nuit=="oui":
                    traitement(ent+nb1+'/overnight-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Nuit"+str(x), repsauv)
                    print("Nuit "+str(x)+" Ok")
            dem=heure
        traitement(ent+nb1+'/current-weather/'+nb2, repsauv+"/CC", repsauv)
        print("CC Ok")
        if externe is not None:
                 system(externe)
        fin=time()
        duree=fin-heure
        if notifi == "oui":
            notify2.init('Recmeteo.py')
            if heure-dem == 0:
                mess=notify2.Notification('Recmeteo.py  v'+Version, 'Météo : mise à jour complète terminée\n en '+str(round(duree,2))+' secondes', 'dialog-information')
                mess.show()
            else:
                if fullnotify == "oui" :
                    mess=notify2.Notification('Recmeteo.py  v'+Version, 'Météo : mise à jour partielle terminée\n en '+str(round(duree,2))+' secondes', 'dialog-information')
                    mess.show()
        start=heure
        pause=60*interval-int(duree)
        if pause < 0:
            pause=interval
        print("mise a jour en : "+str(duree))
        if demon == "non":
            print("Mode démon non utilisé\nfin de recmeteo.py")
            exit()
        collect()
        sleep(pause)
        if Id != "sans":
            if not path.exists("/proc/"+Id):
                exit()


### Initialiation de DBus pour les notifications
if notifi == "oui":
    import notify2
### Vérification répertoire
if not path.exists(repsauv):
    makedirs(repsauv)
#### 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, nbFoisHuit, Id, demon)

1425731404.png

Dernière modification par daniel38100 (Le 07/03/2015, à 13:32)

Hors ligne

#1134 Le 10/03/2015, à 23:39

loutch

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

Hello

Sur une Mageia je viens de faire le conky meteo de cette page :
http://doc.ubuntu-fr.org/conky_scripts_temps_et_meteo

Après modifications tout fonctionne sauf les icônes meteo qui ne s'affichent pas ,il y a juste deux D à la place .

J'ai pourtant bien mis les fonts dans /usr/share/fonts/truetype (dossier créé par moi vu qu'il ni a pas de "truetype" dans mageia )

voici ce que donne la konsole:

[romuald@localhost ~]$ conky -c ~/.conky/meteo
Conky: forked to background, pid is 28562
[romuald@localhost ~]$ 
Conky: desktop window (220026b) is subwindow of root window (32c)
Conky: window type - normal
Conky: drawing to created window (0x4000003)
Conky: drawing to double buffer

le conkyrc:

background yes
use_xft yes
xftfont URW Chancery L:style=Bold:size=10
xftalpha 1
update_interval 1.0
total_run_times 0
own_window yes
own_window_transparent yes
#own_window_color 000000
own_window_argb_visual yes
#own_window_argb_value 0
own_window_type normal
own_window_hints undecorated,below,skip_taskbar,skip_pager
double_buffer yes
minimum_size 600 
maximum_width 600
text_buffer_size 2048
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no
default_color white
default_outline_color white
alignment top_left
gap_x 0
gap_y 100
no_buffers yes
uppercase no
cpu_avg_samples 2
override_utf8_locale yes
# Fonctionne uniquement avec les polices Fixes
#use_spacer yes

 uppercase no 
 
 
 TEXT
 
${font URW Chancery L:style=Medium Italic:pixelsize=15}Météo  ${color2}${hr}${font}

${color}${execi 120 ~/.conky/meteo.sh FRXX2585}Météo à  ${execi 120 ~/.conky/meteo2.sh "Ville"}
${color}Aujourd'hui : ${execi 120 ~/.conky/meteo2.sh "Température aujourd'hui"}  
${font URW Chancery L:style=Bold:size=30}${voffset -30}${offset 230}${execi 120 ~/.conky/meteo2.sh "Conditions aujourd'hui"}${font}${voffset -16}
Vent : ${execi 120 ~/.conky/meteo2.sh "Vent aujourd'hui"}
Lever du soleil : ${execi 120 ~/.conky/meteo2.sh "Lever du soleil"}
Coucher du soleil : ${execi 120 ~/.conky/meteo2.sh "Coucher du soleil"}
Demain : ${execi 120 ~/.conky/meteo2.sh "Température demain"}
${font URW Chancery L:style=Bold:size=30}${voffset -30}${offset 230}${execi 120 ~/.conky/meteo2.sh "Conditions demain"}${font}

Merci d'avance et @+

Dernière modification par loutch (Le 10/03/2015, à 23:48)

Hors ligne

#1135 Le 11/03/2015, à 06:56

Didier-T

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

Bonjour loutch,
je suppose que tu as installé ta police de caractère comme te l'on indiqué les membres du forum Mageia.

Mais ça ne risque pas de fonctionner si tu ne l’utilise pas. wink roll

background yes
use_xft yes
xftfont URW Chancery L:style=Bold:size=10
xftalpha 1
update_interval 1.0
total_run_times 0
own_window yes
own_window_transparent yes
#own_window_color 000000
own_window_argb_visual yes
#own_window_argb_value 0
own_window_type normal
own_window_hints undecorated,below,skip_taskbar,skip_pager
double_buffer yes
minimum_size 600 
maximum_width 600
text_buffer_size 2048
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no
default_color white
default_outline_color white
alignment top_left
gap_x 0
gap_y 100
no_buffers yes
uppercase no
cpu_avg_samples 2
override_utf8_locale yes
# Fonctionne uniquement avec les polices Fixes
#use_spacer yes

 uppercase no 
 
 
 TEXT
 
${font URW Chancery L:style=Medium Italic:pixelsize=15}Météo  ${color2}${hr}${font}

${color}${execi 120 ~/.conky/meteo.sh FRXX2585}Météo à  ${execi 120 ~/.conky/meteo2.sh "Ville"}
${color}Aujourd'hui : ${execi 120 ~/.conky/meteo2.sh "Température aujourd'hui"}  
${font weather:size=40}${voffset -30}${offset 230}${execi 120 ~/.conky/meteo2.sh "Conditions aujourd'hui"}${font}${voffset -16}
Vent : ${execi 120 ~/.conky/meteo2.sh "Vent aujourd'hui"}
Lever du soleil : ${execi 120 ~/.conky/meteo2.sh "Lever du soleil"}
Coucher du soleil : ${execi 120 ~/.conky/meteo2.sh "Coucher du soleil"}
Demain : ${execi 120 ~/.conky/meteo2.sh "Température demain"}
${font weather:size=40}${voffset -30}${offset 230}${execi 120 ~/.conky/meteo2.sh "Conditions demain"}${font}

A+,
Didier.

Hors ligne

#1136 Le 11/03/2015, à 09:42

loutch

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

Hello

Didier effectivement c'est installé comme on m'a dit sur le forum Mageia mais si je ne l'a demande pas ,elle ne peut pas fonctionner .

1426063940.png

Changement effectué ,ça roule et cela prouve que je vais trop vite et que je suis toujours un "padawan conkystador"



Encore merci et

@+

Dernière modification par loutch (Le 11/03/2015, à 09:53)

Hors ligne

#1137 Le 12/03/2015, à 02:02

daniel38100

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

@ Didier-T
bonjour au sujet de ton script on peut l'utiliser en mode demon ou pas mais comment peut on le lancer en mise a jour partielle
si je fait mon demon je pourrai changer de compo sans redémarrer 

merci

EDIT: j'ai rajouter une condition ça roule

le recmeteo1.py

#! /usr/bin/python3
# -*- coding: utf-8 -*-
# Par Didier-T Forum Ubuntu.fr
# Ajout notification par jpdipsy Forum Ubuntu.fr
# Ajout notification via DBus par ti_tux Forum Ubuntu.fr
# Ajout création repsauv si inexistant par jpdipsy Forum Ubuntu.fr

from socket import timeout
from urllib.request import Request, urlopen, URLError
from os import path, makedirs, system
from time import time, sleep, strftime, localtime
from re import search, compile, findall
from sys import argv
from gc import collect
from bs4 import BeautifulSoup

Version='1.31c'

homedir = path.expanduser('~')

#### initialisation des variables
adressWeb="http://www.accuweather.com/fr/fr/belfort/133341/daily-weather-forecast/133341"
repsauv= "~/essais"
huitHeures="oui"
nbFoisHuit=1
matin="oui"
apresmidi="oui"
soiree="oui"
nuit="oui"
nbJour=1
interval=30
notifi="oui"
externe = None
Id = "sans"
demon = "oui"
fullnotify = "non"
MAJP = "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)
    if search("notifyPartielle=", a) is not None:
        fullnotify=compile("notifyPartielle=(.*)").search(a).group(1)
    if search("matin=", a) is not None:
        matin=compile("matin=(.*)").search(a).group(1)
    if search("apresmidi=", a) is not None:
        apresmidi=compile("apresmidi=(.*)").search(a).group(1)
    if search("soiree=", a) is not None:
        soiree=compile("soiree=(.*)").search(a).group(1)
    if search("nuit=", a) is not None:
        nuit=compile("nuit=(.*)").search(a).group(1)
    if search("externe=", a) is not None:
        externe=compile("externe=(.*)").search(a).group(1)
    if search("nbFoisHuit=", a) is not None:
        nbFoisHuit=compile("nbFoisHuit=(.*)").search(a).group(1)
    if search("id=", a) is not None:
        Id=compile("id=(.*)").search(a).group(1)
    if search("demon=", a) is not None:
        demon=compile("demon=(.*)").search(a).group(1)
    if search("MAJP=", a) is not None:
        MAJP=compile("MAJP=(.*)").search(a).group(1)

nbJour=int(nbJour)
interval=int(interval)
repsauv=repsauv.replace("~", homedir)
notifi=str.lower(notifi)
fullnotify==str.lower(fullnotify)
huitHeures=str.lower(huitHeures)
nbFoisHuit=int(nbFoisHuit)
MAJP=str(MAJP)

#### fin initialisation des variables

#### Fonction de traitement des fichiers
def traitement(adress, fichier, repsauv):
    current_balise=None
    x=1
    user_agent = 'Mozilla/5.0 (X11; Linux x86_64)'
    headers = { 'User-Agent' : user_agent }
    while current_balise is None:
        response = None
        while response is None:
            try:
                html_page = urlopen(adress, timeout=10)
            except (URLError) as error:
                print("HTML ", error)
            except timeout:
                print("erreur timeout acces HTML")
            else:
                try:
                    currentCond=html_page.read()
                except (URLError) as error:
                    print("Lecture page ", error)
                except timeout:
                    print("erreur timeout lecture page")
                else:
                    fiche = open("/tmp/page.html", "wb")
                    fiche.write(currentCond)
                    fiche.close()
                    response = "ok"
            if response is None:
                sleep(2)
        fiche = open("/tmp/page.html", "r")
        lines = fiche.readlines()
        curr = {}
        curr[0] = []
        curr[1] = []
        i=0
        for line in lines:
            curr[i].append(line)
            if search("!-- /.feed-tabs --", line) is not None:
                i=1
        curr[0] = ''.join(curr[0])
        curr[1] = ''.join(curr[1])
        soup1 = BeautifulSoup(curr[0])
        soup = BeautifulSoup(curr[1])
        #si autres que huit heures
        table=soup.find_all('table')
        current_balise=soup.find(id="details")
    information=[]
    information.append("")
    if search("huitHeures", fichier) is None:
        # recherche vent
        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.append("direction"+str(i)+": "+ventd)
            information.append("vitesse"+str(i)+": "+ventf)
        #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.append("icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '').replace('"></div>', ''))
        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.find_all('th')
            jour=compile("(.*)/(.*)/(.*)").search(date[4].get_text())
            information.append("jour: "+jour.group(1))
            information.append("mois: "+jour.group(2))
            information.append("année: "+str(int(jour.group(3))+1))
            #récupération historique
            hi=histo.select("[class~=hi]")
            for v in hi:
                hivalue=v.get_text().split("\n")
            information.append("maxjour: "+hivalue[2])
            information.append("maxnormal: "+hivalue[3])
            information.append("maxrecord: "+hivalue[4])
            information.append("max1ans: "+hivalue[5])
            lo=histo.select("[class~=last]")
            for v in lo:
                lovalue=v.get_text().split("\n")
            information.append("minjour: "+lovalue[2])
            information.append("minnormal: "+lovalue[3])
            information.append("minrecord: "+lovalue[4])
            information.append("min1ans: "+lovalue[5])
            #info dans l'image
            if search("Jour", fichier) is not None:
                infs=inf[0].get_text().split("\n")
                information.append("Tempjour: "+findall('-?\d+', infs[0])[0])
                information.append("RealFeeljour: "+findall('-?\d+', infs[1])[0])
                information.append("Précipitationsjour: "+findall('-?\d+', infs[2])[0])
                infs=inf[1].get_text().split("\n")
                information.append("Tempnuit: "+findall('-?\d+', infs[0])[0])
                information.append("RealFeelnuit: "+findall('-?\d+', infs[1])[0])
                information.append("Précipitationsnuit: "+findall('-?\d+', infs[2])[0])
                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:
                        if i == 1:
                            span_nom="Soleil "
                        else:
                            span_nom="Lune "
                        if search('start', str(span)) is not None:
                            information.append(span_nom+"lever: "+span.get_text())
                        if search('time', str(span)) is not None:
                            information.append(span_nom+"durée: "+span.get_text())
                        if search('finish', str(span)) is not None:
                            information.append(span_nom+"coucher: "+span.get_text())


            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.append("cond"+str(x)+": "+pv.get_text())


        #localisation si condition courante
        if search("CC", fichier) is not None:
#            ville=soup1.select("[class~=current-city]")[0].get_text().split(",")[0]
            ville=compile(" city: '(.*)',").search(str(soup1)).group(1)
            longi=compile("lon: '(.*)',").search(str(soup1)).group(1)
            lat=compile("lat: '(.*)',").search(str(soup1)).group(1)
            information.append("ville: "+ville)
            information.append("lat: "+lat)
            information.append("long: "+longi)
            #info alerte
            response = None
            while response is None:
                try:
                    alerte_page=urlopen(adressWeb, timeout=10)
                except (URLError) as error:
                    print("HTML ", error)
                except timeout:
                    print("erreur timeout acces HTML")
                else:
                    try:
                        alerte=alerte_page.read()
                    except (URLError) as error:
                        print("Lecture page ", error)
                    except timeout:
                        print("erreur timeout lecture page")
                    else:
                        alerte=BeautifulSoup(alerte)
                        alerte=alerte.select("[class~=fc-status]")
                        if str(alerte) != "[]":
                            information.append("alerte: "+alerte[0].get_text().replace('\n', '').replace("\r", ""))
                        else:
                            information.append("alerte: RAS")
                        response = "ok"
                if response is None:
                    sleep(2)
            #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.append("cond:"+cond)
            information.append("Temp: "+infs[0])
            information.append("RealFeel: "+infs[2])

        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")
            i=0
            infsc=["","","",""]
            for inf in infs:
                if inf!="":
                    infsc[i]=inf
                    i=i+1
            information.append("cond:"+infsc[0])
            information.append("max: "+infsc[1])
            information.append("min: "+infsc[2].replace("Mn ", ""))
            information.append("RealFeelmax: "+findall('-?\d+', infsc[3])[0])
            information.append("RealFeelmin: "+findall('-?\d+', infsc[3])[1])
            
            #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.append(inf)
        elif search("Jour", fichier) is not None:
            i=0
            cc=current_balise.find_all('li')
            for inf in cc:
                inf=inf.get_text()
                inf=inf.lstrip().replace("\n", "").replace(" \r", "")
                if search(": ", inf) is not None:
                    i=i+1
                    if i <= 7:
                        inf=inf.replace(":", " jour:")
                    else:
                        inf=inf.replace(":", " nuit:")
                    information.append(inf)
        else:
            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.append(inf)
            information.append(str(int(time())))
    else:
        #recherche icones huit heures
        rows = table[0].findAll('tr')
        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", "").replace(chr(160), "")
                if texte_bu != "" :
                    if texte_tr == chr(160) and x < len(cols):
                        information.append("Heure"+str(i)+": "+texte_bu)
                        x=x+1
                    elif texte_tr != chr(160):
                        information.append(texte_tr+str(i)+": "+texte_bu)
        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.append(ico.replace('">'+fin+'div>', ''))
            if i == 8:
                break
    fiche = open(fichier, "w")
#    fiche.write(current_balise.prettify())
    information = '\n'.join(information)
    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, nbFoisHuit, Id, demon, MAJP):
    dem=time()-(60*60)
    misajour=1
    while 1 :
        heure=time()
        if huitHeures=="oui":
            x=0
            while x<nbFoisHuit:
                h=(x*8)+int(strftime('%H', localtime()))
                x=x+1
                traitement(ent+nb1+'/hourly-weather-forecast/'+nb2+'?hour='+str(h), repsauv+"/huitHeures"+str(x), repsauv)
                print("huitHeures "+str(x)+" Ok")
        if heure-dem >= 60*60 and MAJP=="oui":
            x=0
            while x<nbJour:
                x=x+1
                traitement(ent+nb1+'/daily-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Jour"+str(x), repsauv)
                print("Jour "+str(x)+" Ok")
                if matin=="oui":
                    traitement(ent+nb1+'/morning-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Matin"+str(x), repsauv)
                    print("Matin "+str(x)+" Ok")
                if apresmidi=="oui":
                    traitement(ent+nb1+'/afternoon-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/AM"+str(x), repsauv)
                    print("AM "+str(x)+" Ok")
                if soiree=="oui":
                    traitement(ent+nb1+'/evening-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Soiree"+str(x), repsauv)
                    print("Soiree "+str(x)+" Ok")
                if nuit=="oui":
                    traitement(ent+nb1+'/overnight-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Nuit"+str(x), repsauv)
                    print("Nuit "+str(x)+" Ok")
            dem=heure
        traitement(ent+nb1+'/current-weather/'+nb2, repsauv+"/CC", repsauv)
        print("CC Ok")
        if externe is not None:
                 system(externe)
        fin=time()
        duree=fin-heure
        if notifi == "oui":
            notify2.init('Recmeteo.py')
            if heure-dem == 0:
                mess=notify2.Notification('Recmeteo.py  v'+Version, 'Météo : mise à jour complète terminée\n en '+str(round(duree,2))+' secondes', 'dialog-information')
                mess.show()
            else:
                if fullnotify == "oui" :
                    mess=notify2.Notification('Recmeteo.py  v'+Version, 'Météo : mise à jour partielle terminée\n en '+str(round(duree,2))+' secondes', 'dialog-information')
                    mess.show()
        start=heure
        pause=60*interval-int(duree)
        if pause < 0:
            pause=interval
        print("mise a jour en : "+str(duree))
        if demon == "non":
            print("Mode démon non utilisé\nfin de recmeteo.py")
            exit()
        collect()
        sleep(pause)
        if Id != "sans":
            if not path.exists("/proc/"+Id):
                exit()


### Initialiation de DBus pour les notifications
if notifi == "oui":
    import notify2
### Vérification répertoire
if not path.exists(repsauv):
    makedirs(repsauv)
#### 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, nbFoisHuit, Id, demon, MAJP)

Dernière modification par daniel38100 (Le 12/03/2015, à 15:33)

Hors ligne

#1138 Le 13/03/2015, à 15:29

daniel38100

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

petit délire perso coloration du retour terminal

1426256908.png

Hors ligne

#1139 Le 13/03/2015, à 18:10

Didier-T

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

Bonjour daniel38100,
c'est pas mal du tout comme rendu,et du coup c'est super lisible

Hors ligne

#1140 Le 13/03/2015, à 18:20

daniel38100

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

le recmeteo1.sh

#! /usr/bin/python3
# -*- coding: utf-8 -*-
# Par Didier-T Forum Ubuntu.fr
# Ajout notification par jpdipsy Forum Ubuntu.fr
# Ajout notification via DBus par ti_tux Forum Ubuntu.fr
# Ajout création repsauv si inexistant par jpdipsy Forum Ubuntu.fr

from socket import timeout
from urllib.request import Request, urlopen, URLError
from os import path, makedirs, system
from time import time, sleep, strftime, localtime
from re import search, compile, findall
from sys import argv
from gc import collect
from bs4 import BeautifulSoup

Version='1.31d'

homedir = path.expanduser('~')

#### initialisation des variables
adressWeb="http://www.accuweather.com/fr/fr/belfort/133341/daily-weather-forecast/133341"
repsauv= "~/essais"
huitHeures="oui"
nbFoisHuit=1
matin="oui"
apresmidi="oui"
soiree="oui"
nuit="oui"
nbJour=1
interval=30
notifi="oui"
externe = None
Id = "sans"
demon = "non"
fullnotify = "non"
MAJP = "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)
    if search("notifyPartielle=", a) is not None:
        fullnotify=compile("notifyPartielle=(.*)").search(a).group(1)
    if search("matin=", a) is not None:
        matin=compile("matin=(.*)").search(a).group(1)
    if search("apresmidi=", a) is not None:
        apresmidi=compile("apresmidi=(.*)").search(a).group(1)
    if search("soiree=", a) is not None:
        soiree=compile("soiree=(.*)").search(a).group(1)
    if search("nuit=", a) is not None:
        nuit=compile("nuit=(.*)").search(a).group(1)
    if search("externe=", a) is not None:
        externe=compile("externe=(.*)").search(a).group(1)
    if search("nbFoisHuit=", a) is not None:
        nbFoisHuit=compile("nbFoisHuit=(.*)").search(a).group(1)
    if search("id=", a) is not None:
        Id=compile("id=(.*)").search(a).group(1)
    if search("demon=", a) is not None:
        demon=compile("demon=(.*)").search(a).group(1)
    if search("MAJP=", a) is not None:
        MAJP=compile("MAJP=(.*)").search(a).group(1)

nbJour=int(nbJour)
interval=int(interval)
repsauv=repsauv.replace("~", homedir)
notifi=str.lower(notifi)
fullnotify==str.lower(fullnotify)
huitHeures=str.lower(huitHeures)
nbFoisHuit=int(nbFoisHuit)
MAJP=str(MAJP)

#### fin initialisation des variables

#### Fonction de traitement des fichiers
def traitement(adress, fichier, repsauv):
    current_balise=None
    x=1
    user_agent = 'Mozilla/5.0 (X11; Linux x86_64)'
    headers = { 'User-Agent' : user_agent }
    while current_balise is None:
        response = None
        while response is None:
            try:
                html_page = urlopen(adress, timeout=10)
            except (URLError) as error:
                print("[\033[31mFAIL\033[0m] HTML ", error)
            except timeout:
                print("[\033[31mFAIL\033[0m] erreur timeout acces HTML")
            else:
                try:
                    currentCond=html_page.read()
                except (URLError) as error:
                    print("[\033[31mFAIL\033[0m] Lecture page ", error)
                except timeout:
                    print("[\033[31mFAIL\033[0m] erreur timeout lecture page")
                else:
                    fiche = open("/tmp/page.html", "wb")
                    fiche.write(currentCond)
                    fiche.close()
                    response = "ok"
            if response is None:
                sleep(10)
        fiche = open("/tmp/page.html", "r")
        lines = fiche.readlines()
        curr = {}
        curr[0] = []
        curr[1] = []
        i=0
        for line in lines:
            curr[i].append(line)
            if search("!-- /.feed-tabs --", line) is not None:
                i=1
        curr[0] = ''.join(curr[0])
        curr[1] = ''.join(curr[1])
        soup1 = BeautifulSoup(curr[0])
        soup = BeautifulSoup(curr[1])
        #si autres que huit heures
        table=soup.find_all('table')
        current_balise=soup.find(id="details")
    information=[]
    information.append("")
    if search("huitHeures", fichier) is None:
        # recherche vent
        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.append("direction"+str(i)+": "+ventd)
            information.append("vitesse"+str(i)+": "+ventf)
        #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.append("icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '').replace('"></div>', ''))
        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.find_all('th')
            jour=compile("(.*)/(.*)/(.*)").search(date[4].get_text())
            information.append("jour: "+jour.group(1))
            information.append("mois: "+jour.group(2))
            information.append("année: "+str(int(jour.group(3))+1))
            #récupération historique
            hi=histo.select("[class~=hi]")
            for v in hi:
                hivalue=v.get_text().split("\n")
            information.append("maxjour: "+hivalue[2])
            information.append("maxnormal: "+hivalue[3])
            information.append("maxrecord: "+hivalue[4])
            information.append("max1ans: "+hivalue[5])
            lo=histo.select("[class~=last]")
            for v in lo:
                lovalue=v.get_text().split("\n")
            information.append("minjour: "+lovalue[2])
            information.append("minnormal: "+lovalue[3])
            information.append("minrecord: "+lovalue[4])
            information.append("min1ans: "+lovalue[5])
            #info dans l'image
            if search("Jour", fichier) is not None:
                infs=inf[0].get_text().split("\n")
                information.append("Tempjour: "+findall('-?\d+', infs[0])[0])
                information.append("RealFeeljour: "+findall('-?\d+', infs[1])[0])
                information.append("Précipitationsjour: "+findall('-?\d+', infs[2])[0])
                infs=inf[1].get_text().split("\n")
                information.append("Tempnuit: "+findall('-?\d+', infs[0])[0])
                information.append("RealFeelnuit: "+findall('-?\d+', infs[1])[0])
                information.append("Précipitationsnuit: "+findall('-?\d+', infs[2])[0])
                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:
                        if i == 1:
                            span_nom="Soleil "
                        else:
                            span_nom="Lune "
                        if search('start', str(span)) is not None:
                            information.append(span_nom+"lever: "+span.get_text())
                        if search('time', str(span)) is not None:
                            information.append(span_nom+"durée: "+span.get_text())
                        if search('finish', str(span)) is not None:
                            information.append(span_nom+"coucher: "+span.get_text())


            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.append("cond"+str(x)+": "+pv.get_text())


        #localisation si condition courante
        if search("CC", fichier) is not None:
#            ville=soup1.select("[class~=current-city]")[0].get_text().split(",")[0]
            ville=compile(" city: '(.*)',").search(str(soup1)).group(1)
            longi=compile("lon: '(.*)',").search(str(soup1)).group(1)
            lat=compile("lat: '(.*)',").search(str(soup1)).group(1)
            information.append("ville: "+ville)
            information.append("lat: "+lat)
            information.append("long: "+longi)
            #info alerte
            response = None
            while response is None:
                try:
                    alerte_page=urlopen(adressWeb, timeout=10)
                except (URLError) as error:
                    print("[\033[31mFAIL\033[0m] HTML ", error)
                except timeout:
                    print("[\033[31mFAIL\033[0m] erreur timeout acces HTML")
                else:
                    try:
                        alerte=alerte_page.read()
                    except (URLError) as error:
                        print("[\033[31mFAIL\033[0m] Lecture page ", error)
                    except timeout:
                        print("[\033[31mFAIL\033[0m] erreur timeout lecture page")
                    else:
                        alerte=BeautifulSoup(alerte)
                        alerte=alerte.select("[class~=lfs]")
                        if str(alerte) != "[]":
                            information.append("alerte: "+alerte[0].get_text().replace('\n', '').replace("\r", ""))
                        else:
                            information.append("alerte: RAS")
                        response = "ok"
                if response is None:
                    sleep(10)
            #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.append("cond:"+cond)
            information.append("Temp: "+infs[0])
            information.append("RealFeel: "+infs[2])

        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")
            i=0
            infsc=["","","",""]
            for inf in infs:
                if inf!="":
                    infsc[i]=inf
                    i=i+1
            information.append("cond:"+infsc[0])
            information.append("max: "+infsc[1])
            information.append("min: "+infsc[2].replace("Mn ", ""))
            information.append("RealFeelmax: "+findall('-?\d+', infsc[3])[0])
            information.append("RealFeelmin: "+findall('-?\d+', infsc[3])[1])
            
            #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.append(inf)
        elif search("Jour", fichier) is not None:
            i=0
            cc=current_balise.find_all('li')
            for inf in cc:
                inf=inf.get_text()
                inf=inf.lstrip().replace("\n", "").replace(" \r", "")
                if search(": ", inf) is not None:
                    i=i+1
                    if i <= 7:
                        inf=inf.replace(":", " jour:")
                    else:
                        inf=inf.replace(":", " nuit:")
                    information.append(inf)
        else:
            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.append(inf)
            information.append(str(int(time())))
    else:
        #recherche icones huit heures
        rows = table[0].findAll('tr')
        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", "").replace(chr(160), "")
                if texte_bu != "" :
                    if texte_tr == chr(160) and x < len(cols):
                        information.append("Heure"+str(i)+": "+texte_bu)
                        x=x+1
                    elif texte_tr != chr(160):
                        information.append(texte_tr+str(i)+": "+texte_bu)
        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.append(ico.replace('">'+fin+'div>', ''))
            if i == 8:
                break
    fiche = open(fichier, "w")
#    fiche.write(current_balise.prettify())
    information = '\n'.join(information)
    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, nbFoisHuit, Id, demon):
    dem=time()-(60*60)
    misajour=1
    while 1 :
        heure=time()
        if huitHeures=="oui":
            x=0
            while x<nbFoisHuit:
                h=(x*8)+int(strftime('%H', localtime()))
                x=x+1
                traitement(ent+nb1+'/hourly-weather-forecast/'+nb2+'?hour='+str(h), repsauv+"/huitHeures"+str(x), repsauv)
                print("[\033[32m OK \033[0m] huitHeures "+str(x))
        if heure-dem >= 60*60 and MAJP=="oui":
            x=0
            while x<nbJour:
                x=x+1
                traitement(ent+nb1+'/daily-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Jour"+str(x), repsauv)
                print("[\033[32m OK \033[0m] Jour "+str(x))
                if matin=="oui":
                    traitement(ent+nb1+'/morning-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Matin"+str(x), repsauv)
                    print("[\033[32m OK \033[0m] Matin "+str(x))
                if apresmidi=="oui":
                    traitement(ent+nb1+'/afternoon-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/AM"+str(x), repsauv)
                    print("[\033[32m OK \033[0m] AM "+str(x))
                if soiree=="oui":
                    traitement(ent+nb1+'/evening-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Soiree"+str(x), repsauv)
                    print("[\033[32m OK \033[0m] Soiree "+str(x))
                if nuit=="oui":
                    traitement(ent+nb1+'/overnight-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Nuit"+str(x), repsauv)
                    print("[\033[32m OK \033[0m] Nuit "+str(x))
            dem=heure
        traitement(ent+nb1+'/current-weather/'+nb2, repsauv+"/CC", repsauv)
        print("[\033[32m OK \033[0m] CC")
        if externe is not None:
                 system(externe)
        fin=time()
        duree=fin-heure
        if notifi == "oui":
            notify2.init('Recmeteo.py')
            if heure-dem == 0:
                mess=notify2.Notification('Recmeteo.py  v'+Version, 'Météo : mise à jour complète terminée\n en '+str(round(duree,2))+' secondes', 'dialog-information')
                mess.show()
            else:
                if fullnotify == "oui" :
                    mess=notify2.Notification('Recmeteo.py  v'+Version, 'Météo : mise à jour partielle terminée\n en '+str(round(duree,2))+' secondes', 'dialog-information')
                    mess.show()
        start=heure
        pause=60*interval-int(duree)
        if pause < 0:
            pause=interval
        print("[\033[32m OK \033[0m] mise a jour en : "+str(duree))
        if demon == "non":
            print("[\033[33mINFO\033[0m] Mode démon non utilisé fin de recmeteo.py")
            exit()
        collect()
        sleep(pause)
        if Id != "sans":
            if not path.exists("/proc/"+Id):
                exit()


### Initialiation de DBus pour les notifications
if notifi == "oui":
    import notify2
### Vérification répertoire
if not path.exists(repsauv):
    makedirs(repsauv)
#### 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("[\033[33mINFO\033[0m] Recmeteo Version =", Version+" "+str(time()))
demonise(ent, nb1, nb2, huitHeures, nbJour, interval, nbFoisHuit, Id, demon)

prochainement le nouveau pack (j-2 au moins)

Dernière modification par daniel38100 (Le 15/03/2015, à 20:44)

Hors ligne

#1141 Le 15/03/2015, à 00:43

daniel38100

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

Nouveau pack accuweather v3.05 dispo ici
gros changement grosse correction

démarrage interface graphique

accuweather_gtk.py

demmarage du demon ou pour démarrage automatique

demon_accuweather.py

Dernière modification par daniel38100 (Le 15/03/2015, à 00:48)

Hors ligne

#1142 Le 15/03/2015, à 05:53

Didier-T

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

Bonjour daniel38100,
le premier message est modifié.

A+,
Didier..

Hors ligne

#1143 Le 15/03/2015, à 20:19

Phyllinux

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

@ daniel38100 :
Je vois que tu as réussi à extraire les alertes.
As tu modifié le script meteo.lua  ou bien c'est uniquement le recmeteo.py ?
Je cherche à réactiver les alertes, mais pour le moment, je n'ai pas encore utilisé tes nouveaux scripts, et c'est pour savoir quel est le bon, car je n'utilise pas la fonction météo en fond d'écran dynamique...

Merci


The ship is sinking normally...

Hors ligne

#1144 Le 15/03/2015, à 20:39

daniel38100

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

@ Phyllinux
j'ai juste modifier le recmeteo.py tu as juste ca a changer

voici le recmeteo que j'utilise

#! /usr/bin/python3
# -*- coding: utf-8 -*-
# Par Didier-T Forum Ubuntu.fr
# Ajout notification par jpdipsy Forum Ubuntu.fr
# Ajout notification via DBus par ti_tux Forum Ubuntu.fr
# Ajout création repsauv si inexistant par jpdipsy Forum Ubuntu.fr

from socket import timeout
from urllib.request import Request, urlopen, URLError
from os import path, makedirs, system
from time import time, sleep, strftime, localtime
from re import search, compile, findall
from sys import argv
from gc import collect
from bs4 import BeautifulSoup

Version='1.31d'

homedir = path.expanduser('~')

#### initialisation des variables
adressWeb="http://www.accuweather.com/fr/fr/belfort/133341/daily-weather-forecast/133341"
repsauv= "~/essais"
huitHeures="oui"
nbFoisHuit=1
matin="oui"
apresmidi="oui"
soiree="oui"
nuit="oui"
nbJour=1
interval=30
notifi="oui"
externe = None
Id = "sans"
demon = "non"
fullnotify = "non"
MAJP = "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)
    if search("notifyPartielle=", a) is not None:
        fullnotify=compile("notifyPartielle=(.*)").search(a).group(1)
    if search("matin=", a) is not None:
        matin=compile("matin=(.*)").search(a).group(1)
    if search("apresmidi=", a) is not None:
        apresmidi=compile("apresmidi=(.*)").search(a).group(1)
    if search("soiree=", a) is not None:
        soiree=compile("soiree=(.*)").search(a).group(1)
    if search("nuit=", a) is not None:
        nuit=compile("nuit=(.*)").search(a).group(1)
    if search("externe=", a) is not None:
        externe=compile("externe=(.*)").search(a).group(1)
    if search("nbFoisHuit=", a) is not None:
        nbFoisHuit=compile("nbFoisHuit=(.*)").search(a).group(1)
    if search("id=", a) is not None:
        Id=compile("id=(.*)").search(a).group(1)
    if search("demon=", a) is not None:
        demon=compile("demon=(.*)").search(a).group(1)
    if search("MAJP=", a) is not None:
        MAJP=compile("MAJP=(.*)").search(a).group(1)

nbJour=int(nbJour)
interval=int(interval)
repsauv=repsauv.replace("~", homedir)
notifi=str.lower(notifi)
fullnotify==str.lower(fullnotify)
huitHeures=str.lower(huitHeures)
nbFoisHuit=int(nbFoisHuit)
MAJP=str(MAJP)

#### fin initialisation des variables

#### Fonction de traitement des fichiers
def traitement(adress, fichier, repsauv):
    current_balise=None
    x=1
    user_agent = 'Mozilla/5.0 (X11; Linux x86_64)'
    headers = { 'User-Agent' : user_agent }
    while current_balise is None:
        response = None
        while response is None:
            try:
                html_page = urlopen(adress, timeout=10)
            except (URLError) as error:
                print("[\033[31mFAIL\033[0m] HTML ", error)
            except timeout:
                print("[\033[31mFAIL\033[0m] erreur timeout acces HTML")
            else:
                try:
                    currentCond=html_page.read()
                except (URLError) as error:
                    print("[\033[31mFAIL\033[0m] Lecture page ", error)
                except timeout:
                    print("[\033[31mFAIL\033[0m] erreur timeout lecture page")
                else:
                    fiche = open("/tmp/page.html", "wb")
                    fiche.write(currentCond)
                    fiche.close()
                    response = "ok"
            if response is None:
                sleep(10)
        fiche = open("/tmp/page.html", "r")
        lines = fiche.readlines()
        curr = {}
        curr[0] = []
        curr[1] = []
        i=0
        for line in lines:
            curr[i].append(line)
            if search("!-- /.feed-tabs --", line) is not None:
                i=1
        curr[0] = ''.join(curr[0])
        curr[1] = ''.join(curr[1])
        soup1 = BeautifulSoup(curr[0])
        soup = BeautifulSoup(curr[1])
        #si autres que huit heures
        table=soup.find_all('table')
        current_balise=soup.find(id="details")
    information=[]
    information.append("")
    if search("huitHeures", fichier) is None:
        # recherche vent
        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.append("direction"+str(i)+": "+ventd)
            information.append("vitesse"+str(i)+": "+ventf)
        #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.append("icone"+str(i)+": "+str(ic).replace('<div class="icon i-', '').replace('"></div>', ''))
        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.find_all('th')
            jour=compile("(.*)/(.*)/(.*)").search(date[4].get_text())
            information.append("jour: "+jour.group(1))
            information.append("mois: "+jour.group(2))
            information.append("année: "+str(int(jour.group(3))+1))
            #récupération historique
            hi=histo.select("[class~=hi]")
            for v in hi:
                hivalue=v.get_text().split("\n")
            information.append("maxjour: "+hivalue[2])
            information.append("maxnormal: "+hivalue[3])
            information.append("maxrecord: "+hivalue[4])
            information.append("max1ans: "+hivalue[5])
            lo=histo.select("[class~=last]")
            for v in lo:
                lovalue=v.get_text().split("\n")
            information.append("minjour: "+lovalue[2])
            information.append("minnormal: "+lovalue[3])
            information.append("minrecord: "+lovalue[4])
            information.append("min1ans: "+lovalue[5])
            #info dans l'image
            if search("Jour", fichier) is not None:
                infs=inf[0].get_text().split("\n")
                information.append("Tempjour: "+findall('-?\d+', infs[0])[0])
                information.append("RealFeeljour: "+findall('-?\d+', infs[1])[0])
                information.append("Précipitationsjour: "+findall('-?\d+', infs[2])[0])
                infs=inf[1].get_text().split("\n")
                information.append("Tempnuit: "+findall('-?\d+', infs[0])[0])
                information.append("RealFeelnuit: "+findall('-?\d+', infs[1])[0])
                information.append("Précipitationsnuit: "+findall('-?\d+', infs[2])[0])
                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:
                        if i == 1:
                            span_nom="Soleil "
                        else:
                            span_nom="Lune "
                        if search('start', str(span)) is not None:
                            information.append(span_nom+"lever: "+span.get_text())
                        if search('time', str(span)) is not None:
                            information.append(span_nom+"durée: "+span.get_text())
                        if search('finish', str(span)) is not None:
                            information.append(span_nom+"coucher: "+span.get_text())


            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.append("cond"+str(x)+": "+pv.get_text())


        #localisation si condition courante
        if search("CC", fichier) is not None:
#            ville=soup1.select("[class~=current-city]")[0].get_text().split(",")[0]
            ville=compile(" city: '(.*)',").search(str(soup1)).group(1)
            longi=compile("lon: '(.*)',").search(str(soup1)).group(1)
            lat=compile("lat: '(.*)',").search(str(soup1)).group(1)
            information.append("ville: "+ville)
            information.append("lat: "+lat)
            information.append("long: "+longi)
            #info alerte
            response = None
            while response is None:
                try:
                    alerte_page=urlopen(adressWeb, timeout=10)
                except (URLError) as error:
                    print("[\033[31mFAIL\033[0m] HTML ", error)
                except timeout:
                    print("[\033[31mFAIL\033[0m] erreur timeout acces HTML")
                else:
                    try:
                        alerte=alerte_page.read()
                    except (URLError) as error:
                        print("[\033[31mFAIL\033[0m] Lecture page ", error)
                    except timeout:
                        print("[\033[31mFAIL\033[0m] erreur timeout lecture page")
                    else:
                        alerte=BeautifulSoup(alerte)
                        alerte=alerte.select("[class~=lfs]")
                        if str(alerte) != "[]":
                            information.append("alerte: "+alerte[0].get_text().replace('\n', '').replace("\r", ""))
                        else:
                            information.append("alerte: RAS")
                        response = "ok"
                if response is None:
                    sleep(10)
            #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.append("cond:"+cond)
            information.append("Temp: "+infs[0])
            information.append("RealFeel: "+infs[2])

        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")
            i=0
            infsc=["","","",""]
            for inf in infs:
                if inf!="":
                    infsc[i]=inf
                    i=i+1
            information.append("cond:"+infsc[0])
            information.append("max: "+infsc[1])
            information.append("min: "+infsc[2].replace("Mn ", ""))
            information.append("RealFeelmax: "+findall('-?\d+', infsc[3])[0])
            information.append("RealFeelmin: "+findall('-?\d+', infsc[3])[1])
            
            #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.append(inf)
        elif search("Jour", fichier) is not None:
            i=0
            cc=current_balise.find_all('li')
            for inf in cc:
                inf=inf.get_text()
                inf=inf.lstrip().replace("\n", "").replace(" \r", "")
                if search(": ", inf) is not None:
                    i=i+1
                    if i <= 7:
                        inf=inf.replace(":", " jour:")
                    else:
                        inf=inf.replace(":", " nuit:")
                    information.append(inf)
        else:
            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.append(inf)
            information.append(str(int(time())))
    else:
        #recherche icones huit heures
        rows = table[0].findAll('tr')
        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", "").replace(chr(160), "")
                if texte_bu != "" :
                    if texte_tr == chr(160) and x < len(cols):
                        information.append("Heure"+str(i)+": "+texte_bu)
                        x=x+1
                    elif texte_tr != chr(160):
                        information.append(texte_tr+str(i)+": "+texte_bu)
        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.append(ico.replace('">'+fin+'div>', ''))
            if i == 8:
                break
    fiche = open(fichier, "w")
#    fiche.write(current_balise.prettify())
    information = '\n'.join(information)
    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, nbFoisHuit, Id, demon):
    dem=time()-(60*60)
    misajour=1
    while 1 :
        heure=time()
        if huitHeures=="oui":
            x=0
            while x<nbFoisHuit:
                h=(x*8)+int(strftime('%H', localtime()))
                x=x+1
                traitement(ent+nb1+'/hourly-weather-forecast/'+nb2+'?hour='+str(h), repsauv+"/huitHeures"+str(x), repsauv)
                print("[\033[32m OK \033[0m] huitHeures "+str(x))
        if heure-dem >= 60*60 and MAJP=="oui":
            x=0
            while x<nbJour:
                x=x+1
                traitement(ent+nb1+'/daily-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Jour"+str(x), repsauv)
                print("[\033[32m OK \033[0m] Jour "+str(x))
                if matin=="oui":
                    traitement(ent+nb1+'/morning-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Matin"+str(x), repsauv)
                    print("[\033[32m OK \033[0m] Matin "+str(x))
                if apresmidi=="oui":
                    traitement(ent+nb1+'/afternoon-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/AM"+str(x), repsauv)
                    print("[\033[32m OK \033[0m] AM "+str(x))
                if soiree=="oui":
                    traitement(ent+nb1+'/evening-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Soiree"+str(x), repsauv)
                    print("[\033[32m OK \033[0m] Soiree "+str(x))
                if nuit=="oui":
                    traitement(ent+nb1+'/overnight-weather-forecast/'+nb2+"?day="+str(x), repsauv+"/Nuit"+str(x), repsauv)
                    print("[\033[32m OK \033[0m] Nuit "+str(x))
            dem=heure
        traitement(ent+nb1+'/current-weather/'+nb2, repsauv+"/CC", repsauv)
        print("[\033[32m OK \033[0m] CC")
        if externe is not None:
                 system(externe)
        fin=time()
        duree=fin-heure
        if notifi == "oui":
            notify2.init('Recmeteo.py')
            if heure-dem == 0:
                mess=notify2.Notification('Recmeteo.py  v'+Version, 'Météo : mise à jour complète terminée\n en '+str(round(duree,2))+' secondes', 'dialog-information')
                mess.show()
            else:
                if fullnotify == "oui" :
                    mess=notify2.Notification('Recmeteo.py  v'+Version, 'Météo : mise à jour partielle terminée\n en '+str(round(duree,2))+' secondes', 'dialog-information')
                    mess.show()
        start=heure
        pause=60*interval-int(duree)
        if pause < 0:
            pause=interval
        print("[\033[32m OK \033[0m] mise a jour en : "+str(duree))
        if demon == "non":
            print("[\033[33mINFO\033[0m] Mode démon non utilisé fin de recmeteo.py")
            exit()
        collect()
        sleep(pause)
        if Id != "sans":
            if not path.exists("/proc/"+Id):
                exit()


### Initialiation de DBus pour les notifications
if notifi == "oui":
    import notify2
### Vérification répertoire
if not path.exists(repsauv):
    makedirs(repsauv)
#### 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("[\033[33mINFO\033[0m] Recmeteo Version =", Version+" "+str(time()))
demonise(ent, nb1, nb2, huitHeures, nbJour, interval, nbFoisHuit, Id, demon)

Dernière modification par daniel38100 (Le 15/03/2015, à 20:50)

Hors ligne

#1145 Le 16/03/2015, à 11:58

daniel38100

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

OUPS !
j'avais oublier j'avais changer recmeteo.py pour récupéré l'heure et les minute et modifier le fichier météo pour qu'il les prenne a partir de CC parce que quand je rafraîchi le fond d’écran il prenais la date actuel donc faux pour le rafraîchissement recmeteo1.py

donc passage au pack  accuweater-3.deb v3.06 MAJ: 16/03/2015

désole Didier-T tu va devoir rechanger le post1 Merci
@+

il faudrait que je test sur d'autre plate forme les configuration d'affichage on du changer a voir...

Dernière modification par daniel38100 (Le 16/03/2015, à 12:51)

Hors ligne

#1146 Le 16/03/2015, à 13:05

Phyllinux

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

daniel38100 a écrit :

@ Phyllinux
j'ai juste modifier le recmeteo.py tu as juste ca a changer

Merci daniel38100

Je viens de modifier mon fichier recmeteo.py avec celui que tu as mis en ligne.
Je verrai si cela est bon. Pour le moment, il n'y a pas 'd'alerte' déclarée sur le site d'Accuweather pour ma localité.
Je vais regarder si cela évolue dans l'affichage de mon conky.


The ship is sinking normally...

Hors ligne

#1147 Le 16/03/2015, à 13:13

daniel38100

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

Phyllinux a écrit :
daniel38100 a écrit :

@ Phyllinux
j'ai juste modifier le recmeteo.py tu as juste ca a changer

Merci daniel38100

Je viens de modifier mon fichier recmeteo.py avec celui que tu as mis en ligne.
Je verrai si cela est bon. Pour le moment, il n'y a pas 'd'alerte' déclarée sur le site d'Accuweather pour ma localité.
Je vais regarder si cela évolue dans l'affichage de mon conky.

wai j'ai du chercher beaucoup de ville avent de trouver des alertes normalement ya pas de probleme ca marche ...   
Merci a toi
j'ai du charger une autre page donc faire une autre boucle ça met un peu plus de temps pour les CC

tien pour les alertes au pif fort-de-france
1426512731.png

(toujours avec la compo de jpdipsy)

Dernière modification par daniel38100 (Le 16/03/2015, à 14:37)

Hors ligne

#1148 Le 18/03/2015, à 20:48

Phyllinux

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

@ daniel38100

Effectivement, tout est bon pour les alertes avec le recmeteo.py modifié.
Sur mon smartphone, j'ai l'application accuweather, avec affichage des 'alertes' lorsqu'il y en a.
Aujourd'hui, j'ai reçu une notification d'alerte. J'ai lancé mon conky, et j'ai pu voir que celle ci était bien prise en compte, avec le même message que celui reçu sur mon smartphone.
Merci encore pour le boulot qui soulage un peu didier-T ! wink


The ship is sinking normally...

Hors ligne

#1149 Le 19/03/2015, à 10:37

Phyllinux

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

@ tous les conkystadors utilisant le script lua développé par Didier-T et les autres :

Le site clendrier-lunaire.net vient d'être modifié, et du coup, les informations récupérées ne sont plus valides.
A titre d'exemple, voici ce que donne le fichier lunaison du répertoire 'reptravail' :

ico=/tmp/marseille-phyllinux/Lune.png
Widget avancé
Widget
avancé
= "capub1944130260912009"
d_slot = "7506305870"
=
"7506305870"
 = 200
90

2

Autrement dit : A part l'icône de la lune qui est correctement récupérée, toutes les autres données sont invalides ! (éphémérides, phase, distance, visibilité, age...)
Si je savais comment modifier le fichier meteo.lua, je m'y lancerais bien, mais je ne sais pas faire hmm
Si l'un d'entre vous veut bien modifier les lignes du script concerné, cela serait sympa.
Merci


The ship is sinking normally...

Hors ligne

#1150 Le 19/03/2015, à 19:33

daniel38100

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

effectivement pour la lune moi j'ai meme plus d'icone

le site il a changer les icônes c plus les même y sont tout pourrie

Dernière modification par daniel38100 (Le 19/03/2015, à 20:55)

Hors ligne