[Conky] Météo (en cours)

Questions et astuces concernant l'installation et la configuration d'archlinux
Avatar de l’utilisateur
banditblue
Chu Ko Nu
Messages : 494
Inscription : dim. 10 janv. 2010, 10:19

[Conky] Météo (en cours)

Message par banditblue » mer. 25 mars 2020, 17:59

je reviens encore avec quelques question, concernant la personnalisation de mon environnement Openbox et surtout l'utilisation de conky,
je suis tombé sur Weather forecast in conky qui me plaît bien vue qu'à l’époque j'avais presque la même approche météo

j'ai bien suivi ces explication, me suis inscrit aussi pour avoir la cléf API du site météo
changer quelque ligne pour pointer l'endroit du fichier executable ~/.conky/meteo/cron/conky_worldweatheronline.py
et ajouter la ligne dans le .conkyrc1

Code : Tout sélectionner

[alignment tl
background no
border_width 1
cpu_avg_samples 2
default_color white
default_outline_color white
default_shade_color white
double_buffer yes
draw_borders no
draw_graph_borders yes
draw_outline no
draw_shades no
gap_x 30
gap_y 15
minimum_size 150 150
net_avg_samples 2
out_to_console no
out_to_stderr no
extra_newline no
own_window_transparent yes
own_window yes
own_window_type normal
own_window_title conky
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
stippled_borders 0
show_graph_scale no
show_graph_range no
update_interval 1.0
uppercase no
use_spacer none
use_xft yes
text_buffer_size 2048
xftfont DejaVu:size=9
#lua_load /home/moi/.conky/lua/conky_grey.lua
#lua_draw_hook_pre main

TEXT
  ${font DejaVu:size=12:Bold}Météo ${hr 1}${font}
  ${execpi 60 cat /home/moi/.conky/meteo/cron/conky_worldweatheronline.py}


le fichier conky_worldweatheronlne.py

Code : Tout sélectionner

#!/usr/bin/python
# -*- coding: utf-8 -*-

# Getting weather forecast from worldweatheronline.com

import sys
import os
import datetime
import json
import urllib2

################################### Settings ###################################

# set path of the cache-file
cache_file_path = '/home/moi/.conky/meteo/weather'

# set worldweatheronline.com KEY
wwo_key = 'fab52faec8134811881210207202403'  # for example '1111111111111111111111'

# set location query by examples http://www.worldweatheronline.com/weather-api.aspx
wwo_location = 'Toulouse'  # for example 'Decin, Czech Republic'

# set number of days you wanna get (for the template)
wwo_num_of_days = 3

# set template
template = u'''${image %(TODAY_IMAGE)s -p 0,645 -s 90x90}${voffset 7}${offset 105}${font Bitstream Vera Sans Mono:style=Bold:size=20}${color2}%(TODAY_TEMP)s °C${color}${font}

${goto 105}Observation time:          ${color2}%(TODAY_OBSERVATION)s ${color}
Wind speed:                  ${color2}%(TODAY_WINDSPEED)s km/h ${color}
Humidity:                      ${color2}%(TODAY_HUMIDITY)s %% ${color}


      %(1_DATE)s                    %(2_DATE)s                    %(3_DATE)s
${voffset 5}${goto 60}${font Bitstream Vera Sans Mono:style=Bold:size=12}${color2}%(1_TEMP)s °C${font}${font :size=8}
%(1_WINDSPEED)s km/h${color}${font}${voffset -37}${goto 208}${color2}${font Bitstream Vera Sans Mono:style=Bold:size=12}
%(2_TEMP)s °C${font}${font :size=8}
%(2_WINDSPEED)s km/h${color}${font}${voffset -37}${goto 358}${color2}${font Bitstream Vera Sans Mono:style=Bold:size=12}
%(3_TEMP)s °C${font}${font :size=8}
%(3_WINDSPEED)s km/h${color}${font}
${image %(1_IMAGE)s -p 0,775 -s 45x45}${image %(2_IMAGE)s -p 150,775 -s 45x45}${image %(3_IMAGE)s -p 300,775 -s 45x45}'''

#################################### Script ####################################

def getUrlData(url, x=0):
  """load data from url recursively"""
  try:
    uo = urllib2.urlopen(url)
    text = uo.read()
    if text:
      return text
  except:
    pass

  if x == 4:
    sys.exit(0)
  time.sleep(5)
  return getUrlData(url, x+1)


url = 'http://api.worldweatheronline.com/free/v1/weather.ashx?q=%s&format=json&num_of_days=%s&key=%s' % (urllib2.quote(wwo_location), wwo_num_of_days, wwo_key)

try:
  jstr = getUrlData(url)
  jdata = json.loads(jstr, encoding='utf-8')
except:
  sys.exit(0)

if 'data' not in jdata:
  sys.exit(0)
elif not jdata['data'].get('current_condition'):
  sys.exit(0)

icons_path = '$HOME/conky/meteo/weather-icons/'

repl = {}

# data.current_condition
cc = jdata['data']['current_condition'][0]
try:
  img_name = cc['weatherIconUrl'][0]['value']
  img_name = os.path.basename(img_name)
except:
  img_name = 'na.png'
repl['TODAY_IMAGE'] = os.path.join(icons_path, img_name)
repl['TODAY_TEMP'] = cc.get('temp_C', '?')
if cc.get('observation_time'):
  repl['TODAY_OBSERVATION'] = datetime.datetime.strptime(cc['observation_time'], '%I:%M %p').strftime('%H:%M')
else:
  repl['TODAY_OBSERVATION'] = 'unknown'
repl['TODAY_WINDSPEED'] =  cc.get('windspeedKmph', '?')
repl['TODAY_HUMIDITY'] = cc.get('humidity', '?')

# data.weather - list
x = 1
for i in jdata['data'].get('weather', []):
  try:
    img_name = i['weatherIconUrl'][0]['value']
    img_name = os.path.basename(img_name)
  except:
    img_name = 'na.png'
  repl['%s_IMAGE' % x] = os.path.join(icons_path, img_name)
  repl['%s_TEMP' % x] = '%s/%s' % (i.get('tempMinC', '?'), i.get('tempMaxC', '?'))
  repl['%s_DATE' % x] = datetime.datetime.strptime(i['date'], '%Y-%m-%d').strftime('%a %d.%m.')
  repl['%s_WINDSPEED' % x] = i.get('windspeedKmph', '?')
  x += 1

data = template % repl

# write into a cache-file
try:
  f = open(cache_file_path, 'w')
  f.write(data.encode('utf-8'))
  f.close()
except:
  pass

sys.exit()


en image c'est plus parlant
Image
La connaîssance n'a pas de limite.
Mais sa valeur, est d'autant plus grande, une fois partagé


Pc fixe --- Z170A Sli Plus, I7-6700K, GTX980, 24Go DDR4, SSD 860 EVO 500Go, SSD 830 Serie,3HDD 5Tera
Eeepc Asus 1015pem --- Intel Atom N550 Dual-core 1.5Ghz / DD 1Tera 7200rpm / Ram 2Go

Screenshot + Les Conky ===> Clique ICI

benjarobin
Maître du Kyudo
Messages : 15713
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Conky] Météo (en cours)

Message par benjarobin » mer. 25 mars 2020, 18:11

Bonjour,
La doc n'indique pas vraiment de faire cela... Tu dois exécuter le script python périodiquement (eux il le font à l'ancienne via un cron), mais un service systemd avec un timer ce serait mieux.
Et le résultat du script est sauvegardé dans un fichier intermédiaire (dans l'exemple $HOME/conky/cache/weather).
Et finalement le contenu est affiché via la commande cat
Zsh | KDE | PC fixe : core i7, carte nvidia | Portable : Asus ul80vt
Titre d'un sujet : [Thème] Sujet (état)

Avatar de l’utilisateur
banditblue
Chu Ko Nu
Messages : 494
Inscription : dim. 10 janv. 2010, 10:19

Re: [Conky] Météo (en cours)

Message par banditblue » sam. 28 mars 2020, 13:08

J'ai beau essayer, mais rien ne fonctionne !!!
j'ai aussi suivi un peu ce post sur un autre forum rien ne fonctionne

il y a cependant ceci qui marche mais les infos sont un peu simpliste

Code : Tout sélectionner

$ curl fr.wttr.in/Toulouse?TF0 
ceux qui me retourne dans le terminal xterm

Code : Tout sélectionner

[moi@ArchLinuxI7 ~]$ curl fr.wttr.in/Toulouse?Tf0
Prévisions météo pour: Toulouse

     \   /     Ensoleillé
      .-.      15 °C          
   ― (   ) ―   ↘ 9 km/h       
      `-’      10 km          
     /   \     0.0 mm         
[moi@ArchLinuxI7 ~]$ 
j'aimerais savoir si un script pouvais extraire les informations contenue afin que chacune d'elle soit retranscrit dans une icône et les infos de condition météorologique ?
Image

en utilisant les commande suivante, il y a moyens de faire quelque chose de sympa

Code : Tout sélectionner

 $ curl wttr.in/:help



Usage:

    $ curl wttr.in          # current location
    $ curl wttr.in/muc      # weather in the Munich airport

Supported location types:

    /paris                  # city name
    /~Eiffel+tower          # any location
    /Москва                 # Unicode name of any location in any language
    /muc                    # airport code (3 letters)
    /@stackoverflow.com     # domain name
    /94107                  # area codes
    /-78.46,106.79          # GPS coordinates

Special locations:

    /moon                   # Moon phase (add ,+US or ,+France for these cities)
    /moon@2016-10-25        # Moon phase for the date (@2016-10-25)

Units:

    m                       # metric (SI) (used by default everywhere except US)
    u                       # USCS (used by default in US)
    M                       # show wind speed in m/s

View options:

    0                       # only current weather
    1                       # current weather + 1 day
    2                       # current weather + 2 days
    A                       # ignore User-Agent and force ANSI output format (terminal)
    F                       # do not show the "Follow" line
    n                       # narrow version (only day and night)
    q                       # quiet version (no "Weather report" text)
    Q                       # superquiet version (no "Weather report", no city name)
    T                       # switch terminal sequences off (no colors)

PNG options:

    /paris.png              # generate a PNG file
    p                       # add frame around the output
    t                       # transparency 150
    transparency=...        # transparency from 0 to 255 (255 = not transparent)

Options can be combined:

    /Paris?0pq
    /Paris?0pq&lang=fr
    /Paris_0pq.png          # in PNG the file mode are specified after _
    /Rome_0pq_lang=it.png   # long options are separated with underscore

Localization:

    $ curl fr.wttr.in/Paris
    $ curl wttr.in/paris?lang=fr
    $ curl -H "Accept-Language: fr" wttr.in/paris

Supported languages:

    af be ca da de el et fr fa hu ia id it nb nl pl pt-br ro ru tr th uk vi zh-cn zh-tw (supported)
    az bg bs cy cs eo es fi ga hi hr hy is ja jv ka kk ko ky lt lv mk ml nl fy nn pt pt-br sk sl sr sr-lat sv sw te uz zh zu he (in progress)

Special URLs:

    /:help                  # show this page
    /:bash.function         # show recommended bash function wttr()
    /:translation           # show the information about the translators
La connaîssance n'a pas de limite.
Mais sa valeur, est d'autant plus grande, une fois partagé


Pc fixe --- Z170A Sli Plus, I7-6700K, GTX980, 24Go DDR4, SSD 860 EVO 500Go, SSD 830 Serie,3HDD 5Tera
Eeepc Asus 1015pem --- Intel Atom N550 Dual-core 1.5Ghz / DD 1Tera 7200rpm / Ram 2Go

Screenshot + Les Conky ===> Clique ICI

benjarobin
Maître du Kyudo
Messages : 15713
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Conky] Météo (en cours)

Message par benjarobin » sam. 28 mars 2020, 14:23

Peux tu expliquer ce que tu as essayé ? Car la documentation est relativement clair.
La clé que tu as mise dans ton message est invalide. Pour information l'accès à l'API est payant : https://www.worldweatheronline.com/deve ... cing2.aspx
Zsh | KDE | PC fixe : core i7, carte nvidia | Portable : Asus ul80vt
Titre d'un sujet : [Thème] Sujet (état)

Avatar de l’utilisateur
banditblue
Chu Ko Nu
Messages : 494
Inscription : dim. 10 janv. 2010, 10:19

Re: [Conky] Météo (en cours)

Message par banditblue » sam. 28 mars 2020, 15:18

benjarobin a écrit :
sam. 28 mars 2020, 14:23
Peux tu expliquer ce que tu as essayé ? Car la documentation est relativement clair.
La clé que tu as mise dans ton message est invalide. Pour information l'accès à l'API est payant : https://www.worldweatheronline.com/deve ... cing2.aspx
ok !! en fait j'ai deja une api key gratuite sur ce lien avec la location (les chiffres pour la localisation de ma ville Toulouse)
le probleme c'est que tout les scripts que ce soit accuweather, conkyforecast et autre ne fonctionne pas
La connaîssance n'a pas de limite.
Mais sa valeur, est d'autant plus grande, une fois partagé


Pc fixe --- Z170A Sli Plus, I7-6700K, GTX980, 24Go DDR4, SSD 860 EVO 500Go, SSD 830 Serie,3HDD 5Tera
Eeepc Asus 1015pem --- Intel Atom N550 Dual-core 1.5Ghz / DD 1Tera 7200rpm / Ram 2Go

Screenshot + Les Conky ===> Clique ICI

Avatar de l’utilisateur
banditblue
Chu Ko Nu
Messages : 494
Inscription : dim. 10 janv. 2010, 10:19

Re: [Conky] Météo (en cours)

Message par banditblue » lun. 30 mars 2020, 17:47

en reprenant un peu ce sujet, en executant chacune des commandes, en creant les fichiers dont j'ai besoin, en remplaceant aussi les clefs partner Id et la clef de licence que j'ai obtenue sur ce site
en executant la commande suivante

Code : Tout sélectionner

python /home/moi/.conky/conkyForecast.py --location=IBLAGN3
j'obtient ceci

Code : Tout sélectionner

[moi@ArchLinuxI7 ~]$ python /home/moi/.conky/conkyForecast.py --location=IBLAGN3
  File "/home/moi/.conky/conkyForecast.py", line 616
    except Exception, e:
                    ^
SyntaxError: invalid syntax
[moi@ArchLinuxI7 ~]$ 

Pour faire suite a ce post, je me suis inscrit sur un autre site météorologique qui est celui-ci World Weather Online
donc sur mon compte avec la nouvel API, on peu faire une recherche de fichier Json ou Xml
en rentrant les infos, j'ai bien un retour

Code : Tout sélectionner


Call: http://api.weatherapi.com/v1/current.json?key=XXXXXXXXXX1344a79b516XXXXXXXXXX&q=Blagnac

Response Code
200

Response Headers

{
  "Transfer-Encoding": "chunked",
  "Connection": "keep-alive",
  "Vary": "Accept-Encoding",
  "CDN-PullZone": "93447",
  "CDN-Uid": "8fa3a04a-75d9-4707-8056-b7b33c8ac7fe",
  "CDN-RequestCountryCode": "FI",
  "CDN-EdgeStorageId": "615",
  "request-context": "appId=cid-v1:050e0270-956e-4175-ad7b-137aad06588b",
  "CDN-CachedAt": "2020-03-30 18:37:28",
  "CDN-RequestId": "21bdd3b02cac9e31756b45b0b2fb8ef7",
  "CDN-Cache": "MISS",
  "Cache-Control": "public, max-age=1200",
  "Content-Type": "application/json",
  "Date": "Mon, 30 Mar 2020 16:37:28 GMT",
  "Server": "BunnyCDN-FI1-615"
}

Response Body

{
    "location": {
        "name": "Blagnac",
        "region": "Midi-Pyrenees",
        "country": "France",
        "lat": 43.63,
        "lon": 1.4,
        "tz_id": "Europe/Paris",
        "localtime_epoch": 1585586248,
        "localtime": "2020-03-30 18:37"
    },
    "current": {
        "last_updated_epoch": 1585585847,
        "last_updated": "2020-03-30 18:30",
        "temp_c": 7.0,
        "temp_f": 44.6,
        "is_day": 1,
        "condition": {
            "text": "Overcast",
            "icon": "//cdn.weatherapi.com/weather/64x64/day/122.png",
            "code": 1009
        },
        "wind_mph": 0.0,
        "wind_kph": 0.0,
        "wind_degree": 291,
        "wind_dir": "WNW",
        "pressure_mb": 1017.0,
        "pressure_in": 30.5,
        "precip_mm": 0.1,
        "precip_in": 0.0,
        "humidity": 61,
        "cloud": 100,
        "feelslike_c": 7.0,
        "feelslike_f": 44.6,
        "vis_km": 10.0,
        "vis_miles": 6.0,
        "uv": 2.0,
        "gust_mph": 9.6,
        "gust_kph": 15.5
    }
}
La connaîssance n'a pas de limite.
Mais sa valeur, est d'autant plus grande, une fois partagé


Pc fixe --- Z170A Sli Plus, I7-6700K, GTX980, 24Go DDR4, SSD 860 EVO 500Go, SSD 830 Serie,3HDD 5Tera
Eeepc Asus 1015pem --- Intel Atom N550 Dual-core 1.5Ghz / DD 1Tera 7200rpm / Ram 2Go

Screenshot + Les Conky ===> Clique ICI

benjarobin
Maître du Kyudo
Messages : 15713
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [Conky] Météo (en cours)

Message par benjarobin » lun. 30 mars 2020, 20:13

J'avoue avoir du mal à te suivre, ni à voir où sont les problèmes, donc difficile d'aider
Zsh | KDE | PC fixe : core i7, carte nvidia | Portable : Asus ul80vt
Titre d'un sujet : [Thème] Sujet (état)

Répondre