Contenu | Rechercher | Menus

Annonce

Ubuntu-fr.org recrute toujours de nouveaux modérateurs, avec de l'expérience.

Ubuntu 16.04 LTS
Commandez vos DVD et clés USB Ubuntu-fr !

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.

nombre réponses : 25

#0 Re : -1 »  [5] Conky : Postez vos conkyrc ou certaines parties intéressantes » Le 23/03/2015, à 16:42

daniel38100
Réponses : 1 427

j'ai fait un petit script pour récup les infos de facebook et les afficher dans mon conky

facebook.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Par Daniel38100 Forum Ubuntu.fr


import mechanize
from bs4 import BeautifulSoup
from sys import argv
from re import search, compile, findall


email=""
password=""
ami="non"
mess="non"
notifi="non"

for a in argv:
    if search("email=", a) is not None:
        email=compile("email=(.*)").search(a).group(1)
    if search("password=", a) is not None:
        password=compile("password=(.*)").search(a).group(1)
    if search("ami=", a) is not None:
        ami=compile("ami=(.*)").search(a).group(1)
    if search("mess=", a) is not None:
        mess=compile("mess=(.*)").search(a).group(1)
    if search("notifi=", a) is not None:
        notifi=compile("notifi=(.*)").search(a).group(1)


def facebook_connect():
    cookieJar = mechanize.CookieJar()
    opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookieJar))
    opener.addheaders = [("User-agent","Mozilla/5.0 (compatible)")]
    mechanize.install_opener(opener)
    fp = mechanize.urlopen("https://www.facebook.com/")
    forms = mechanize.ParseResponse(fp)
    fp.close()
    form=forms[0]
    form["email"]=email
    form["pass"]=password
    fp = mechanize.urlopen(form.click())
    url=fp.geturl()
    texte=fp.read()
    fp.close()
    url=None
    soup=BeautifulSoup(texte)
    if ami == "oui":
        demami=soup.find(id="requestsCountValue")
        demami=demami.get_text()
        print "Demande ami : "+demami
    if mess == "oui":
        message=soup.find(id="mercurymessagesCountValue")
        message=message.get_text()
        if int(message) > 1 :
            print "Messages : "+message
        else:
            print "Message : "+message
    if notifi == "oui":
        notification=soup.find(id="notificationsCountValue")
        notification=notification.get_text()
        if int(notification) > 1 :
            print "Notifications : "+notification
        else:
            print "Notification : "+notification
        
facebook_connect()

lancement

${execpi 60 python ~/facebook.py email="VOTRE_EMAIL" password="VOTRE_PASSWORD" ami="oui" mess="oui" notifi="oui" }

ou en temps réel c'est mieux (quoi que facebook n'aime pas ca)

${exec python ~/facebook.py email="VOTRE_EMAIL" password="VOTRE_PASSWORD" ami="oui" mess="oui" notifi="oui" }

petit screenshot grossier
1427123367.png


si problème !!!

sudo apt-get install python-bs4 python-mechanize 

EDIT: script corrigé

#1 Re : -1 »  [5] Conky : Postez vos conkyrc ou certaines parties intéressantes » Le 23/03/2015, à 17:11

daniel38100
Réponses : 1 427
chepioq a écrit :

Sans vouloir te faire une leçon d'orthographe, "Demande" ne prend qu'un m.

Merci chepioq autan pour moi petite erreur d'inattention j'ai corrigé c mieux comme ça

#2 Re : -1 »  [5] Conky : Postez vos conkyrc ou certaines parties intéressantes » Le 28/03/2015, à 14:18

daniel38100
Réponses : 1 427
Yberamos a écrit :

Bonjour, je viens ici car après une recherce sur le google je ne trouve (que j'arrive faire fonctionner). Alors, mon probleme est simple (enfin je pense), je cherche un moyen d'afficher la timeline de Twitter (ou le flux RSS, je sais pas ce qu'il faut dire). L'outils qui me semble le plus prometteur c'est TTYtter, mais celui-ci permet aussi de poster des tweet. Quand je le lance, il ma'ffaiche plein d'info en plus de la timeline, et puis il attend un tweet que je voudrais poster. Donc je ne peut pas simplement utiliser ${exec ttytter}... J'ai trouver aussi plusieur script python pour faire cette tache, mais tous avait des probleme dans le code, ce qui fait que je n'arrive même pas a les lancer. Enfin, voila, je ne sais pas si je me suis bien expliquer ou si vous savez m'aider

J'ai attaquer un script pour ça il y a pas longtemps tu veut quoi comme infos exactement ?

en ce moment j'ai pas trop le temps mais ça va arriver

#3 Re : -1 »  [5] Conky : Postez vos conkyrc ou certaines parties intéressantes » Le 31/03/2015, à 21:03

daniel38100
Réponses : 1 427
Yberamos a écrit :

"Simplement" les tweets des personnes que je suis. En gros, ce qu'on voit quand on va sur www.twitter.com en ettant connecter.
Je ne suis absolument pas pressé, en tous cas merci d'avance.^^

si tu veut j'ai ce petit script

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Par Daniel38100 Forum Ubuntu.fr


import mechanize
from bs4 import BeautifulSoup
from sys import argv
from re import search, compile, findall


email=""
password=""

for a in argv:
    if search("email=", a) is not None:
        email=compile("email=(.*)").search(a).group(1)
    if search("password=", a) is not None:
        password=compile("password=(.*)").search(a).group(1)

def tweeter_connect():
    cookieJar = mechanize.CookieJar()
    opener = mechanize.build_opener(mechanize.HTTPCookieProcessor(cookieJar))
    opener.addheaders = [("User-agent","Mozilla/5.0 (compatible)")]
    mechanize.install_opener(opener)
    fp = mechanize.urlopen("https://twitter.com/?lang=fr")
    forms = mechanize.ParseResponse(fp)
    fp.close()
    form=forms[1]
    form["session[username_or_email]"]=email
    form["session[password]"]=password
    fp = mechanize.urlopen(form.click())
    url=fp.geturl()
    texte=fp.read()
    fp.close()
    url=None
    soup=BeautifulSoup(texte)
    tweet=soup.find_all("p")
    tweet=tweet[0].get_text()
    print(tweet)


tweeter_connect()

lancement:

python tweeter.py email="TON_EMAIL" password="TON_PASSWORD"

#4 Re : -1 »  [5] Conky : Postez vos conkyrc ou certaines parties intéressantes » Le 01/04/2015, à 10:57

daniel38100
Réponses : 1 427
Didier-T a écrit :

Bonjour daniel38100,
je n'utilise que très peut les réseaux sociaux, et n'ai pas de compte Twitter.

Mais après quelques recherche j'ai trouvé ceci Twitter API.

Là je te donne l’accès à la console d'exploration, ça semble très pratique.

A+,
Didier.

Merci a toi je vais travailler la dessus ce sera plus propre je pense je ne connais que très peu tweeter j'ai bien un compte mais inactif

#5 Re : -1 »  [5] Conky : Postez vos conkyrc ou certaines parties intéressantes » Le 02/04/2015, à 23:55

daniel38100
Réponses : 1 427
Yberamos a écrit :

Bonjour daniel38100,
Je fais sans doute quelque chose mal, mais que je lance le script, il me renvoie :

[yberamos@Portable ~]$ python tweeter.py email="##########" password="#########"
Traceback (most recent call last):
  File "tweeter.py", line 6, in <module>
    import mechanize
ImportError: No module named 'mechanize'

Je ne sais pas si cela pose problème, mais il y a une virgule dans mon mot de passe (dans le doute, je précise).

non c'est pas ça le problème il faut que tu installe le module mechanize et surement bs4

sudo apt-get install python-bs4 python-mechanize 

mais je travail sur un script via l'API de tweeter ce sera sûrement plus simple

#6 Re : -1 »  [5] Conky : Postez vos conkyrc ou certaines parties intéressantes » Le 07/04/2015, à 15:09

daniel38100
Réponses : 1 427
Raphanel a écrit :

Bonjour tout le monde!
J'ai une petite question à poser vis à vis des possibilités de Conky. J'ai un serveur nas en réseau et j'aimerai savoir si il existe un moyen d'avoir des conky permettant d'avoir les données comme sur cette image d'un post précédent http://forum.ubuntu-fr.org/viewtopic.ph … #p12890531
mais du serveur nas sans avoir la fenêtre d'administration tout le temps ouverte?
Cordialement
Raphanel

si c'est sûrement possible en utilisant conky avec un script externe après il faudrait les caractéristique de ton serveur

(j'ai pas tout a fait bien saisie la question et je connais pas trop le NAS)

#7 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 20/03/2015, à 18:49

daniel38100
Réponses : 1 311

@ TOUS
accuweather-2.deb n'existe plus car plus tres fonctionnel (me demander je l'ai en sauvegarde)

#8 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 20/03/2015, à 19:48

daniel38100
Réponses : 1 311
Phyllinux a écrit :

Si vous voulez un joli pack d'icônes de la lune, voilà :
Icônes Lune
Perso, je les utilise pour afficher la lune. Elles sont issues du screenlet FuriousMoon, et leur apparence est plus jolie que les images extraites du site calendrier-lunaire, avec un dégradé de visible ou non visible moins tranchée en ligne droite que celles du site, ce qui donne une apparence plus naturelle.
Il y en a 29.

Merci a toi j'étai en pleine recherche mais celui la est tres bien
j'étai meme parti pour en creer!

EDIT : wai c'est bien la j'ai du taf pour adapter ca merci Phillinux

#9 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 21/03/2015, à 13:59

daniel38100
Réponses : 1 311

Bonjour Didier-T
c un bon début a mon goût
j'avais penser vu qu'il y a les latitudes et longitudes dans l'adresse les récupéré dans CC pour avoir la lunaison au plus juste pour chaque localité
je verrais ça si j'ai un peu de temps ...


Didier-T j'ai supprimé le Pack Accuweather_v2.01.deb si tu peut modifier le post 1 et le pack accuweather-3 va passer en version 3.07 (actuellement v3.06)

#10 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 21/03/2015, à 16:15

daniel38100
Réponses : 1 311

les données ont changé ya du taf

#11 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 21/03/2015, à 23:06

daniel38100
Réponses : 1 311

bon on va reprendre a zéro voila le script

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Par Daniel38100 Traduction par Didier-T

import urllib2
import os
import json

repsauv = '/opt/Accuweather/sauvegardes'

def convtime(tida):
    heure=0
    agelune=tida*24*60*60
    agelune=int(agelune)
    jour=0
    while agelune > 86399 :
        agelune=agelune-86400
        jour=jour+1
    heure=0
    while agelune > 3599 :
        agelune=agelune-3600
        heure=heure+1
    minute=0
    while agelune > 60 :
        agelune=agelune-60
        minute=minute+1
    while agelune > 60 :
        agelune=agelune-60
        minute=minute+1
    seconde=agelune
    print jour,heure,minute,secon

def latlon():
    lalo1=open(repsauv+"/CC" , "r")
    lalo="lat: "
    for ll in lalo1:
        if lalo in ll:
            ll=ll.replace(lalo,'').replace('\n','')
            adrr="http://cerridwen.viridian-project.de/api/v1/moon?latitude="+ll+"&longitude="
    lalo1=open(repsauv+"/CC" , "r")
    lalo="long: "
    for ll in lalo1:
        if lalo in ll:
            ll=ll.replace(lalo,'').replace('\n','')
            adrr=adrr+ll
    print adrr  
    return adrr 


def lunais(adress):
    page=urllib2.Request(adress)
    page=urllib2.urlopen(page)
    page=page.read()
    return page

def traitement():
    page=lunais(latlon())
    jstr=json.loads(page)
    jstr=str(jstr).replace('[u','[').split(', u')
    for t in jstr :
        lunaiss=str(t).replace("in", "en").replace("u\'", "\'")\
            .replace("moon", "lune").replace("Moon", "Lune")\
            .replace("full", "pleine").replace("Full", "Pleine")\
            .replace("rises", "montante")\
            .replace("new", "nouvelle").replace("New", "Nouvelle")\
            .replace("crescent", "Croissante").replace("waxeng", "Ascendante")\
            .replace("Pisces", "Poissons").replace("Aries", u"Bélier").replace("Taurus", "Taureau").replace("Gemini", u"Gémeaux")\
            .replace("Leo", "Lion").replace("Virgo", "Vierge").replace("Libra", "Balance").replace("Scorpio", "Scorpion")\
            .replace("Sagittarius", "Sagittaire").replace("Capricorn", "Capricorne").replace("Aquarius", "Verseau")\
            .replace("sets", "se couche").replace("[", "").replace("{", "").replace("}", "").replace("]", "").replace("\'", "")\
            .replace("next", "prochaine").replace("prochaine_nouvelle_lune: ", "prochaine_nouvelle_lune:\n")\
            .replace('prochaine_nouvelle_or_pleine_lune: ','prochaine_nouvelle_or_pleine_lune:\n')\
            .replace('last_set: ','last_set:\n').replace('last_nouvelle_lune: ','last_nouvelle_lune:\n').replace('position: ','position:\n')\
            .replace('position: ','position:\n').replace('position: ','position:\n').replace('prochaine_rise: ','prochaine_rise:\n')\
            .replace('last_rise: ','last_rise:\n')
        print lunaiss

traitement()

et voila ce que ca donne

daniel@daniel-Aspire-E1-731:~$ python lunaison.py 
http://cerridwen.viridian-project.de/api/v1/moon?latitude=45.19&longitude=5.73
diameter: 33.049093081618174
last_rise:
jd: 2457102.7576350933
delta_days: -0.6150717637501657
description: Lune montante
iso_date: 2015-03-21 06:11:00
illumenation: 0.11474153389200346
last_pleine_lune: jd: 2457087.2537436443
delta_days: -16.11896318756044
description: Pleine lune en Vierge
iso_date: 2015-03-05 18:05:23
speed: 14.83446594680283
period_length: 29.389352906495333
prochaine_pleine_lune: jd: 2457117.003860748
delta_days: 13.63115394115448
description: Pleine lune en Balance
iso_date: 2015-04-04 12:05:34
jd: 2457103.372692799
dignity: None
prochaine_nouvelle_lune:
jd: 2457131.289472773
delta_days: 27.916765975765884
description: Nouvelle lune en Bélier
iso_date: 2015-04-18 18:56:50
position:
men: 34.34050196854244
rel_tuple: Bélier, 21, 34, 20
absolute_degrees: 21.572341699475707
sign: Bélier
sec: 20.430118112546438
deg: 21.572341699475707
last_nouvelle_lune:
jd: 2457101.9001198667
delta_days: -1.4725869568064809
description: Nouvelle lune en Poissons
iso_date: 2015-03-20 09:36:10
distance: 0.0024171935040546585
prochaine_set: jd: 2457104.361854213
delta_days: 0.9891473646275699
description: Lune se couche
iso_date: 2015-03-22 20:41:04
speed_ratio: 0.8611949430820253
last_set:
jd: 2457103.310560204
delta_days: -0.06214666087180376
description: Lune se couche
iso_date: 2015-03-21 19:27:12
age: 1.472572932485491
prochaine_rise:
jd: 2457103.783098992
delta_days: 0.41039215167984366
description: Lune montante
iso_date: 2015-03-22 06:47:40
diameter_ratio: 0.781061058670453
phase: trend: Ascendante
shape: Croissante
quarter: None
quarter_english: None
iso_date: 2015-03-21 20:56:41
prochaine_nouvelle_or_pleine_lune:
jd: 2457117.003860748
delta_days: 13.631153932306916
description: Pleine lune en Balance
iso_date: 2015-04-04 12:05:34
daniel@daniel-Aspire-E1-731:~$

j'aimerai voir la traduction avec un anglophone
par exemple "description: Pleine lune en Balance"  c pas propre

#12 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 21/03/2015, à 23:15

daniel38100
Réponses : 1 311

à Didier-T
je suis en train d’étudier ça je connais pas trop cette bibliothèque

#13 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 22/03/2015, à 21:50

daniel38100
Réponses : 1 311

bon ça commence a être pas mal

1427053501.png

merci Phyllinux pour le pack d’icône

Bientôt le nouveau pack météo fond d’écran...

#14 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 22/03/2015, à 22:13

daniel38100
Réponses : 1 311
Phyllinux a écrit :

Bonjour Didier-T,

En fait, non, la visibilité est bien dans les données, sous la forme de
Illumination = 0,XXXX
Dans le cas du fichier posté pour St Maximin
illumination = 0.14710123326 = 14,7%, ce qui correspond bien à la réalité du pourcentage visible de la lune
Ce qui donne cette image :
http://pix.toile-libre.org/upload/thumb/1427036080.png
(A comparer avec celle du site calendrier lunaire par exemple)
Il suffit juste de mettre une fonction qui ressort le chiffre brut en pourcentage arrondi

pour ma part moi j'ai calculer le pourcentage d'illumination par rapport au cycle lunaire pour afficher les icônes
en faite l'illumination comme récupéré ( 0.14710123326) me  sert de coefficient multiplicateur

#15 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 24/03/2015, à 16:56

daniel38100
Réponses : 1 311
Dreadid a écrit :

Bonjour Didier-T,
Mon retour sur le terminal :

didier@didier-G551JM ~ $ conky
Conky: forked to background, pid is 3933
didier@didier-G551JM ~ $ 
Conky: desktop window (1400029) is subwindow of root window (9e)
Conky: window type - normal
Conky: drawing to created window (0x3400002)
Conky: drawing to double buffer
~/.conky/conky-meteo/meteo/meteo.cfg
	version = v1.11
	web = http://www.accuweather.com/fr/gp/basse-terre/183798/weather-forecast/183798
	Pévision Nb jours = 5 
	Pévision Matin = non
	Pévision Après Midi = oui
	Pévision Soirée = non
	Pévision Nuit = oui
	Prévision sur 8 heures = oui
	nbFoisHuit= 1
	Délais = 15
	Chemin de travail = /tmp
	Palier = 20
	Chemin de sauvegarde = /home/didier/.conky/conky-meteo/meteo/reptravail
	Chemin script = /home/didier/.conky/conky-meteo/meteo_lua_2/scripts
	Notification = non
	ID = 3933
Condition courante Ok
Prévision 1 Ok
Apres Midi 1 Ok
Nuit 1 Ok
Prévision 2 Ok
Apres Midi 2 Ok
Nuit 2 Ok
Prévision 3 Ok
Apres Midi 3 Ok
Nuit 3 Ok
Prévision 4 Ok
Apres Midi 4 Ok
Nuit 4 Ok
Prévision 5 Ok
Apres Midi 5 Ok
Nuit 5 Ok
huit heures Ok
Conky: Unable to load image '/tmp/lune.png'
Traceback (most recent call last):
  File "/home/didier/.conky/conky-meteo/meteo_lua_2/scripts/recmeteo.py", line 15, in <module>
    from bs4 import BeautifulSoup
ImportError: No module named 'bs4'
Conky: llua_do_call: function conky_Meteo_enligne execution failed: ...er/.conky/conky-meteo/meteo_lua_2/scripts/meteo2.lua:131: attempt to index global 'Apogee' (a nil value)
Conky: llua_getstring: function conky_Lune_ephemerides1 didn't return a string, result discarded
Conky: llua_getstring: function conky_Lune_ephemerides2 didn't return a string, result discarded

Les 2 dernières lignes se répètent en boucle.

salut Dreadid il doit te manquer la bibliothèque python3-bs4

par contre pour la lune je pense que Didier-T n'as pas encore mis à jour le pack météo lua

#16 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 24/03/2015, à 17:02

daniel38100
Réponses : 1 311

on se répète phillinux big_smile

#17 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 25/03/2015, à 15:02

daniel38100
Réponses : 1 311

@ Didier-T

Tu les récupère ou tes info du coup ?

#18 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 25/03/2015, à 15:47

daniel38100
Réponses : 1 311

ha oui comme avent

moi j'utilise l'API les info sont plus souvent mise a jour

#19 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 26/03/2015, à 15:40

daniel38100
Réponses : 1 311
Didier-T a écrit :

Bonjour à tous,

@Phyllinux, je ne rencontre pas ce soucis, peut être a tu conservé des fichiers en double.

Petite mise à jour du code lua.
J'ai fait une mise en page pour les sorties d'information sur le model de daniel38100.
http://pix.tdct.org/upload/thumb/1427356470.png

A+,
Didier.

Ah j'aime ça comme tu le disait c'est plus lisible

#20 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 11/04/2015, à 10:27

daniel38100
Réponses : 1 311

mise a jour du pack météo fond d'écran   accuweather-3 v3.08
correction info lunaison

#21 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 27/10/2015, à 14:20

daniel38100
Réponses : 1 311

@ loutch

j'ai le même problème sur le météo-fond-d'ecran  il y a eu des changements sur le site accuweather sur les condition courante et les jours mais pas sur les quart de journée , donc le script 'recmeteo.py' de Didier-T est à reprendre

#22 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 30/10/2015, à 10:01

daniel38100
Réponses : 1 311

@ tous

petite correction grossière mais fonctionnel en attendant  (packs non mis a jour)

recmeteo.py passage à v1.31e pour le meteo-lua-2

#! /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
# Correction par daniel38100

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.31e'

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
        moment=adress.split('/')[7]
        divs=current_balise.select("[class~=rt]")
        if len(divs) == 0:
            if moment == "current-weather" :
                divs=current_balise.select("[class~=detail-tab-panel]")
            else : 
                divs=current_balise.select("[class~=wind-box-lg]")
        i=0
        for div in divs:
            i=i+1
            if moment == "daily-weather-forecast" :
                ventd=str(div.get_text().split("\n")[11]).split()[0]
                ventf=str(div.get_text().split("\n")[11]).split()[1]
                information.append("direction"+str(i)+": "+str(ventd))
                information.append("vitesse"+str(i)+": "+str(ventf))
            elif moment == "morning-weather-forecast" or moment == "afternoon-weather-forecast" or moment == "evening-weather-forecast" or moment == "overnight-weather-forecast" :
                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)+": "+str(ventd))
                information.append("vitesse"+str(i)+": "+str(ventf))
            elif moment == "current-weather" :
                ventd=str(str(str(div.select("[class~=more-info]")).split('\n')[2]).split('/')[6]).split('.')[0]
                ventf=str(div.get_text()).split('\n')[29]
                information.append("direction"+str(i)+": "+str(ventd))
                information.append("vitesse"+str(i)+": "+str(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[1])[0])
                information.append("RealFeeljour: "+findall('-?\d+', infs[2])[0])
                information.append("Précipitationsjour: "+findall('-?\d+', infs[3])[0])
                infs=inf[1].get_text().split("\n")
                information.append("Tempnuit: "+findall('-?\d+', infs[1])[0])
                information.append("RealFeelnuit: "+findall('-?\d+', infs[2])[0])
                information.append("Précipitationsnuit: "+findall('-?\d+', infs[3])[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)
demonise(ent, nb1, nb2, huitHeures, nbJour, interval, nbFoisHuit, Id, demon)

recmeteo1.py passage a v1.32 pour le meteo fond d'ecran

#! /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
# Correction par daniel38100


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
from datetime import date, datetime


Version='1.32'

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
        moment=adress.split('/')[7]
        divs=current_balise.select("[class~=rt]")
        if len(divs) == 0:
            if moment == "current-weather" :
                divs=current_balise.select("[class~=detail-tab-panel]")
            else : 
                divs=current_balise.select("[class~=wind-box-lg]")
        i=0
        for div in divs:
            i=i+1
            if moment == "daily-weather-forecast" :
                ventd=str(div.get_text().split("\n")[11]).split()[0]
                ventf=str(div.get_text().split("\n")[11]).split()[1]
                information.append("direction"+str(i)+": "+str(ventd))
                information.append("vitesse"+str(i)+": "+str(ventf))
            elif moment == "morning-weather-forecast" or moment == "afternoon-weather-forecast" or moment == "evening-weather-forecast" or moment == "overnight-weather-forecast" :
                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)+": "+str(ventd))
                information.append("vitesse"+str(i)+": "+str(ventf))
            elif moment == "current-weather" :
                ventd=str(str(str(div.select("[class~=more-info]")).split('\n')[2]).split('/')[6]).split('.')[0]
                ventf=str(div.get_text()).split('\n')[29]
                information.append("direction"+str(i)+": "+str(ventd))
                information.append("vitesse"+str(i)+": "+str(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 et heure
            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[1])[0])
                information.append("RealFeeljour: "+findall('-?\d+', infs[2])[0])
                information.append("Précipitationsjour: "+findall('-?\d+', infs[3])[0])
                infs=inf[1].get_text().split("\n")
                information.append("Tempnuit: "+findall('-?\d+', infs[1])[0])
                information.append("RealFeelnuit: "+findall('-?\d+', infs[2])[0])
                information.append("Précipitationsnuit: "+findall('-?\d+', infs[3])[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:
            date=str(datetime.now()).split(' ')[1].split(':')
            information.append("heure: "+date[0])
            information.append("minute: "+date[1])
            information.append("seconde: "+date[2].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 :
        date=str(datetime.now()).split(' ')[1].split(':')
        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")
        try :
            system("lunaison.py")
            print("[\033[32m OK \033[0m] Lunaison")
        except (URLError) as error:
            print("[\033[31mFAIL\033[0m] Lunaison")
        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('Accuweather', "Mise a jour complete à "+str(date[0])+":"+str(date[1])+":"+str(date[2]).split('.')[0]+" en "+str(round(duree,2)).replace('.','s')+" sec", '/opt/Accuweather/icones/accuweather-logo1.png')
                mess.show()
                print("[\033[32m OK \033[0m] Mise a jour complete à "+str(date[0])+":"+str(date[1])+":"+str(date[2]).split('.')[0]+" en "+str(round(duree,2)).replace('.','s'))
            else:
                if fullnotify == "oui" :
                    mess=notify2.Notification('Accuweather', "Mise a jour partiel à "+str(date[0])+":"+str(date[1])+":"+str(date[2]).split('.')[0]+" en "+str(round(duree,2)).replace('.','s'), '/opt/Accuweather/icones/accuweather-logo1.png')
                    mess.show()
                print("[\033[32m OK \033[0m] Mise a jour partiel à "+str(date[0])+":"+str(date[1])+":"+str(date[2]).split('.')[0]+" en "+str(round(duree,2)).replace('.','s'))
        start=heure
        pause=60*interval-int(duree)
        if pause < 0:
            pause=interval
        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)
demonise(ent, nb1, nb2, huitHeures, nbJour, interval, nbFoisHuit, Id, demon)

#23 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 04/01/2016, à 11:00

daniel38100
Réponses : 1 311

Bonjour Arstrak,

Peut tu nous envoyer ton retour terminal STP
Je pense qu'il doit y avoir un problème dans les chemins étant donnée que tu met pas les fichier dans leur emplacement initial

#24 Re : -1 »  [Conky] Alternative à weather.com (3) » Le 04/01/2016, à 11:53

daniel38100
Réponses : 1 311

@ Arstrak

Didier-T a écrit :

Bonjour a tous,
j'ai reçus un email hier matin de Yvance77, me signalant le soucis que vous rencontriez avec meteo lua.
Les notifications du site n'avaient pas fonctionnées, ou étaient passées en spam ???

le pack est corrigé mais certaines informations sont devenus trop chiante à extraire.
dans condition courante le vent n'est plus renseigné il y a des valeurs bidon a la place 0 km/h et direction Nord.

le soucis que je rencontre est qu'ils ont fait pleins de modification sur le site accuweather et ceci sur plusieurs page, tout est géré sauf sur la page de condition courante la direction du vent n'est simplement plus renseignée hmm, et la vitesse du vent est placé dans un coins étrange, rendant son extraction difficile. N'ayant pas beaucoup de temps libre en ce moment je ne me pencherais pas trop sur ce soucis, si certains ont des idées pour récupérer les informations qu'ils n’hésite pas big_smile

A+,
Didier.

pour l’ensoleillement je pense que c'est pareil