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.

#1151 Le 20/03/2015, à 09:02

Didier-T

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

Bonjour,
je viens de transmettre un mail à lunopia.com, pour voir la possibilité d'obtenir le droit d'utiliser leur API concernant les lunaisons.
L'utilisation de leur API passe par l'obtention d'une clef individuelle.

Il faut savoir que ce sont eux qui fournissent les informations pour le site http://www.calendrier-lunaire.net/, cher qui nous prenions les informations jusqu'à maintenant.

Bien entendu, je vous tiendrais au courant.

A+,
Didier.

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

Hors ligne

#1152 Le 20/03/2015, à 17:22

daniel38100

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

en attendant les nouvelles de Didier-T j'ai modifier le 02-lune.sh pour le meteo-fond-d'ecran
tout n'est pas modifier mais le principal y est j'ai fai ca vite fait

02-lune.sh

#!/bin/bash

# Récupération infos lunaison sur http://www.calendrier-lunaire.net
 
if [ -z "$1" ];then
reptemp="/tmp"
else
reptemp="$1"
fi

if [ -z "$2" ];then
repsauv="/tmp"
else
repsauv="$2"
fi
recep=$(curl --max-time 60 --retry 3 --silent "http://www.calendrier-lunaire.net/" | grep -A57 'bottom\"')
icone=$(echo $(date +%d-%B-%Y))
wget -q http://www.calendrier-lunaire.net/images/lune170px-$icone.png -O $reptemp/Lune.png 
convert $reptemp/Lune.png -transparent '#091a2a' $reptemp/Lune.png

recep=$(echo -e "$recep"|sed 's/<[^>]*>//g'|sed 's/[%,\;,&,-]//g'|sed 's/^[ \t]*//'|sed '/^$/d')

tab[2]=$(echo -e "$recep"|sed -n "1p"|sed 's/.*: //g') 
tab[3]=$(echo -e "$recep"|sed -n "1p"|sed 's/.*: //g'|cut -d " " -f1 ) 
tab[4]=$(echo -e "$recep"|sed -n "1p"|sed 's/.*: //g'|cut -d " " -f2)
tab[5]=$(echo -e "$recep"|sed -n "2p"| sed 's/.*: //g')
tab[6]=$(echo -e "$recep"|sed -n "7p"|sed 's/.*: //g')" "$(echo -e "$recep"|sed -n "6p"|sed 's/.*: //g')
tab[7]=$(echo -e "$recep"|sed -n "7p"|sed 's/.*: //g') 
tab[8]=$(echo -e "$recep"|sed -n "6p"|sed 's/.*: //g')
tab[9]=$(echo -e "$recep"|sed -n "11p"|sed 's/.*: //g') 
tab[10]=$(echo -e "$recep"|sed -n "10p"|egrep -o '[[:digit:]]*'|sed -n "1p") 
tab[11]=$(echo -e "$recep"|sed -n "9p"|egrep -o '[[:digit:]]*'|sed -n "1p")
tab[12]=$(echo -e "$recep"|sed -n "3p"|egrep -o '[[:digit:]]*')
tab[13]=$(echo -e "$recep"|sed -n "4p"|cut -c19- |sed 's/ h/h/g'|sed 's/ m/m/g')
tab[14]=$(echo -e "$recep"|sed -n "9p"|cut -c30-31) 
tab[15]=$(echo -e "$recep"|sed -n "9p"|cut -c33-34)
tab[16]=$(echo -e "$recep"|sed -n "9p"|cut -c57-58)
tab[17]=$(echo -e "$recep"|sed -n "9p"|cut -c60-61)
tab[18]=$(echo -e "$recep"|sed -n "14p")
tab[19]=$(echo -e "$recep"|sed -n "15p")

echo "ico=$reptemp/Lune.png" >$repsauv/lunaison 
for ((a=2; a <= 19 ; a++))
do
echo -e "${tab[$a]}" >>$repsauv/lunaison
done
 
exit

je pense qu'il faudrait un pack d'icones pour les lunes

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

Hors ligne

#1153 Le 20/03/2015, à 17:49

daniel38100

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

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

Hors ligne

#1154 Le 20/03/2015, à 17:52

Phyllinux

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

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é en ligne droite que celles du site, ce qui donne une apparence plus naturelle.
Il y en a 29.

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


The ship is sinking normally...

Hors ligne

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

daniel38100

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

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

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

Hors ligne

#1156 Le 20/03/2015, à 20:42

Didier-T

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

Bonsoir,
j'ai reçus la réponse de lunopia.com, sa risque de poser un petit soucis, il sont ok pour fournir une clef gratuitement, mais il ne faut pas la diffuser a moins de compiler le code, ce qui bien entendu me pose de gros soucis (un code compiler ne peut être modifié par son utilisateur).

Je vais donc chercher une autre solution.

Ce sera certainement ceci cerridwen, ce site nous propose d'installer notre propre serveur éphéméride, ça semble un peut extrême, mais il y a aussi possibilité d'interroger leur API en ligne (seul bémol, c'est en anglais).

Pour vous montrer ce a quoi ça ressemble voici un retour d'information pour Paris.

Pour info le serveur pèse 30 Mo (compressé).

A+,
Didier.

Hors ligne

#1157 Le 21/03/2015, à 08:26

Didier-T

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

Bonjour,
voici le début du script de récupération pour la lune (en python)

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Par Didier-T Pour les utilisateur de Météo Lua

import urllib, urllib2, json

class ephemeride():
    def __init__(self):
        data=self._past()
        tableau=self._format(data)
        self._sortie(tableau)
        
    def _past(self):
        req = urllib2.Request('http://cerridwen.viridian-project.de/api/v1/moon?latitude=48.85&longitude=2.34')
        response = urllib2.urlopen(req)
        return response.read()
        
    def _format(self, data):
        jstr=json.loads(data)
        tableau=[]
        for x in jstr:
            for y in x:
                if isinstance(x[y], dict):
                    for z in x[y]:
                        tableau.append(y+"_"+z+" = "+self._traduction(str(x[y][z])))
                else:
                    tableau.append(y+" = "+self._traduction(str(x[y])))

        return tableau
        
    def _traduction(self, trad):
        try:
            ret=trad.replace("in", "en")\
            .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")
        except:
            ret=trad
        
        return ret
        
    def _sortie(self, tableau):
        print '\n'.join(tableau)


if __name__ == "__main__":
    ephemeride()

Il est fonctionnel, reste a finaliser la traduction en français.

A+,
Didier.

Dernière modification par Didier-T (Le 21/03/2015, à 09:49)

Hors ligne

#1158 Le 21/03/2015, à 10:16

loutch

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

smilies%20(204).gif

Didier ,étant sous mageia je le lance comment ???

smilies%20(1).gif

Hors ligne

#1159 Le 21/03/2015, à 10:21

Didier-T

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

Bonjour loutch,
normalement tu fais

python nom_que_tu_as_donné_au_fichier

Hors ligne

#1160 Le 21/03/2015, à 10:31

loutch

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

Re

Plus précisemment .

Hors ligne

#1161 Le 21/03/2015, à 10:34

Didier-T

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

admet-on que tu nome le fichier phase.py
sa donnerait, dans un terminal ouvert la ou se situe le fichier

python phase.py

Hors ligne

#1162 Le 21/03/2015, à 10:37

loutch

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

re

J'ai ceci :

 File "lune.py", line 4
SyntaxError: Non-ASCII character '\xc3' in file lune.py on line 4, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

Hors ligne

#1163 Le 21/03/2015, à 10:38

Didier-T

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

retire les accents sur météo

Hors ligne

#1164 Le 21/03/2015, à 10:46

loutch

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

Ok je viens de faire et aussi enlevé les accents sur Belier et Gemeaux

[romuald@localhost scripts]$ python lune.py
diameter = 33.1950008925
last_rise_jd = 2457102.76546
last_rise_delta_days = -0.139544351026
last_rise_description = Lune montante
last_rise_iso_date = 2015-03-21 06:22:16
illumination = 0.0785986421146
last_full_moon_jd = 2457087.25374
last_full_moon_delta_days = -15.6512598675
last_full_moon_description = Pleine lune en Vierge
last_full_moon_iso_date = 2015-03-05 18:05:23
speed = 14.9680290387
period_length = 29.389352907
next_full_moon_jd = 2457117.00386
next_full_moon_delta_days = 14.0988572715
next_full_moon_description = Pleine lune en Balance
next_full_moon_iso_date = 2015-04-04 12:05:34
jd = 2457102.90499
dignity = None
next_new_moon_jd = 2457131.28947
next_new_moon_delta_days = 28.3844692954
next_new_moon_description = Nouvelle lune en Belier
next_new_moon_iso_date = 2015-04-18 18:56:50
position_min = 36.1152014307
position_rel_tuple = [u'Belier', 14, 36, 6]
position_absolute_degrees = 14.6019200238
position_sign = Belier
position_sec = 6.91208584482
position_deg = 14.6019200238
last_new_moon_jd = 2457101.90012
last_new_moon_delta_days = -1.00488363719
last_new_moon_description = Nouvelle lune en Poissons
last_new_moon_iso_date = 2015-03-20 09:36:10
distance = 0.00240656488741
next_set_jd = 2457103.32337
next_set_delta_days = 0.418369913474
next_set_description = Lune se couche
next_set_iso_date = 2015-03-21 19:45:39
speed_ratio = 0.898607573857
last_set_jd = 2457102.26862
last_set_delta_days = -0.636383883655
last_set_description = Lune se couche
last_set_iso_date = 2015-03-20 18:26:49
age = 1.00487037376
next_rise_jd = 2457103.78912
next_rise_delta_days = 0.884117278736
next_rise_description = Lune montante
next_rise_iso_date = 2015-03-22 06:56:20
diameter_ratio = 0.811458519274
phase_trend = Ascendante
phase_shape = Croissante
phase_quarter = None
phase_quarter_english = None
iso_date = 2015-03-21 09:43:11
next_new_or_full_moon_jd = 2457117.00386
next_new_or_full_moon_delta_days = 14.0988572631
next_new_or_full_moon_description = Pleine lune en Balance
next_new_or_full_moon_iso_date = 2015-04-04 12:05:34
[romuald@localhost scripts]$ 

Ensuite comment afficher dans meteo6jours

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

Hors ligne

#1165 Le 21/03/2015, à 10:52

Didier-T

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

pour le moment, je n'en suis pas encore là

Hors ligne

#1166 Le 21/03/2015, à 10:53

loutch

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

Re

ok donc je vais attendre ,encore merci et

Bon week-end

@+

Hors ligne

#1167 Le 21/03/2015, à 12:59

daniel38100

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

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)

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

Hors ligne

#1168 Le 21/03/2015, à 15:15

daniel38100

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

les données ont changé ya du taf

Hors ligne

#1169 Le 21/03/2015, à 22:06

daniel38100

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

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

Dernière modification par daniel38100 (Le 21/03/2015, à 22:09)

Hors ligne

#1170 Le 21/03/2015, à 22:07

Didier-T

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

Bonsoir,
je n'ai pas eut beaucoup de temps aujourd'hui, mais sa avance bien.
Voici la nouvelle mouture du script, j'y ajouterais ce qu'il faut pour le passage d'argument (ville).

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Par Didier-T Pour les utilisateur de Météo Lua

import urllib, urllib2, json

class ephemeride():
    def __init__(self):
        lat, lng=self._localisation("argenteuil")
        data=self._past(lat, lng)
        tableau=self._format(data)
        tableau.append(self._agelune(data))
        tableau.append(self._phaselune(data))
        self._sortie(tableau)
        
        
    def _localisation(self, ville):
        req=urllib2.Request('http://maps.googleapis.com/maps/api/geocode/json?address='+ville+',%20france&sensor=false')
        response = urllib2.urlopen(req)
        jstr=json.loads(response.read())
        return jstr["results"][0]["geometry"]["location"]["lat"], jstr["results"][0]["geometry"]["location"]["lng"]
        
    def _past(self, lat, lng):
        req = urllib2.Request('http://cerridwen.viridian-project.de/api/v1/moon?latitude='+str(lat)+'&longitude='+str(lng))
        response = urllib2.urlopen(req)
        return json.loads(response.read())
        
    def _format(self, jstr):
        tableau=[]
        for x in jstr:
            for y in x:
                if isinstance(x[y], dict):
                    for z in x[y]:
                        tableau.append(y+"_"+z+" = "+self._traduction(str(x[y][z])))
                else:
                    tableau.append(y+" = "+self._traduction(str(x[y])))
                    
        return tableau
        

    def _phaselune(self, jstr):
        if int(jstr[0]["position"]["deg"])<45:
            return ("phase_de_la_lune = Premier croissant")
        elif int(jstr[0]["position"]["deg"])<90:
            return("phase_de_la_lune = Premier quartier")
        elif int(jstr[0]["position"]["deg"])<135:
            return("phase_de_la_lune = Lune gibbeuse croissante")
        elif int(jstr[0]["position"]["deg"])<180:
            return("phase_de_la_lune = PLeine lune")
        elif int(jstr[0]["position"]["deg"])<215:
            return("phase_de_la_lune = Lune gibbeuse décroissante")
        elif int(jstr[0]["position"]["deg"])<270:
            return("phase_de_la_lune = Dernier quartier")
        elif int(jstr[0]["position"]["deg"])<315:
            return("phase_de_la_lune = Dernier croissant")
        else:
            return("phase_de_la_lune = Nouvelle Lune")


    def _agelune(self, jstr):
        jour=int(jstr[0]["age"])
        heure=int((jstr[0]["age"]-jour)*24)
        minute=int((((jstr[0]["age"]-jour)*24)-heure)*60)
        return str(jour)+" jours "+str(heure)+" h "+str(minute)+" m"
        

    def _traduction(self, trad):
        try:
            ret=trad.replace("in", "en")\
            .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")
        except:
            ret=trad
        
        return ret
        
    def _sortie(self, tableau):
        print '\n'.join(tableau)


if __name__ == "__main__":
    ephemeride()

Donc pour suivre l'évolution du truc, nous avons :

  1. un bon début de traduction

  2. l'ajout de la Phase

  3. age de la lune en jours, heures, minutes

  4. localisation de la commune désirée grâce à google

Le but est de faire un script autonome, qui pourras être utilisé en dehors de météo lua.

A+,
Didier.

@daniel38100, je trouve tes idées excellentes (le coup de récupérer la position GPS de chaque ville pour avoir les prévisions au plus près big_smile ), mais tu devrais utiliser la bibliothèque json (ça te donnerais un nom de variable complet, plus simple pour la suite)

Hors ligne

#1171 Le 21/03/2015, à 22:15

daniel38100

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

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

Hors ligne

#1172 Le 21/03/2015, à 22:19

Didier-T

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

en fait elle te trasforme le json en tableau et dictionnaire, je trouve sa génial wink

Hors ligne

#1173 Le 22/03/2015, à 08:06

Didier-T

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

Bonjour,
je pense avoir fini avec le script de lunaison

lunaison.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
# Par Didier-T Pour les utilisateur de Météo Lua

import urllib, urllib2, json, sys, getopt

class ephemeride():
    def __init__(self):
        self.arguments()
        lat, lng=self._localisation(self.ville)
        data=self._past(lat, lng)
        tableau=self._format(data)
        tableau.append(self._agelune(data))
        tableau.append(self._phaselune(data))
        self._sortie(tableau)
        
        
    def _localisation(self, ville):
        req=urllib2.Request('http://maps.googleapis.com/maps/api/geocode/json?address='+ville+',%20france&sensor=false')
        response = urllib2.urlopen(req)
        jstr=json.loads(response.read())
        return jstr["results"][0]["geometry"]["location"]["lat"], jstr["results"][0]["geometry"]["location"]["lng"]
        
    def _past(self, lat, lng):
        req = urllib2.Request('http://cerridwen.viridian-project.de/api/v1/moon?latitude='+str(lat)+'&longitude='+str(lng))
        response = urllib2.urlopen(req)
        return json.loads(response.read())
        
    def _format(self, jstr):
        tableau=[]
        for x in jstr:
            for y in x:
                if isinstance(x[y], dict):
                    for z in x[y]:
                        tableau.append(y+"_"+z+" = "+self._traduction(str(x[y][z])))
                else:
                    tableau.append(y+" = "+self._traduction(str(x[y])))
                    
        return tableau
        

    def _phaselune(self, jstr):
        if int(jstr[0]["position"]["deg"])<45:
            return ("phase_de_la_lune = Premier croissant")
        elif int(jstr[0]["position"]["deg"])<90:
            return("phase_de_la_lune = Premier quartier")
        elif int(jstr[0]["position"]["deg"])<135:
            return("phase_de_la_lune = Lune gibbeuse croissante")
        elif int(jstr[0]["position"]["deg"])<180:
            return("phase_de_la_lune = PLeine lune")
        elif int(jstr[0]["position"]["deg"])<215:
            return("phase_de_la_lune = Lune gibbeuse décroissante")
        elif int(jstr[0]["position"]["deg"])<270:
            return("phase_de_la_lune = Dernier quartier")
        elif int(jstr[0]["position"]["deg"])<315:
            return("phase_de_la_lune = Dernier croissant")
        else:
            return("phase_de_la_lune = Nouvelle Lune")


    def _agelune(self, jstr):
        jour=int(jstr[0]["age"])
        heure=int((jstr[0]["age"]-jour)*24)
        minute=int((((jstr[0]["age"]-jour)*24)-heure)*60)
        return "iso = "+str(jour)+" jours "+str(heure)+" h "+str(minute)+" m"
        

    def _traduction(self, trad):
        try:
            ret=trad.replace("in", "en")\
            .replace("moon", "lune").replace("Moon", "Lune")\
            .replace("full", "pleine").replace("Full", "Pleine")\
            .replace("new", "nouvelle").replace("New", "Nouvelle").replace("rises", "montante")\
            .replace("first", "tremier").replace("third", u"troisième").replace("quarter", "quartier")\
            .replace("crescent", "croissante").replace("waning", u"décroissante")\
            .replace("gibbous","Gibbeuse").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")
        except:
            ret=trad
        
        return ret
        

    def _sortie(self, tableau):
        print '\n'.join(tableau)


    # Définis les arguments passés en ligne de commande, lance usage() si besoin ou aide demandée
    def arguments(self):
        try:
            opts, args = getopt.getopt(sys.argv[1:], "v:ch", ["ville=","commune=", "help"])
        except getopt.GetoptError as err:
            # Affiche l'aide et quitte le programme
            self.usage()
            sys.exit(2)

        if opts==[]:
            self.usage()
            sys.exit(2)

        self.getlist=[]
        self.fileout=0
        for o, a in opts:
            if o in ("-v", "--ville"):
                self.ville=a
            if o in ("-c", "--commune"):
                region=a
            elif o in ("-h", "--help"):
                self.usage()
                sys.exit()
                
        try:
            self.ville=self.ville+","+region
        except:
            pass

    # Aide à l'utilisation du script
    def usage(self):
        print("\nUtilisation: lunaison.py --ville=[nom de la ville] --commune=[nom de la commune]\n\
retourne les informations concernant la lune visible depuis la ville renseignée.\n\
\n\
Liste des paramètres obligatoires pour l'accès aux données :\n\
  -v,  --ville          Nom de la ville\n\
Liste des paramètres optionnel pour l'accès aux données :\n\
  -c,  --commune        Nom de la commune\n\
\n\
       --help           Affiche l'aide et quitte\n")


if __name__ == "__main__":
    ephemeride()

ce lance depuis un terminal avec argument(s)
-v ou --ville= nom de la ville (avec des - a la place des espaces)
-c ou --commune= nom de la commune (avec des - a la place des espaces) cette argument est optionnel

retour pour la commande suivante

python lunaison.py --ville=Saint-Maximin --commune=gard
diameter = 32.8914139161
last_rise_jd = 2457103.78783
last_rise_delta_days = -0.00782587332651
last_rise_description = Lune montante
last_rise_iso_date = 2015-03-22 06:54:29
illumination = 0.14710123326
last_full_moon_jd = 2457087.25374
last_full_moon_delta_days = -16.5419149394
last_full_moon_description = Pleine lune en Vierge
last_full_moon_iso_date = 2015-03-05 18:05:23
speed = 14.6922702198
period_length = 29.3893529065
next_full_moon_jd = 2457117.00386
next_full_moon_delta_days = 13.2082022
next_full_moon_description = Pleine lune en Balance
next_full_moon_iso_date = 2015-04-04 12:05:34
jd = 2457103.79564
dignity = None
next_new_moon_jd = 2457131.28947
next_new_moon_delta_days = 27.4938142132
next_new_moon_description = Nouvelle lune en Bélier
next_new_moon_iso_date = 2015-04-18 18:56:50
position_min = 49.0329297239
position_rel_tuple = [u'Bélier', 27, 49, 1]
position_absolute_degrees = 27.8172154954
position_sign = Bélier
position_sec = 1.97578343156
position_deg = 27.8172154954
last_new_moon_jd = 2457101.90012
last_new_moon_delta_days = -1.89553871891
last_new_moon_description = Nouvelle lune en Poissons
last_new_moon_iso_date = 2015-03-20 09:36:10
distance = 0.0024287844764
next_set_jd = 2457104.36419
next_set_delta_days = 0.568529751617
next_set_description = Lune se couche
next_set_iso_date = 2015-03-22 20:44:26
speed_ratio = 0.821364207238
last_set_jd = 2457103.31344
last_set_delta_days = -0.482221316081
last_set_description = Lune se couche
last_set_iso_date = 2015-03-21 19:31:21
age = 1.8955248245
next_rise_jd = 2457104.8153
next_rise_delta_days = 1.01964266971
next_rise_description = Lune montante
next_rise_iso_date = 2015-03-23 07:34:02
diameter_ratio = 0.748211232523
phase_trend = ascendante
phase_shape = croissante
phase_quarter = None
phase_quarter_english = None
iso_date = 2015-03-22 07:05:44
next_new_or_full_moon_jd = 2457117.00386
next_new_or_full_moon_delta_days = 13.2082021916
next_new_or_full_moon_description = Pleine lune en Balance
next_new_or_full_moon_iso_date = 2015-04-04 12:05:34
iso = 1 jours 21 h 29 m
phase_de_la_lune = Premier croissant

Dernière modification par Didier-T (Le 22/03/2015, à 08:08)

Hors ligne

#1174 Le 22/03/2015, à 13:55

Phyllinux

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

@ toutes et tous,

Je veux bien prendre à mon compte la traduction française .
Juste une petite remarque :
Comme il est indiqué sur la page d'accueil de Cerridwen :
Cerridwen provides solar system data that is suitable for both astronomical and astrological purposes.
Ce qui fait que les données extraites sont aussi bien du domaine astronomique qu'astrologique. Je ne sais pas si cela est d'un grand intérêt de savoir que la lune se situe dans la maison du Scorpion ou du Lion pour les conkys...
Avec les données qui étaient extraites sur le site nous av(i)ons :
La phase de lune (Pleine lune, 1er croissant, gibbeuse....)
La visibilité en pourcentage
La distance entre terre et lune
"L'âge" de la lune
La phase (croissante ou décroissante)
La trajectoire (ascendante ou descendante)
La date de la prochaine éclipse
Les dates des prochains apogée, périgée et noeud lunaire
Les heures de lever et de coucher le lune (et de soleil)
Toutes ces données astronomiques ne sont pas forcément utiles, c'est bien vrai pour la majorité d'entre nous, au même titre que le positions de la lune sur le calendrier zodiacal qui sont éditées avec le script...


The ship is sinking normally...

Hors ligne

#1175 Le 22/03/2015, à 15:26

Didier-T

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

Bonjour Phyllinux,
en fait, il est plus simple de récurer toutes les données fournis par l'API Cerridwen, même s'il est certain que très peut d'informations sont pertinente pour nous, et que d'autres manque.

Mais ensuite il suffit de n'utiliser que ce qui nous intéresse et calculer ou déterminer les infos manquante avec les infos disponibles, comme fait avec l'age et la phase, par contre en regardant la liste que tu as faite, je vois qu'il manque "la visibilité en pourcentage".

Hors ligne