#1301 Le 21/09/2012, à 10:42
- ragamatrix
Re : [Conky] Alternative à weather.com (2)
OK, je comprends le but et la manière d'y arriver : limiter la charge processeur au renouvellement d'image en utilisant un fichier mask.png sauvegardé qui sera appliqué à l'image téléchargée.
En revanche, pour arriver à ce résultat, à part ne pas effacer le fichier mask.png, en supprimant la lignerm /tmp/mask.png
je ne sais comment faire. Cela ne me dérange pas d'avoir le fichier mask.png dans mon répertoire /tmp/ et de faire un appel à ce masque à chaque utilisation de l'image...
Si cela permet de soulager le processeur, je suis preneur. Au 'repos', je tourne à 7-8%, mais dès l'actualisation, je grimpe à 100%, et cela ralentit l'ordi jusqu'à la fin du traitement de l'image.Autre chose, toujours dans le même ordre d'idée de gain de ressource du processeur, même si ce n'est pas l'objet du fil de ce post dédié au conky météo : Connais tu un script d'affichage de pochette de CD dans un conky musique ? Celui de conkyclementine fonctionne très bien, mais il consomme beaucoup trop, et il est inutilisable sur mon netbook, car clementine est déjà gourmand, et si je lance le conky en même temps, je suis à 100% d'utilisation du processeur. Impossible donc de travailler sur la machine avec le conky activé! J'ai cherché un peu sur les forums, et je n'ai rien trouvé d'assez léger, que ce soit pour clémentine, audacious ou vlc
Et j'avais vu sur un post que tu essayais de trouver une solution en utilisant dbus.
Pour conky musique et pochettes j'utilise le lecteur deadbeef (qui ne consomme presque rien comme ressource)
Quand je rentre en début de semaine prochaine je te fais un pack.
Mais tu peux déjà te renseigner pour installer deadbeef avec les lib qui vont bien, comme le plugin (mpriss et album cover art)
Pas bien sur des termes exacts...regarde par ici où par là....conkydb
Hors ligne
#1302 Le 21/09/2012, à 18:37
- Didier-T
Re : [Conky] Alternative à weather.com (2)
OK, je comprends le but et la manière d'y arriver : limiter la charge processeur au renouvellement d'image en utilisant un fichier mask.png sauvegardé qui sera appliqué à l'image téléchargée.
En revanche, pour arriver à ce résultat, à part ne pas effacer le fichier mask.png, en supprimant la lignerm /tmp/mask.png
je ne sais comment faire. Cela ne me dérange pas d'avoir le fichier mask.png dans mon répertoire /tmp/ et de faire un appel à ce masque à chaque utilisation de l'image...
Si cela permet de soulager le processeur, je suis preneur. Au 'repos', je tourne à 7-8%, mais dès l'actualisation, je grimpe à 100%, et cela ralentit l'ordi jusqu'à la fin du traitement de l'image.Autre chose, toujours dans le même ordre d'idée de gain de ressource du processeur, même si ce n'est pas l'objet du fil de ce post dédié au conky météo : Connais tu un script d'affichage de pochette de CD dans un conky musique ? Celui de conkyclementine fonctionne très bien, mais il consomme beaucoup trop, et il est inutilisable sur mon netbook, car clementine est déjà gourmand, et si je lance le conky en même temps, je suis à 100% d'utilisation du processeur. Impossible donc de travailler sur la machine avec le conky activé! J'ai cherché un peu sur les forums, et je n'ai rien trouvé d'assez léger, que ce soit pour clémentine, audacious ou vlc
Et j'avais vu sur un post que tu essayais de trouver une solution en utilisant dbus.
Bon dans un premier temps, voici pour le script détourage, en admettant que ton mask.png soit dans /home/gilles/
detour_terre.sh
#!/bin/bash
# script detour_terre.sh
wget -q -O /home/gilles/image1.jpg http://www.ruwenzori.net/earth/Earth_EMEA+Atlantic_1280x1024.jpg
# pour le cadrage et le diametre si il ya lieu jouer sur 630,50
convert /home/gilles/image1.jpg /home/gilles/mask.png -alpha off -compose CopyOpacity -composite /home/gilles/image1.png
#your final image is in.png you have to modify it in conky file
#attention l'image finale est en .png a modifier dans ton conky
# ${image /home/YOUR_USERNAME/image1.png -p 0,0 -s 500x400 -f 60}
pour le second soucis, malheureusement je n'ai toujours pas trouvé de vrai solution, mais j'ai fait un script lua qui par des moyen détourné permet de récupérer les données pour Gmusique Browser
(je l'avais fait pour Shamen456)
voici le pack, dit moi ce que sa donne sur ton portable (il faudra modifier les chemins dans le conkyrc)
Edit : j'avais oublié dans Gmusicbrowser, il faut activer le plugin "MPRIS v1"
Dernière modification par Didier-T (Le 21/09/2012, à 18:41)
Hors ligne
#1303 Le 22/09/2012, à 09:49
- Phyllinux
Re : [Conky] Alternative à weather.com (2)
Nickel
Tout tourne sur mon netbook !
Pour le script de détourage, c'est bon, et je pense que je gagne en conso de processeur, même si je ne m'en rends pas compte en utilisation normale, car ce nest qu'au moment du rechargement de l'image que cela se voit, et je n'ai pas encore testé pour voir la différence 'avec' et 'sans' l'appel au masque.
Pour le conky de GMbrowser, c'est du tout bon aussi.
C'est dans le style du conky de VastOne Conkymulti lecteurs, qui utilise le script lua de Wlourf, qui est une usine à gaz beaucoup trop gourmande sur mon netbook (mais qui tourne bien sur mon desktop) en plus light.
2 petits trucs cependant :
- L'anneau volume ne fonctionne pas. Je regarderai ça de plus près plus tard. Pour le moment, il est bloqué à environ 1/4, au même niveau que sur les impressions d'écran de shamen456. C'est l'interprétation de la ligne
arg='Gmusic_volume',
du rings.lua qui ne se fait pas correctement. Mais cela n'est pas du tout gênant, même sur le rendu visuel du conky.
- Heureusement qu'il y a conky control ! Car, à la fermeture du GMbrowser, avec le conky actif, il y a un max de message d'erreurs en console, indiquant qu'il ne trouve plus rien quand le lecteur est éteint. Il est donc utile de pouvoir le 'killer' pour éviter ça.
Je pense qu'une petite ligne de code en plus pour empêcher cela serait utile. Un peu comme le conky clémentine de Voyager. Si le lecteur n'est pas actif, un message 'No Activiy' ou 'Lecteur Arrêté' s'affiche au lieu d'avoir le conky normal. Ce message pourrait être à la place du conky circulaire, ou bien écrit dans le conky.
Qu'en penses tu ?
Sinon, encore bravo, car avec mon conky météo intégré au fond d'écran, le conky qui affiche la terre entourée des rings lua qui donnent les infos système, GMbrowser en route et son conky dédié, mon netbook bien faiblard est à 70-80% d'utilisation du processeur. Et je peux même lancer des applications sans que cela coupe le son de la musique ! Exactement le but recherché.
The ship is sinking normally...
Hors ligne
#1304 Le 22/09/2012, à 13:47
- Didier-T
Re : [Conky] Alternative à weather.com (2)
Bonjour a tous,
une évolution dans le script Beta qui devrait faire plaisir à ragamatrix.
Prévision sur huit heures.
13 nouvelles données pour chaqu'une des huit heures :
Température ressentie = ${template1 huitHeures_TempR <Num de l'heure>}
Température actuelle = ${template1 huitHeures_Temp <Num de l'heure>}
Direction du vent = ${template1 huitHeures_VentDir <Num de l'heure>}
Direction pleine en toutes lettres (Nord, Sud ...) = ${template1 huitHeures_VentDirP <Num de l'heure>}
Vitesse du vent = ${template1 huitHeures_VentForce <Num de l'heure>}
Taux d'humidité = ${template1 huitHeures_Humidite <Num de l'heure>}
Point de rosée = ${template1 huitHeures_Rose <Num de l'heure>}
Indice UV = ${template1 huitHeures_Uv <Num de l'heure>}
Couverture nuageuse = ${template1 huitHeures_CouvNuage <Num de l'heure>}
Probabilité de précipitation = ${template1 huitHeures_ProbPrec <Num de l'heure>}
Heure concerné par la prévision = ${template1 huitHeures_Heure <Num de l'heure>}
Icône météo = ${template2 huitHeures_IconeM <répertoire> <position> <dimensions> <Num de l'heure>}
Icône du vent = ${template2 huitHeures_IconeV <répertoire> <position> <dimensions> <Num de l'heure>}
P.S. : normalement le problème d'affichage du nom de certaine ville devrait être réglé.
Hors ligne
#1305 Le 23/09/2012, à 09:34
- carpediem
Re : [Conky] Alternative à weather.com (2)
Salut à tous, depuis 2 jours mes conky ne font pas de MAJ j'ai beau chercher mais je ne trouve pas
meteo.cfg
# Créé par jpdipsy (forum.ubuntu-fr.org)
#Répertoire de sauvegarde
repsauv=~/conky/meteo
#Répertoire temporaire
TempShell=/tmp
#Copier votre adresse Accuweather ici
#Attention à bien tronqué la fin de l'adresse
#Mauvaise adresse http://www.accuweather.com/en/fr/argenteuil/133593/current-weather/133593
#Bonne adresse http://www.accuweather.com/en/fr/argenteuil/133593
web=Maj http://www.accuweather.com/fr/fr/stiring-wendel/135054
#Prévision sur n jour (de 1 à 15) moyenne pour la journée
periode=5
#Prévision infos sur la matinée (oui, non)
matinée=non
#Prévision infos sur la Après Midi (oui, non)
am=oui
#Prévision infos sur la Soirée (oui, non)
soiree=non
#Prévision infos sur la Nuit (oui, non)
nuit=oui
Merci pour votre aide
Carpediem
Dernière modification par carpediem (Le 23/09/2012, à 09:38)
"Carpe diem quam minimum credula postero"
(Cueille le jour présent, en te fiant le moins possible au lendemain.)
HORACE
Hors ligne
#1306 Le 23/09/2012, à 10:07
- Didier-T
Re : [Conky] Alternative à weather.com (2)
Bonjour carpediem,
Tu pourrais poster les messages renvoyé en terminal par ton conky. (ton fichier meteo.cfg est étrange)
Merci
Dernière modification par Didier-T (Le 23/09/2012, à 10:08)
Hors ligne
#1307 Le 23/09/2012, à 10:19
- carpediem
Re : [Conky] Alternative à weather.com (2)
@Didier-T
Merci de ta réponse, j'espère que c'est ce que tu me demande
carpediem ~$ conky -c /home/claude/conky/conkyrc-baro
Conky: /home/claude/conky/conkyrc-baro: 22: no such configuration: 'maximum_width300'
Conky: /home/claude/conky/conkyrc-baro: 31: no such configuration: 'border_margin'
Conky: forked to background, pid is 13040
carpediem ~$
Conky: desktop window (1e001d5) is subwindow of root window (61)
Conky: window type - override
Conky: drawing to created window (0x5400001)
Conky: drawing to double buffer
web = Maj http://www.accuweather.com/fr/fr/stiring-wendel/135054
Pévision Nb jours = 5
Pévision Matin = non
Pévision Après Midi = oui
Pévision Soirée = non
Pévision Nuit = oui
Délais = 600
Chemin de travail = /tmp
Chemin de sauvegarde = /home/claude/conky/meteo/
conky -c /homcd /Conky: llua_do_call: function conky_Meteo_enligne execution failed: /home/claude/conky/meteo/conky/script/meteo.lua:439: attempt to perform arithmetic on a nil value
cpu =
Conky: llua_do_call: function conky_main execution failed: /home/claude/conky/Baro/baro.lua:145: attempt to perform arithmetic on local 'value' (a nil value)
cpu = 12
lua Meteo_Pression = 1013
lua Meteo_TempRes = 20
lua Meteo_TempAct = 20
cpu = 13
lua Meteo_Pression = 1013
lua Meteo_TempRes = 20
lua Meteo_TempAct = 20
cpu = 13
lua Meteo_Pression = 1013
lua Meteo_TempRes = 20
lua Meteo_TempAct = 20
cpu = 13
lua Meteo_Pression = 1013
lua Meteo_TempRes = 20
lua Meteo_TempAct = 20
cpu = 15
lua Meteo_Pression = 1013
lua Meteo_TempRes = 20
lua Meteo_TempAct = 20
cpu = 13
lua Meteo_Pression = 1013
lua Meteo_TempRes = 20
lua Meteo_TempAct = 20
cpu = 12
lua Meteo_Pression = 1013
lua Meteo_TempRes = 20
lua Meteo_TempAct = 20
cpu = 13
lua Meteo_Pression = 1013
lua Meteo_TempRes = 20
lua Meteo_TempAct = 20
cpu = 14
lua Meteo_Pression = 1013
lua Meteo_TempRes = 20
lua Meteo_TempAct = 20
cpu = 13
lua Meteo_Pression = 1013
lua Meteo_TempRes = 20
lua Meteo_TempAct = 20
cpu = 11
lua Meteo_Pression = 1013
lua Meteo_TempRes = 20
lua Meteo_TempAct = 20
cpu = 10
lua Meteo_Pression = 1013
lua Meteo_TempRes = 20
lua Meteo_TempAct = 20
"Carpe diem quam minimum credula postero"
(Cueille le jour présent, en te fiant le moins possible au lendemain.)
HORACE
Hors ligne
#1308 Le 23/09/2012, à 10:47
- Didier-T
Re : [Conky] Alternative à weather.com (2)
@ carpediem,
Bon, de toute évidence tu utilise un ancien script meteo.lua.
Copie le fichier cfg si dessous, sa devrait régler ton problème.
meteo.cfg
# Créé par jpdipsy (forum.ubuntu-fr.org)
#Répertoire de sauvegarde
repsauv=~/conky/meteo
#Répertoire temporaire
TempShell=/tmp
#Copier votre adresse Accuweather ici
#Attention à bien tronqué la fin de l'adresse
#Mauvaise adresse http://www.accuweather.com/en/fr/argenteuil/133593/current-weather/133593
#Bonne adresse http://www.accuweather.com/en/fr/argenteuil/133593
web=http://www.accuweather.com/fr/fr/stiring-wendel/135054
#Prévision sur n jour (de 1 à 15) moyenne pour la journée
periode=5
#Prévision infos sur la matinée (oui, non)
matinée=non
#Prévision infos sur la Après Midi (oui, non)
am=oui
#Prévision infos sur la Soirée (oui, non)
soiree=non
#Prévision infos sur la Nuit (oui, non)
nuit=oui
Hors ligne
#1309 Le 23/09/2012, à 11:46
- carpediem
Re : [Conky] Alternative à weather.com (2)
@Didier-T
Visiblement cela coince toujours
meteo.cfg
# Créé par jpdipsy (forum.ubuntu-fr.org)
#Répertoire de sauvegarde
repsauv=~/conky/meteo
#Répertoire temporaire
TempShell=/tmp
#Copier votre adresse Accuweather ici
#Attention à bien tronqué la fin de l'adresse
#Mauvaise adresse http://www.accuweather.com/en/fr/argenteuil/133593/current-weather/133593
#Bonne adresse http://www.accuweather.com/en/fr/argenteuil/133593
web=http://www.accuweather.com/fr/fr/stiring-wendel/135054
#Prévision sur n jour (de 1 à 15) moyenne pour la journée
periode=5
#Prévision infos sur la matinée (oui, non)
matinée=non
#Prévision infos sur la Après Midi (oui, non)
am=oui
#Prévision infos sur la Soirée (oui, non)
soiree=non
#Prévision infos sur la Nuit (oui, non)
nuit=oui
meteo.lua "version 4.4"
-- Créé par Didier-T (forum.ubuntu-fr.org)
-- Nécessite imagemagick http://apt.ubuntu.com/p/imagemagick
require "io"
require "os"
local Version = "v4.4"
local conditionJour = {}
local conditionNuit = {}
local conditionMatin = {}
local conditionAM = {}
local conditionSoiree = {}
local conditionNoct = {}
local InfoJour = {}
local conditioncourante = {}
local Rep, cmd, jours, matin, apresmidi, soiree, nuit, delais, r, repsauv, l, fichier_init, MAJ, tc, dermodif
--Traduction date
function trad_date(d)
local date = d
date = date:gsub("Monday", "Lundi"):gsub("Tuesday", "Mardi"):gsub("Wednesday", "Mercredi"):gsub("Thursday", "Jeudi"):gsub("Friday", "Vendredi"):gsub("Saturday", "Samedi"):gsub("Sunday", "Dimanche")
date = date:gsub("lun", "Lun"):gsub("mar", "Mar"):gsub("mer", "Mer"):gsub("jeu", "Jeu"):gsub("ven", "Ven"):gsub("sam", "Sam"):gsub("dim", "Dim")
date = date:gsub("Mon", "Lun"):gsub("Tue", "Mar"):gsub("Wed", "Mer"):gsub("Thu", "Jeu"):gsub("Fri", "Ven"):gsub("Sat", "Sam"):gsub("Sun", "Dim")
date = date:gsub("January", "Janvier"):gsub("February", "Février"):gsub("March", "Mars"):gsub("April", "Avril"):gsub("May", "Mai"):gsub("June", "Juin"):gsub("July", "Juillet"):gsub("August", "Août"):gsub("September", "Septembre"):gsub("October", "Octobre"):gsub("November", "Novembre"):gsub("December", "Décembre")
date = date:gsub("jan", "Jan"):gsub("fev", "Fév"):gsub("mar", "Mar"):gsub("avr", "Avr"):gsub("mai", "Mai"):gsub("jui", "Jui"):gsub("aou", "Aoû"):gsub("sep", "Sep"):gsub("oct", "Oct"):gsub("nov", "Nov"):gsub("dec", "Déc")
date = date:gsub("Feb", "Fév"):gsub("Apr", "Avr"):gsub("May", "Mai"):gsub("Jun", "Juin"):gsub("Jul", "Juil"):gsub("Aug", "Aoû"):gsub("Dec", "Déc")
return date
end
--Vérifier l'existence d'un fichier
function existe(file)
local a = io.open(file, "r")
local present
if a then
present = true
io.close(a)
else
present = false
end
return present
end
--Formatage des accents
function string.accent(ligne)
ligne = ligne:gsub("ô", "ô"):gsub("â", "â"):gsub("é", "é"):gsub("è", "è"):gsub("à", "à"):gsub("ç", "ç"):gsub("ê", "ê"):gsub("ö", "ö"):gsub("î", "î"):gsub("ï", "ï"):gsub("û", "û"):gsub("ü", "ü"):gsub("'", "'"):gsub("Poudreries", "Bourrasques de neige"):gsub("É", "É")
return ligne
end
function string.balise(self, arg1, arg2)
local a, b, c
a,b = self:find(arg1)
if a ~= nil then
if b == nil then
b = a+1
else
b = b+1
end
c = self:find(arg2, b)
if c == nil then
c = b
else
c = c-1
end
end
return b, c
end
--Traitement information Quart de journée
function Prevision_Quart_T(fichier)
local pos1, pos2, icone, Descriptif, TempMax, TempMin, TempMaxR, TempMinR, Vdir, Vforce, Prec, Pluie, Neige, Humidite, Couverture, Rosee, Visibilite, parse
local file = assert(io.open(fichier, "rb") )
local line = file:read()
parse = 0
for line in file:lines() do
if string.find(line, '"details"') ~= nil then
parse = 1
end
if parse == 1 then
if string.find(line, 'class="icon i-') ~= nil then
pos1, pos2 = line:balise('-', '"')
icone = string.sub(line, pos1, pos2)
elseif string.find(line, '"cond"') ~= nil then
pos1, pos2 = line:balise('d">', '<')
Descriptif = line:sub(pos1, pos2):accent()
elseif string.find(line, '"temp"') ~= nil then
pos1, pos2 = line:balise('>', '<')
TempMax = string.sub(line, pos1, pos2)
elseif string.find(line, '"lo"') ~= nil then
pos1, pos2 = line:balise('Mn', '<')
TempMin = string.sub(line, pos1, pos2)
elseif string.find(line, '"realfeel"') ~= nil then
pos1, pos2 = line:balise('4; ', '&')
TempMaxR = string.sub(line, pos1, pos2)
pos1, pos2 = line:balise('/ ', '&')
TempMinR = string.sub(line, pos1, pos2)
elseif string.find(line, 'var d') ~= nil then
pos1, pos2 = line:balise("'", "'")
Vdir = string.gsub(string.sub(line, pos1, pos2), "W", "O")
elseif string.find(line, 'var s') ~= nil then
pos1, pos2 = line:balise("'", "'")
Vforce = line:sub(pos1, pos2):match("(%d+)")
elseif string.find(line, 'cipitations') ~= nil then
pos1, pos2 = line:balise("g>", "<")
Prec = line:sub(pos1, pos2):match("(%d+)")
elseif string.find(line, 'Pluie') ~= nil then
pos1, pos2 = line:balise("g>", " ")
Pluie = string.sub(line, pos1, pos2)
elseif string.find(line, 'Neige') ~= nil then
pos1, pos2 = line:balise("g>", " ")
Neige = string.sub(line, pos1, pos2)
elseif string.find(line, 'Humidit') ~= nil then
pos1, pos2 = line:balise("g>", "<")
Humidite = line:sub(pos1, pos2):match("(%d+)")
elseif string.find(line, 'Couverture') ~= nil then
pos1, pos2 = line:balise("g>", "<")
Couverture = line:sub(pos1, pos2):match("(%d+)")
elseif string.find(line, 'Point') ~= nil then
pos1, pos2 = line:balise("g>", "&")
Rosee = string.sub(line, pos1, pos2)
elseif string.find(line, 'Visibilit') ~= nil then
pos1, pos2 = line:balise("g>", " ")
Visibilite = string.sub(line, pos1, pos2)
end
end
end
io.close(file)
return {Icone=icone, CondMeteo=Descriptif, TempMax=TempMax, TempMin=TempMin, TempMaxR=TempMaxR, TempMinR=TempMinR, VentDir=Vdir, VentForce=Vforce, Humidite=Humidite, CouvNuage=Couverture, PointRosee=Rosee, ProbPrec=Prec, Visibilite=Visibilite, QNeige=Neige, QPluie=Pluie}
end
--Prévision
function prevision(fichier)
local iconej, iconen, Tmax, Tmin, Tmaxr, Tminr, ProbPrecj, ProbPrecn, Vdirj, Vdirn, Vforcej, Vforcen, Vrafalesj, Vrafalesn, Descriptifj, Descriptifn, UV, ProbOragesj, ProbOragesn, Precj, Precn, Pluiej, Pluien, Neigej, Neigen, Verglasj, Verglasn, Datej, LeverSoleil, CoucherSoleil, parse, pos1, pos2, LeverSoleilH, LeverSoleilM, CoucherSoleilH, CoucherSoleilM, histo, histo1, Histo_Max, Histo_Min
local file = assert(io.open(fichier, "rb") )
local line = file:read()
for line in file:lines() do
if string.find(line, '"details"') ~= nil then
parse = 1
end
if parse == 1 then
if string.find(line, 'class="icon i-') ~= nil then
pos1, pos2 = line:balise("-", '"')
if iconej == nil then
iconej = string.sub(line, pos1, pos2)
else
iconen = string.sub(line, pos1, pos2)
end
elseif string.find(line, '"temp"') ~= nil then
pos1, pos2 = line:balise('"temp">', '<')
if Tmax == nil then
Tmax = string.sub(line, pos1, pos2)
else
Tmin = string.sub(line, pos1, pos2)
end
elseif string.find(line, 'RealFeel®') ~= nil then
pos1, pos2 = line:balise(';', '&')
if Tmaxr == nil then
Tmaxr = string.sub(line, pos1, pos2)
else
Tminr = string.sub(line, pos1, pos2)
end
elseif string.find(line, 'cipitations ') ~= nil then
pos1, pos2 = line:balise('s ', '<')
if ProbPrecj == nil then
ProbPrecj = line:sub(pos1, pos2):match("(%d+)")
else
ProbPrecn = line:sub(pos1, pos2):match("(%d+)")
end
elseif string.find(line, 'var d') ~= nil then
pos1, pos2 = line:balise("'", "'")
if Vdirj == nil then
Vdirj = string.gsub(string.sub(line, pos1, pos2), "W", "O")
else
Vdirn = string.gsub(string.sub(line, pos1, pos2), "W", "O")
end
elseif string.find(line, 'var s') ~= nil then
pos1, pos2 = line:balise("'", "'")
if Vforcej == nil then
Vforcej = line:sub(pos1, pos2):match("(%d+)")
else
Vforcen = line:sub(pos1, pos2):match("(%d+)")
end
elseif string.find(line, 'Rafales') ~= nil then
pos1, pos2 = line:balise("> ", " ")
if Vrafalesj == nil then
Vrafalesj = line:sub(pos1, pos2):match("(%d+)")
if Vrafalesj == nil then Vrafalesj = Vforcen end
else
Vrafalesn = line:sub(pos1, pos2):match("(%d+)")
if Vrafalesn == nil then Vrafalesn = Vforcej end
end
elseif Descriptifn == nil and string.find(line, '<p>') ~= nil then
pos1, pos2 = line:balise(">", "<")
if Descriptifj == nil then
Descriptifj = string.sub(line, pos1, pos2):accent()
local troplong = string.find(Descriptifj, ";")
if troplong ~= nil then
Descriptifj = string.sub(Descriptifj, "1", troplong-1)
end
else
Descriptifn = string.sub(line, pos1, pos2):accent()
local troplong = string.find(Descriptifn, ";")
if troplong ~= nil then
Descriptifn = string.sub(Descriptifn, "1", troplong-1)
end
end
elseif string.find(line, 'UV') ~= nil then
pos1, pos2 = line:balise("g>", "<")
if UV == nil then
UV = string.sub(line, pos1, pos2)
end
elseif string.find(line, 'Orages') ~= nil then
pos1, pos2 = line:balise('">', "<")
if ProbOragesj == nil then
ProbOragesj = line:sub(pos1, pos2):match("(%d+)")
else
ProbOragesn = line:sub(pos1, pos2):match("(%d+)")
end
elseif string.find(line, 'cipitations:') ~= nil then
pos1, pos2 = line:balise("g>", " ")
if Precj == nil then
Precj = string.sub(line, pos1, pos2)
else
Precn = string.sub(line, pos1, pos2)
end
elseif string.find(line, 'Pluie:') ~= nil then
pos1, pos2 = line:balise('">', " ")
if Pluiej == nil then
Pluiej = string.sub(line, pos1, pos2)
else
Pluien = string.sub(line, pos1, pos2)
end
elseif string.find(line, 'Neige:') ~= nil then
pos1, pos2 = line:balise('">', " ")
if Neigej == nil then
Neigej = string.sub(line, pos1, pos2)
else
Neigen = string.sub(line, pos1, pos2)
end
elseif string.find(line, 'Verglas:') ~= nil then
pos1, pos2 = line:balise('">', " ")
if Verglasj == nil then
Verglasj = string.sub(line, pos1, pos2)
else
Verglasn = string.sub(line, pos1, pos2)
end
elseif string.find(line, 'Historique ') ~= nil then
pos1, pos2 = line:balise('- ', "<")
local j, m, a = line:sub(pos1, pos2):match("(%d+)/(%d+)/(%d+)")
Datej = os.time{year=a, month=m, day=j, hour=0}
elseif string.find(line, 'start"') ~= nil then
pos1, pos2 = line:balise('>', "<")
if LeverSoleil == nil then
LeverSoleil = string.sub(line, pos1, pos2)
LeverSoleilH, LeverSoleilM = LeverSoleil:match("(%d+):(%d+)")
end
elseif string.find(line, 'finish"') ~= nil then
pos1, pos2 = line:balise('>', "<")
if CoucherSoleil == nil then
CoucherSoleil = string.sub(line, pos1, pos2)
CoucherSoleilH, CoucherSoleilM = CoucherSoleil:match("(%d+):(%d+)")
end
elseif string.find(line, '<td class="high">') ~= nil then
histo = 1
elseif string.find(line, '<td>') ~= nil and histo ~= nil then
if histo1 == nil then
histo1 = 1
else
pos1, pos2 = line:balise('>', "&")
if Histo_Max == nil then
histo1 = nil
histo = nil
Histo_Max = string.sub(line, pos1, pos2)
elseif Histo_Min == nil then
Histo_Min = string.sub(line, pos1, pos2)
end
end
end
end
end
io.close(file)
return { Icone=iconej, CondMeteo=Descriptifj, Temp=Tmax, TempRes=Tmaxr, ProbPrec=ProbPrecj, VentDir=Vdirj, VentForce=Vforcej, VentRafales=Vrafalesj, Uv=UV, ProbOrage=ProbOragesj, NivPrec=Precj, QPluie=Pluiej, QNeige=Neigej, EVerglas=Verglasj }, { Icone=iconen, CondMeteo=Descriptifn, Temp=Tmin, TempRes=Tminr, ProbPrec=ProbPrecn, VentDir=Vdirn, VentForce=Vforcen, VentRafales=Vrafalesn, ProbOrage=ProbOragesn, NivPrec=Precn, QPluie=Pluien, QNeige=Neigen, EVerglas=Verglasn }, { Jour=Datej, LeverSoleil=LeverSoleil, LeverSoleilH=LeverSoleilH, LeverSoleilM=LeverSoleilM, CoucherSoleil=CoucherSoleil, CoucherSoleilH=CoucherSoleilH, CoucherSoleilM=CoucherSoleilM, Histo_Max=Histo_Max, Histo_Min=Histo_Min }
end
--Infos condition courante
function current(fichier)
local pos1, pos2, icone, Descriptif, Temp, Tempr, Vdir, Vforce, Humidite, Pression, Couverture, UV, Rosee, Prec, Visibilite, Date, Ville, latitude, longitude, geo, parse
local file = assert(io.open(fichier, "rb") )
local line = file:read()
geo = nil
parse = nil
for line in file:lines() do
if string.find(line, '"details"') ~= nil then
parse = 1
end
if parse == 1 then
if string.find(line, 'class="icon i-') ~= nil then
pos1, pos2 = line:balise('-', '"')
icone = string.sub(line, pos1, pos2)
elseif string.find(line, '"cond"') ~= nil then
pos1, pos2 = line:balise('"cond">', '<')
Descriptif = string.sub(line, pos1, pos2):accent()
pos1, pos2 = line:balise('"temp">', '<')
Temp = string.sub(line, pos1, pos2)
pos1, pos2 = line:balise('; ', '<')
Tempr = string.sub(line, pos1, pos2)
elseif string.find(line, 'var d') ~= nil then
pos1, pos2 = line:balise("'", "'")
Vdir = string.gsub(string.sub(line, pos1, pos2), "W", "O")
elseif string.find(line, 'var s') ~= nil then
pos1, pos2 = line:balise("'", "'")
Vforce = line:sub(pos1, pos2):match("(%d+)")
elseif string.find(line, 'Humidit') ~= nil then
pos1, pos2 = line:balise("g>", "<")
Humidite = line:sub(pos1, pos2):match("(%d+)")
elseif string.find(line, 'Pression') ~= nil then
pos1, pos2 = line:balise("g>", " k")
Pression = line:sub(pos1, pos2)*10
elseif string.find(line, 'Couverture') ~= nil then
pos1, pos2 = line:balise("g>", "<")
Couverture = line:sub(pos1, pos2):match("(%d+)")
elseif string.find(line, 'UV') ~= nil then
if UV == nil then
pos1, pos2 = line:balise("g>", "<")
UV = string.sub(line, pos1, pos2)
end
elseif string.find(line, 'Point') ~= nil then
pos1, pos2 = line:balise("g>", "&")
Rosee = string.sub(line, pos1, pos2)
elseif string.find(line, 'cipitations') ~= nil then
pos1, pos2 = line:balise("g>", " ")
Prec = string.sub(line, pos1, pos2)
elseif string.find(line, 'Visibilit') ~= nil then
pos1, pos2 = line:balise("g>", " ")
Visibilite = string.sub(line, pos1, pos2)
elseif string.find(line, 'Historique ') ~= nil then
pos1, pos2 = line:balise("- ", "<")
local j, m, a = line:sub(pos1, pos2):match("(%d+)/(%d+)/(%d+)")
Date = os.time{year=a, month=m, day=j, hour=0}
elseif string.find(line, 'latitude') ~= nil then
geo = 1
elseif string.find(line, 'title" ') ~= nil then
pos1, pos2 = line:balise('e="', '"')
if Ville == nil then
Ville = string.sub(line, pos1, pos2):accent()
end
if geo ~= nil then
if latitude ~= nil then
longitude = string.sub(line, pos1, pos2)
end
if latitude == nil then
latitude = string.sub(line, pos1, pos2)
end
end
end
end
end
io.close(file)
return {Icone=icone, Cond=Descriptif, Temp=Temp, Tempr=Tempr, VentDir=Vdir, VentForce=Vforce, Humidite=Humidite, Pression=Pression, CouvNuage=Couverture, Uv=UV, PointRosee=Rosee, QPrec=Prec, Visibilite=Visibilite, Date=Date, Ville=Ville, latitude=latitude, longitude=longitude}
end
--Infos lunaison
function lunaison(r)
s = "${exec wget --tries=3 -q -O "..r.."/cal_lunaire http://www.calendrier-lunaire.net/}"
conky_parse( s )
local file = assert(io.open(r..'/cal_lunaire', "rb") )
local line = file:read()
for line in file:lines() do
local pos1 = string.find(line, '">')
local pos2 = string.find(line, "</", pos1)
local pos1, pos2 = line:balise('">', "</")
if string.find(line, "ephemerides_1") ~= nil then
pos1, pos2 = line:balise('src="', '" /')
s = "${exec wget --tries=3 -q -O "..r.."/lune.png http://www.calendrier-lunaire.net/"..string.sub(line, pos1, pos2).."}"
conky_parse( s )
conky_parse( "${exec convert "..r.."/lune.png -transparent '#091a2a' "..r.."/lune.png}" )
elseif string.find(line, "<h2>") ~= nil then
ephemerides1 = string.sub(line, pos1, pos2)
local pos3 = string.find(line, 'n>', pos2)+3
local pos4 = string.find(line, "</", pos2+3)-1
ephemerides2 = string.sub(line, pos3, pos4)
ephemerides = ephemerides1.." "..ephemerides2
elseif string.find(line, "Visibilit") ~= nil then
Visibilite = string.sub(line, pos1, pos2-2)
elseif string.find(line, "Phases") ~= nil then
Phases = string.gsub(string.sub(line, pos1, pos2), "é", "é")
local pos3 = string.find(Phases, ',')
Phases1 = string.sub(Phases, 0, pos3-1)
Phases2 = string.sub(Phases, pos3+2)
elseif string.find(line, "Noeud lunaire") ~= nil then
Noeud_lunaire = line:sub(pos1, pos2):match("(%d+)")
if Noeud_lunaire == nil then Noeud_lunaire = line:sub(pos1, pos2) end
elseif string.find(line, "Apog") ~= nil then
Apogee = line:sub(pos1, pos2):match("(%d+)")
if Apogee == nil then Apogee = line:sub(pos1, pos2) end
elseif string.find(line, "Perig") ~= nil then
Perigee = line:sub(pos1, pos2):match("(%d+)")
if perigee == nil then Perigee = line:sub(pos1, pos2) end
elseif string.find(line, "Distance") ~= nil then
Distance = line:sub(pos1, pos2):match("(%d+)")
elseif string.find(line, "Age de la Lune") ~= nil then
Age = string.sub(line, pos1, pos2)
elseif string.find(line, "La Lune se") ~= nil then
Lever_LuneHeure, Lever_LuneMinute = line:sub(pos1, pos2):match("(%d+):(%d+)")
if Lever_LuneHeure == nil then Lever_LuneHeure, Lever_LuneMinute = "N/A", "N/A" end
local pos3 = string.find(line, '">', pos2)+2
local pos4 = string.find(line, "</", pos3+3)-1
Coucher_LuneHeure, Coucher_LuneMinute = line:sub(pos3, pos4):match("(%d+):(%d+)")
if Coucher_LuneHeure == nil then Coucher_LuneHeure, Coucher_LuneMinute = "N/A", "N/A" end
elseif string.find(line, "eclipse_partielle") ~= nil then
local pos3 = string.find(line, '">', pos1+1)
local a = string.sub(line, pos3+2, pos2)
Eclipse_partielle = datelune(a)
elseif string.find(line, "eclipse_totale") ~= nil then
local pos3 = string.find(line, '">', pos1+1)
local a = string.sub(line, pos3+2, pos2)
Eclipse_total = datelune(a)
end
end
io.close(file)
end
function datelune(d)
local j, m, a, h, min = d:gsub("Janvier", "01"):gsub("Février", "02"):gsub("Mars", "03"):gsub("Avril", "04"):gsub("Mais", "05"):gsub("Juin", "06"):gsub("Juillet", "07"):gsub("Août", "08"):gsub("septembre", "09"):gsub("Octobre", "10"):gsub("Novembre", "11"):gsub("Décembre", "12"):match("(%d+) (%d+) (%d+) <br /> (%d+):(%d+)")
d = os.time{year=a, month=m, day=j, hour=h, min=min}
return d
end
--Détermine icône vent
function direction_vent(i)
if i == "Calme" then
return 0
elseif i == "N" then
return 10
elseif i == "NNE" then
return 11
elseif i == "NE" then
return 12
elseif i == "ENE" then
return 13
elseif i == "E" then
return 14
elseif i == "ESE" then
return 15
elseif i == "SE" then
return 16
elseif i == "SSE" then
return 17
elseif i == "S" then
return 2
elseif i == "SSO" then
return 3
elseif i == "SO" then
return 4
elseif i == "OSO" then
return 5
elseif i == "O" then
return 6
elseif i == "ONO" then
return 7
elseif i == "NO" then
return 8
elseif i == "NNO" then
return 9
else
return 1
end
end
--Renvoi vent direction pleine en toute lettre
function vent_plein(d)
local b
if string.len(d) == 1 then
if string.find(d, "N") ~= nil then
b = string.gsub(d, "N", "Nord")
elseif string.find(d, "S") ~= nil then
b = string.gsub(d, "S", "Sud")
elseif string.find(d, "E") ~= nil then
b = string.gsub(d, "E", "Est")
elseif string.find(d, "O") ~= nil then
b = string.gsub(d, "O", "Ouest")
end
else
b = d
end
return b
end
--Détermine l'icône vent en tenant conte de la force du vent
function icone_vent(d, fo)
local f = tonumber(fo)
local n
if f <= Palier then
n = d
elseif f <= Palier*2 then
n = d + 17
elseif f <= Palier*3 then
n = d + 34
elseif f >= (Palier*3)+1 then
n = d + 51
end
if n <= 9 then
n = "0"..n
end
return n..".png"
end
--Découpage descriptions sur deux lignes
function decoupage(d)
local l1, l2, n, p1, p2, n1, n2, l1b, l2b, dm, dp
if string.len(d) >= 22 then
n = math.ceil(string.len(d)/2)
dm = string.sub(d, 1, n)
dp = string.sub(d, n)
p1 = string.find(dp, " ")
local b = 1
p2 = nil
if string.find(dm, ' ') then
while p2 == nil do
b = b+1
p2 = string.find(dm, ' ', -b)
end
end
if p1 ~= nil then p1 = n+p1-1 end
if p1 == nil and p2 == nil then p1 = string.find(d, " ") end
if p2 == nil then p2 = p1 end
if p1 == nil then p1 = p2 end
if p1-n >= n-p2 then
l1b = string.sub(d, 1, p2-1)
l2b = string.sub(d, p2+1)
else
l1b = string.sub(d, 1, p1-1)
l2b = string.sub(d, p1+1)
end
else
l1b = d
l2b = " "
end
n1 = math.ceil((22 - string.len(l1b))/2)
l1 = string.rep(" ", n1)..l1b
n2 = math.ceil((22 - string.len(l2b))/2)
l2 = string.rep(" ", n2)..l2b
--Retour information avec espaces ligne 1 & 2 et sans espaces ligne 1 & 2
return l1, l2, l1b, l2b
end
--Information Matin
function Prevision_Matin(a, j, x)
local i = j+x
local s = '${exec wget --tries=3 -q --load-cookies '..Rep..'/cookie -O '..Rep..'/Matin'..j..' '..a..'?day='..i..'}'
conky_parse( s )
conditionMatin[j] = Prevision_Quart_T(Rep..'/Matin'..j)
if conditionMatin[j].VentDir == "CLM" then
conditionMatin[j].VentDir = "Calme"
conditionMatin[j].VentForce = "0"
end
conditionMatin[j].VentIcone = icone_vent(direction_vent(conditionMatin[j].VentDir), conditionMatin[j].VentForce)
conditionMatin[j].VentP = vent_plein(conditionMatin[j].VentDir)
conditionMatin[j].CondMeteo1, conditionMatin[j].CondMeteo2, conditionMatin[j].CondMeteo1se, conditionMatin[j].CondMeteo2se = decoupage(conditionMatin[j].CondMeteo)
print("Matin "..j.." Ok")
end
--Information Après-midi
function Prevision_AM(a, j, x)
local i = j+x
local s = '${exec wget --tries=3 -q --load-cookies '..Rep..'/cookie -O '..Rep..'/ApresMidi'..j..' '..a..'?day='..i..'}'
conky_parse( s )
conditionAM[j] = Prevision_Quart_T(Rep..'/ApresMidi'..j)
if conditionAM[j].VentDir == "CLM" then
conditionAM[j].VentDir = "Calme"
conditionAM[j].VentForce = "0"
end
conditionAM[j].VentIcone = icone_vent(direction_vent(conditionAM[j].VentDir), conditionAM[j].VentForce)
conditionAM[j].VentP = vent_plein(conditionAM[j].VentDir)
conditionAM[j].CondMeteo1, conditionAM[j].CondMeteo2, conditionAM[j].CondMeteo1se, conditionAM[j].CondMeteo2se = decoupage(conditionAM[j].CondMeteo)
print("Apres Midi "..j.." Ok")
end
--Information Soirée
function Prevision_Soiree(a, j, x)
local i = j+x
local s = '${exec wget --tries=3 -q --load-cookies '..Rep..'/cookie -O '..Rep..'/Soiree'..j..' '..a..'?day='..i..'}'
conky_parse( s )
conditionSoiree[j] = Prevision_Quart_T(Rep..'/Soiree'..j)
if conditionSoiree[j].VentDir == "CLM" then
conditionSoiree[j].VentDir = "Calme"
conditionSoiree[j].VentForce = "0"
end
conditionSoiree[j].VentIcone = icone_vent(direction_vent(conditionSoiree[j].VentDir), conditionSoiree[j].VentForce)
conditionSoiree[j].VentP = vent_plein(conditionSoiree[j].VentDir)
conditionSoiree[j].CondMeteo1, conditionSoiree[j].CondMeteo2, conditionSoiree[j].CondMeteo1se, conditionSoiree[j].CondMeteo2se = decoupage(conditionSoiree[j].CondMeteo)
print("Soiree "..j.." Ok")
end
--Information Nuit
function Prevision_Nuit(a, j, x)
local i = j+x
local s = '${exec wget --tries=3 -q --load-cookies '..Rep..'/cookie -O '..Rep..'/Nuit'..j..' '..a..'?day='..i..'}'
conky_parse( s )
conditionNoct[j] = Prevision_Quart_T(Rep..'/Nuit'..j)
if conditionNoct[j].VentDir == "CLM" then
conditionNoct[j].VentDir = "Calme"
conditionNoct[j].VentForce = "0"
end
conditionNoct[j].VentIcone = icone_vent(direction_vent(conditionNoct[j].VentDir), conditionNoct[j].VentForce)
conditionNoct[j].VentP = vent_plein(conditionNoct[j].VentDir)
conditionNoct[j].CondMeteo1, conditionNoct[j].CondMeteo2, conditionNoct[j].CondMeteo1se, conditionNoct[j].CondMeteo2se = decoupage(conditionNoct[j].CondMeteo)
print("Nuit "..j.." Ok")
end
--Traitement infos prévisions (15 jours max) jour 1 = aujourd'hui
function jour_n(a, j, x)
local i = j+x
local s = '${exec wget --tries=3 -q --load-cookies '..Rep..'/cookie -O '..Rep..'/details'..j..' '..a..'?day='..i..'}'
conky_parse( s )
conditionJour[j], conditionNuit[j], InfoJour[j] = prevision(Rep..'/details'..j)
if conditionJour[j].VentDir == "CLM" then
conditionJour[j].VentDir = "Calme"
conditionJour[j].VentForce = "0"
end
conditionJour[j].VentIcone = icone_vent(direction_vent(conditionJour[j].VentDir), conditionJour[j].VentForce)
conditionJour[j].RafalesIcone = icone_vent(direction_vent(conditionJour[j].VentDir), conditionJour[j].VentRafales)
conditionJour[j].VentP = vent_plein(conditionJour[j].VentDir)
conditionJour[j].CondMeteo1, conditionJour[j].CondMeteo2, conditionJour[j].CondMeteo1se, conditionJour[j].CondMeteo2se = decoupage(conditionJour[j].CondMeteo)
if conditionNuit[j].VentDir == "Calme" then
conditionNuit[j].VentForce = "0"
end
conditionNuit[j].VentIcone = icone_vent(direction_vent(conditionNuit[j].VentDir), conditionNuit[j].VentForce)
conditionNuit[j].RafalesIcone = icone_vent(direction_vent(conditionNuit[j].VentDir), conditionNuit[j].VentRafales)
conditionNuit[j].VentP = vent_plein(conditionNuit[j].VentDir)
conditionNuit[j].CondMeteo1, conditionNuit[j].CondMeteo2, conditionNuit[j].CondMeteo1se, conditionNuit[j].CondMeteo2se = decoupage(conditionNuit[j].CondMeteo)
print("Prévision "..j.." Ok")
end
--initialisation paramètres
function conky_init(cfg)
local cmd1, pos1
local home = os.getenv("HOME")
cfg = string.gsub(cfg, "~", home)
cfg = string.gsub(cfg, "$HOME", home)
fichier_init = cfg
local file = assert(io.open(cfg, "rb") )
local line = file:read()
for line in file:lines() do
pos1 = string.find(line, '#')
if pos1 ~= nil then
line = string.sub(line, 1, pos1-1)
end
pos1 = string.find(line, '=')
if string.find(line, 'repsauv=') ~= nil then
repsauv = string.sub(line, pos1+1)
elseif string.find(line, 'TempShell=') ~= nil then
r = string.sub(line, pos1+1)
elseif string.find(line, 'web=') ~= nil then
cmd1 = string.sub(line, pos1+1)
elseif string.find(line, 'periode=') ~= nil then
jours = string.sub(line, pos1+1)
elseif string.find(line, 'matinée=') ~= nil then
matin = string.sub(line, pos1+1)
elseif string.find(line, 'am=') ~= nil then
apresmidi = string.sub(line, pos1+1)
elseif string.find(line, 'soiree=') ~= nil then
soiree = string.sub(line, pos1+1)
elseif string.find(line, 'nuit=') ~= nil then
nuit = string.sub(line, pos1+1)
elseif string.find(line, 'Palier=') ~= nil then
Palier = tonumber(string.sub(line, pos1+1))
elseif string.find(line, 'update=') ~= nil then
delais = string.sub(line, pos1+1)
end
end
io.close(file)
r = r:gsub("~", home):gsub("$HOME", home)
repsauv = repsauv:gsub("~", home):gsub("$HOME", home)
print("", "version = "..Version.."\n", "web = "..cmd1.."\n", "Pévision Nb jours = "..jours.."\n", "Pévision Matin = "..matin.."\n", "Pévision Après Midi = "..apresmidi.."\n", "Pévision Soirée = "..soiree.."\n", "Pévision Nuit = "..nuit.."\n", "Délais = "..delais.."\n", "Chemin de travail = "..r.."\n","Palier = "..Palier.."\n", "Chemin de sauvegarde = "..repsauv)
--Création répertoire de travail
l = cmd1:match("/(%d+)")
if string.find(cmd1, 'forecast') ~= nil then
pos1 = string.find(cmd1, '/weather')
cmd = string.sub(cmd1, 0, pos1-1)
else
pos1 = string.find(cmd1, '/current')
cmd = string.sub(cmd1, 0, pos1-1)
end
local bar, bar1
local l1 = string.gsub(cmd, '/'..l, "" )
local b = 1
while bar1 == nil do
b = b+1
bar1 = string.find(l1, '/', -b)
end
l1 = string.sub(l1, bar1+1)
Rep = r.."/"..l1.."/"..l
if os.execute("cd "..Rep) ~= 0 then
os.execute("mkdir "..r.."/"..l1.."&& mkdir "..Rep)
end
--initialisation compteurs
t = os.time()-delais
tc = t
start = 1
--Vérification existence repsauv
if os.execute("cd "..repsauv) ~= 0 then
--création de repsauv si inexistant
local pos1 = 1
local chemin = nil
local cheminsup = nil
while pos1 ~= nil do
pos1 = string.find(repsauv, '/', pos1+1)
if pos1 ~= nil then
cheminsup = string.sub(repsauv, pos1)
chemin = string.gsub(repsauv, cheminsup, "")
else
cheminsup = ""
chemin = repsauv
end
if os.execute("cd "..chemin) ~= 0 then
os.execute("mkdir "..chemin)
end
end
end
if not existe(repsauv.."/CondCour") then
conky_Meteo_enligne()
end
MAJ ="0"
end
--Mise à jour météo
function conky_Meteo_Maj()
local s = '${if_gw}${lua conky_Meteo_enligne}${else}${lua conky_Meteo_horsligne}${endif}'
conky_parse( s )
return " "
end
--hors ligne récupération de données
function conky_Meteo_horsligne()
if dermodif == nil or dermodif ~= conky_parse("${exec date -r "..repsauv.."/CondCour '+%s'}") then
dermodif=conky_parse("${exec date -r "..repsauv.."/CondCour '+%s'}")
--Récupération dernière condition courante
local file = assert(io.open(repsauv.."/CondCour", "r") )
local line = file:read()
local i = 0
local donee = {}
for line in file:lines() do
i = i+1
donee[i] = line
end
local t = {"Icone", "Tempr", "Temp", "Cond", "CondMeteo1", "CondMeteo2", "CondMeteo1se", "CondMeteo2se", "VentDir", "VentPlein", "VentForce", "VentIcone", "Humidite", "PointRosee", "Pression", "Visibilite", "Date", "Ville", "CouvNuage", "Uv", "QPrec", "latitude", "longitude"}
for i = 1,23 do
conditioncourante[t[i]] = donee[i]
end
time = donee[24]
io.close(file)
--Récupération prévision
for j = 1,jours do
local file = assert(io.open(repsauv.."/prevision"..j, "r"))
local line = file:read()
local i = 0
local donee = {}
for line in file:lines() do
i = i+1
donee[i] = line
end
local info = {}
local t = {"CondMeteo", "CondMeteo1", "CondMeteo2", "CondMeteo1se", "CondMeteo2se", "Temp", "TempRes", "ProbPrec", "VentDir", "VentP", "VentForce", "VentRafales", "Uv", "ProbOrage", "NivPrec", "QPluie", "QNeige", "Icone", "VentIcone", "RafalesIcone", "EVerglas"}
conditionJour[j] = {}
for i = 1, 21 do
info[t[i]] = donee[i]
end
conditionJour[j] = info
local info1 = {}
t = {"CondMeteo", "CondMeteo1", "CondMeteo2", "CondMeteo1se", "CondMeteo2se", "Temp", "TempRes", "ProbPrec", "VentDir", "VentP", "VentForce", "VentRafales", "ProbOrage", "NivPrec", "QPluie", "QNeige", "Icone", "VentIcone", "RafalesIcone", "EVerglas"}
conditionNuit[j] = {}
for i = 22, 41 do
info1[t[i-21]] = donee[i]
end
conditionNuit[j] = info1
local info2 = {}
t= {"Jour", "LeverSoleilH", "LeverSoleilM", "CoucherSoleilH", "CoucherSoleilM", "Histo_Max", "Histo_Min"}
InfoJour[j] = {}
for i = 42, 48 do
info2[t[i-41]] = donee[i]
end
InfoJour[j] = info2
io.close(file)
if matin == "oui" then
local file = assert(io.open(repsauv.."/matin"..j, "r"))
local line = file:read()
local i = 0
local donee = {}
for line in file:lines() do
i = i+1
donee[i] = line
end
local t = {"CondMeteo", "CondMeteo1", "CondMeteo2", "CondMeteo1se", "CondMeteo2se", "TempMax", "TempMin", "TempMaxR", "TempMinR", "ProbPrec", "VentDir", "VentP", "VentForce", "QPluie", "QNeige", "Humidite", "CouvNuage", "PointRosee", "Visibilite", "Icone", "VentIcone"}
conditionMatin[j] = {}
local info3 = {}
for i = 1, 21 do
info3[t[i]] = donee[i]
end
conditionMatin[j] = info3
io.close(file)
end
if apresmidi == "oui" then
local file = assert(io.open(repsauv.."/ApresMidi"..j, "r"))
local line = file:read()
local i = 0
local donee = {}
for line in file:lines() do
i = i+1
donee[i] = line
end
local t = {"CondMeteo", "CondMeteo1", "CondMeteo2", "CondMeteo1se", "CondMeteo2se", "TempMax", "TempMin", "TempMaxR", "TempMinR", "ProbPrec", "VentDir", "VentP", "VentForce", "QPluie", "QNeige", "Humidite", "CouvNuage", "PointRosee", "Visibilite", "Icone", "VentIcone"}
conditionAM[j] = {}
local info3 = {}
for i = 1, 21 do
info3[t[i]] = donee[i]
end
conditionAM[j] = info3
io.close(file)
end
if soiree == "oui" then
local file = assert(io.open(repsauv.."/Soiree"..j, "r"))
local line = file:read()
local i = 0
local donee = {}
for line in file:lines() do
i = i+1
donee[i] = line
end
local t = {"CondMeteo", "CondMeteo1", "CondMeteo2", "CondMeteo1se", "CondMeteo2se", "TempMax", "TempMin", "TempMaxR", "TempMinR", "ProbPrec", "VentDir", "VentP", "VentForce", "QPluie", "QNeige", "Humidite", "CouvNuage", "PointRosee", "Visibilite", "Icone", "VentIcone"}
conditionSoiree[j] = {}
local info3 = {}
for i = 1, 21 do
info3[t[i]] = donee[i]
end
conditionSoiree[j] = info3
io.close(file)
end
if nuit == "oui" then
local file = assert(io.open(repsauv.."/Nuit"..j, "r"))
local line = file:read()
local i = 0
local donee = {}
for line in file:lines() do
i = i+1
donee[i] = line
end
local t = {"CondMeteo", "CondMeteo1", "CondMeteo2", "CondMeteo1se", "CondMeteo2se", "TempMax", "TempMin", "TempMaxR", "TempMinR", "ProbPrec", "VentDir", "VentP", "VentForce", "QPluie", "QNeige", "Humidite", "CouvNuage", "PointRosee", "Visibilite", "Icone", "VentIcone"}
conditionNoct[j] = {}
local info3 = {}
for i = 1, 21 do
info3[t[i]] = donee[i]
end
conditionNoct[j] = info3
io.close(file)
end
end
--Récupération lunaison
local file = assert(io.open(repsauv.."/lunaison", "r"))
local line = file:read()
local i = 0
local donee = {}
for line in file:lines() do
i = i+1
donee[i] = line
end
ephemerides = donee[1]
ephemerides1 = donee[2]
ephemerides2 = donee[3]
Visibilite = donee[4]
Phases = donee[5]
Phases1 = donee[6]
Phases2 = donee[7]
Noeud_lunaire = donee[8]
Apogee = donee[9]
Perigee = donee[10]
Distance = donee[11]
Age = donee[12]
Lever_LuneHeure = donee[13]
Lever_LuneMinute = donee[14]
Coucher_LuneHeure = donee[15]
Coucher_LuneMinute = donee[16]
Eclipse_partielle = donee[17]
Eclipse_total = donee[18]
io.close(file)
if MAJ == "0" then
MAJ = "1"
else
MAJ = "0"
end
collectgarbage()
end
return ""
end
--en ligne mise à jour
function conky_Meteo_enligne()
if tonumber(delais) <= os.difftime(os.time(), t) then
t = os.time()
time = t
conditioncourante.Date = nil
while conditioncourante.Date == nil do
local s = '${exec wget --tries=3 -q --save-cookies '..Rep..'/cookie -O '..Rep..'/curr_cond_raw '..cmd..'/current-weather/'..l..'}'
conky_parse( s )
conditioncourante = current(Rep.."/curr_cond_raw")
if conditioncourante.VentDir == "CLM" then
conditioncourante.VentDir = "Calme"
conditioncourante.VentForce = "0"
end
conditioncourante.VentIcone = icone_vent(direction_vent(conditioncourante.VentDir), conditioncourante.VentForce)
conditioncourante.VentPlein = vent_plein(conditioncourante.VentDir)
conditioncourante.CondMeteo1, conditioncourante.CondMeteo2, conditioncourante.CondMeteo1se, conditioncourante.CondMeteo2se = decoupage(conditioncourante.Cond)
print("Condition courante Ok")
if 14400 <= os.difftime(os.time(), tc) or start == 1 then
start = 2
tc = t
local addr_week = cmd..'/daily-weather-forecast/'..l
jour_n(addr_week, 1, 0)
if conditioncourante.Date == InfoJour[1].Jour then
for i = 2,jours do jour_n(addr_week, i, 0) end
else
for i = 1,jours do jour_n(addr_week, i, 1) end
end
--infos matin si demandée
if matin == "oui" then
addr_week = cmd..'/morning-weather-forecast/'..l
if conditioncourante.Date == InfoJour[1].Jour then
for i = 1,jours do Prevision_Matin(addr_week, i, 0) end
else
for i = 1,jours do Prevision_Matin(addr_week, i, 1) end
end
end
--infos Après Midi si demandée
if apresmidi == "oui" then
addr_week = cmd..'/afternoon-weather-forecast/'..l
if conditioncourante.Date == InfoJour[1].Jour then
for i = 1,jours do Prevision_AM(addr_week, i, 0) end
else
for i = 1,jours do Prevision_AM(addr_week, i, 1) end
end
end
--infos Soirée si demandée
if soiree == "oui" then
addr_week = cmd..'/evening-weather-forecast/'..l
if conditioncourante.Date == InfoJour[1].Jour then
for i = 1,jours do Prevision_Soiree(addr_week, i, 0) end
else
for i = 1,jours do Prevision_Soiree(addr_week, i, 1) end
end
end
--infos Nuit si demandée
if nuit == "oui" then
addr_week = cmd..'/overnight-weather-forecast/'..l
if conditioncourante.Date == InfoJour[1].Jour then
for i = 1,jours do Prevision_Nuit(addr_week, i, 0) end
else
for i = 1,jours do Prevision_Nuit(addr_week, i, 1) end
end
end
end -- fin mise à jour compète
end
lunaison(r)
print("lunaison Ok")
--lancement sauvegarde
if repsauv ~= nil then
sauvegarde()
end
if MAJ == "0" then
MAJ = "1"
else
MAJ = "0"
end
collectgarbage()
end
return " "
end
--Retour d'information météo
--Condition courrante
function conky_Meteo_IconeM(r, p, s, f)
if os.date("%H%M", os.time()) <= InfoJour[1].CoucherSoleilH..InfoJour[1].CoucherSoleilM and os.date("%H%M", os.time()) >= InfoJour[1].LeverSoleilH..InfoJour[1].LeverSoleilM then
return "${image "..r.."/jour/"..conditioncourante.Icone..".png -p "..p.." -s "..s.." -f "..f.."}"
else
return "${image "..r.."/nuit/"..conditioncourante.Icone..".png -p "..p.." -s "..s.." -f "..f.."}"
end
end
function conky_Meteo_TempRes()
return conditioncourante.Tempr
end
function conky_Meteo_TempAct()
return conditioncourante.Temp
end
function conky_Meteo_CondMeteo()
return conditioncourante.Cond
end
function conky_Meteo_CondMeteo1()
return conditioncourante.CondMeteo1
end
function conky_Meteo_CondMeteo2()
return conditioncourante.CondMeteo2
end
function conky_Meteo_CondMeteo1se()
return conditioncourante.CondMeteo1se
end
function conky_Meteo_CondMeteo2se()
return conditioncourante.CondMeteo2se
end
function conky_Meteo_VentDir()
return conditioncourante.VentDir
end
function conky_Meteo_VentDirP()
return conditioncourante.VentPlein
end
function conky_Meteo_VentForce()
return conditioncourante.VentForce
end
function conky_Meteo_IconeV(r, p, s, f)
return "${image "..r.."/"..conditioncourante.VentIcone.." -p "..p.." -s "..s.." -f "..f.."}"
end
function conky_Meteo_Humidite()
return tonumber(conditioncourante.Humidite)
end
function conky_Meteo_Rose()
return tonumber(conditioncourante.PointRosee)
end
function conky_Meteo_Pression()
return tonumber(conditioncourante.Pression)
end
function conky_Meteo_Visibilite()
return tonumber(conditioncourante.Visibilite)
end
function conky_Meteo_Date(format)
format = string.gsub(format, "_", " ")
return trad_date(os.date(format, conditioncourante.Date))
end
function conky_Meteo_Ville()
return conditioncourante.Ville
end
function conky_Meteo_CouvNuage(r)
if r == nil then r = 100 end
local Couv = (tonumber(conditioncourante.CouvNuage) / 100) * r
if Couv - math.floor(Couv) <= 0.5 then
Couv = math.floor(Couv)
else
Couv = math.ceil(Couv)
end
return Couv
end
function conky_Meteo_Uv()
return conditioncourante.Uv
end
function conky_Meteo_QPrec()
return conditioncourante.QPrec
end
function conky_Meteo_latitude()
return conditioncourante.latitude
end
function conky_Meteo_longitude()
return conditioncourante.longitude
end
function conky_Meteo_Heure()
return os.date("%H", time)
end
function conky_Meteo_Minute()
return os.date("%M", time)
end
--Prévision Météo
--Jour
function conky_Meteo_Jour_CondMeteo(j)
return conditionJour[tonumber(j)].CondMeteo
end
function conky_Meteo_Jour_CondMeteo1(j)
return conditionJour[tonumber(j)].CondMeteo1
end
function conky_Meteo_Jour_CondMeteo2(j)
return conditionJour[tonumber(j)].CondMeteo2
end
function conky_Meteo_Jour_CondMeteo1se(j)
return conditionJour[tonumber(j)].CondMeteo1se
end
function conky_Meteo_Jour_CondMeteo2se(j)
return conditionJour[tonumber(j)].CondMeteo2se
end
function conky_Meteo_Jour_Temp(j)
return tonumber(conditionJour[tonumber(j)].Temp)
end
function conky_Meteo_Jour_TempRes(j)
return tonumber(conditionJour[tonumber(j)].TempRes)
end
function conky_Meteo_Jour_ProbPrec(j)
return tonumber(conditionJour[tonumber(j)].ProbPrec)
end
function conky_Meteo_Jour_VentDir(j)
return conditionJour[tonumber(j)].VentDir
end
function conky_Meteo_Jour_VentDirP(j)
return conditionJour[tonumber(j)].VentP
end
function conky_Meteo_Jour_VentForce(j)
return tonumber(conditionJour[tonumber(j)].VentForce)
end
function conky_Meteo_Jour_VentRafales(j)
return tonumber(conditionJour[tonumber(j)].VentRafales)
end
function conky_Meteo_Jour_Uv(j)
return tonumber(conditionJour[tonumber(j)].Uv)
end
function conky_Meteo_Jour_ProbOrage(j)
return tonumber(conditionJour[tonumber(j)].ProbOrage)
end
function conky_Meteo_Jour_NivPrec(j)
return tonumber(conditionJour[tonumber(j)].NivPrec)
end
function conky_Meteo_Jour_QPluie(j)
return tonumber(conditionJour[tonumber(j)].QPluie)
end
function conky_Meteo_Jour_QNeige(j)
return tonumber(conditionJour[tonumber(j)].QNeige)
end
function conky_Meteo_Jour_EVerglas(j)
return tonumber(conditionJour[tonumber(j)].EVerglas)
end
function conky_Meteo_Jour_IconeM(r, p, s, f, j)
return "${image "..r.."/jour/"..conditionJour[tonumber(j)].Icone..".png -p "..p.." -s "..s.." -f "..f.."}"
end
function conky_Meteo_Jour_IconeV(r, p, s, f, j)
return "${image "..r.."/"..conditionJour[tonumber(j)].VentIcone.." -p "..p.." -s "..s.." -f "..f.."}"
end
function conky_Meteo_Jour_IconeR(r, p, s, f, j)
return "${image "..r.."/"..conditionJour[tonumber(j)].RafalesIcone.." -p "..p.." -s "..s.." -f "..f.."}"
end
--Nuit
function conky_Meteo_Nuit_CondMeteo(j)
return conditionNuit[tonumber(j)].CondMeteo
end
function conky_Meteo_Nuit_CondMeteo1(j)
return conditionNuit[tonumber(j)].CondMeteo1
end
function conky_Meteo_Nuit_CondMeteo2(j)
return conditionNuit[tonumber(j)].CondMeteo2
end
function conky_Meteo_Nuit_CondMeteo1se(j)
return conditionNuit[tonumber(j)].CondMeteo1se
end
function conky_Meteo_Nuit_CondMeteo2se(j)
return conditionNuit[tonumber(j)].CondMeteo2se
end
function conky_Meteo_Nuit_Temp(j)
return tonumber(conditionNuit[tonumber(j)].Temp)
end
function conky_Meteo_Nuit_TempRes(j)
return tonumber(conditionNuit[tonumber(j)].TempRes)
end
function conky_Meteo_Nuit_ProbPrec(j)
return tonumber(conditionNuit[tonumber(j)].ProbPrec)
end
function conky_Meteo_Nuit_VentDir(j)
return conditionNuit[tonumber(j)].VentDir
end
function conky_Meteo_Nuit_VentDirP(j)
return conditionNuit[tonumber(j)].VentP
end
function conky_Meteo_Nuit_VentForce(j)
return tonumber(conditionNuit[tonumber(j)].VentForce)
end
function conky_Meteo_Nuit_VentRafales(j)
return tonumber(conditionNuit[tonumber(j)].VentRafales)
end
function conky_Meteo_Nuit_ProbOrage(j)
return tonumber(conditionNuit[tonumber(j)].ProbOrage)
end
function conky_Meteo_Nuit_NivPrec(j)
return tonumber(conditionNuit[tonumber(j)].NivPrec)
end
function conky_Meteo_Nuit_QPluie(j)
return tonumber(conditionNuit[tonumber(j)].QPluie)
end
function conky_Meteo_Nuit_QNeige(j)
return tonumber(conditionNuit[tonumber(j)].QNeige)
end
function conky_Meteo_Nuit_EVerglas(j)
return tonumber(conditionNuit[tonumber(j)].EVerglas)
end
function conky_Meteo_Nuit_IconeM(r, p, s, f, j)
return "${image "..r.."/nuit/"..conditionNuit[tonumber(j)].Icone..".png -p "..p.." -s "..s.." -f "..f.."}"
end
function conky_Meteo_Nuit_IconeV(r, p, s, f, j)
return "${image "..r.."/"..conditionNuit[tonumber(j)].VentIcone.." -p "..p.." -s "..s.." -f "..f.."}"
end
function conky_Meteo_Nuit_IconeR(r, p, s, f, j)
return "${image "..r.."/"..conditionNuit[tonumber(j)].RafalesIcone.." -p "..p.." -s "..s.." -f "..f.."}"
end
--Infos sur la journée
function conky_Meteo_Jour(format, j)
format = string.gsub(format, "_", " ")
return trad_date(os.date(format, InfoJour[tonumber(j)].Jour))
end
function conky_Meteo_HLeverSoleil(j)
return InfoJour[tonumber(j)].LeverSoleilH
end
function conky_Meteo_MLeverSoleil(j)
return InfoJour[tonumber(j)].LeverSoleilM
end
function conky_Meteo_LeverSoleil(j)
return tonumber((InfoJour[tonumber(j)].LeverSoleilH*60)+InfoJour[tonumber(j)].LeverSoleilM)
end
function conky_Meteo_HCoucherSoleil(j)
return InfoJour[tonumber(j)].CoucherSoleilH
end
function conky_Meteo_MCoucherSoleil(j)
return InfoJour[tonumber(j)].CoucherSoleilM
end
function conky_Meteo_CoucherSoleil(j)
return tonumber((InfoJour[tonumber(j)].CoucherSoleilH*60)+InfoJour[tonumber(j)].CoucherSoleilM)
end
function conky_Meteo_HDureeJour(j)
return InfoJour[tonumber(j)].CoucherSoleilH-InfoJour[tonumber(j)].LeverSoleilH
end
function conky_Meteo_MDureeJour(j)
return os.date("%M", ((((InfoJour[tonumber(j)].CoucherSoleilH*3600)-3600)+(InfoJour[tonumber(j)].CoucherSoleilM*60))-(((InfoJour[tonumber(j)].LeverSoleilH*3600))+(InfoJour[tonumber(j)].LeverSoleilM*60))))
end
function conky_Meteo_Histo_Min(j)
return InfoJour[tonumber(j)].Histo_Min
end
function conky_Meteo_Histo_Max(j)
return InfoJour[tonumber(j)].Histo_Max
end
--Matin
function conky_Meteo_Matin_CondMeteo(j)
return conditionMatin[tonumber(j)].CondMeteo
end
function conky_Meteo_Matin_CondMeteo1(j)
return conditionMatin[tonumber(j)].CondMeteo1
end
function conky_Meteo_Matin_CondMeteo2(j)
return conditionMatin[tonumber(j)].CondMeteo2
end
function conky_Meteo_Matin_CondMeteo1se(j)
return conditionMatin[tonumber(j)].CondMeteo1se
end
function conky_Meteo_Matin_CondMeteo2se(j)
return conditionMatin[tonumber(j)].CondMeteo2se
end
function conky_Meteo_Matin_TempMax(j)
return tonumber(conditionMatin[tonumber(j)].TempMax)
end
function conky_Meteo_Matin_TempMin(j)
return tonumber(conditionMatin[tonumber(j)].TempMin)
end
function conky_Meteo_Matin_TempMaxRes(j)
return tonumber(conditionMatin[tonumber(j)].TempMaxR)
end
function conky_Meteo_Matin_TempMinRes(j)
return tonumber(conditionMatin[tonumber(j)].TempMinR)
end
function conky_Meteo_Matin_ProbPrec(j)
return tonumber(conditionMatin[tonumber(j)].ProbPrec)
end
function conky_Meteo_Matin_VentDir(j)
return conditionMatin[tonumber(j)].VentDir
end
function conky_Meteo_Matin_VentDirP(j)
return conditionMatin[tonumber(j)].VentP
end
function conky_Meteo_Matin_VentForce(j)
return tonumber(conditionMatin[tonumber(j)].VentForce)
end
function conky_Meteo_Matin_QPluie(j)
return tonumber(conditionMatin[tonumber(j)].QPluie)
end
function conky_Meteo_Matin_QNeige(j)
return tonumber(conditionMatin[tonumber(j)].QNeige)
end
function conky_Meteo_Matin_Humidite(j)
return tonumber(conditionMatin[tonumber(j)].Humidite)
end
function conky_Meteo_Matin_CouvNuage(j, r)
if r == nil then r = 100 end
local Couv = (tonumber(conditionMatin[tonumber(j)].CouvNuage) / 100) * r
if Couv - math.floor(Couv) <= 0.5 then
Couv = math.floor(Couv)
else
Couv = math.ceil(Couv)
end
return Couv
end
function conky_Meteo_Matin_Rose(j)
return tonumber(conditionMatin[tonumber(j)].PointRosee)
end
function conky_Meteo_Matin_Visibilite(j)
return tonumber(conditionMatin[tonumber(j)].Visibilite)
end
function conky_Meteo_Matin_IconeM(r, p, s, f, j)
return "${image "..r.."/jour/"..conditionMatin[tonumber(j)].Icone..".png -p "..p.." -s "..s.." -f "..f.."}"
end
function conky_Meteo_Matin_IconeV(r, p, s, f, j)
return "${image "..r.."/"..conditionMatin[tonumber(j)].VentIcone.." -p "..p.." -s "..s.." -f "..f.."}"
end
--Après Midi
function conky_Meteo_AM_CondMeteo(j)
return conditionAM[tonumber(j)].CondMeteo
end
function conky_Meteo_AM_CondMeteo1(j)
return conditionAM[tonumber(j)].CondMeteo1
end
function conky_Meteo_AM_CondMeteo2(j)
return conditionAM[tonumber(j)].CondMeteo2
end
function conky_Meteo_AM_CondMeteo1se(j)
return conditionAM[tonumber(j)].CondMeteo1se
end
function conky_Meteo_AM_CondMeteo2se(j)
return conditionAM[tonumber(j)].CondMeteo2se
end
function conky_Meteo_AM_TempMax(j)
return tonumber(conditionAM[tonumber(j)].TempMax)
end
function conky_Meteo_AM_TempMin(j)
return tonumber(conditionAM[tonumber(j)].TempMin)
end
function conky_Meteo_AM_TempMaxRes(j)
return tonumber(conditionAM[tonumber(j)].TempMaxR)
end
function conky_Meteo_AM_TempMinRes(j)
return tonumber(conditionAM[tonumber(j)].TempMinR)
end
function conky_Meteo_AM_ProbPrec(j)
return tonumber(conditionAM[tonumber(j)].ProbPrec)
end
function conky_Meteo_AM_VentDir(j)
return conditionAM[tonumber(j)].VentDir
end
function conky_Meteo_AM_VentDirP(j)
return conditionAM[tonumber(j)].VentP
end
function conky_Meteo_AM_VentForce(j)
return tonumber(conditionAM[tonumber(j)].VentForce)
end
function conky_Meteo_AM_QPluie(j)
return tonumber(conditionAM[tonumber(j)].QPluie)
end
function conky_Meteo_AM_QNeige(j)
return tonumber(conditionAM[tonumber(j)].QNeige)
end
function conky_Meteo_AM_Humidite(j)
return tonumber(conditionAM[tonumber(j)].Humidite)
end
function conky_Meteo_AM_CouvNuage(j, r)
if r == nil then r = 100 end
local Couv = (tonumber(conditionAM[tonumber(j)].CouvNuage) / 100) * r
if Couv - math.floor(Couv) <= 0.5 then
Couv = math.floor(Couv)
else
Couv = math.ceil(Couv)
end
return Couv
end
function conky_Meteo_AM_Rose(j)
return tonumber(conditionAM[tonumber(j)].PointRosee)
end
function conky_Meteo_AM_Visibilite(j)
return tonumber(conditionAM[tonumber(j)].Visibilite)
end
function conky_Meteo_AM_IconeM(r, p, s, f, j)
return "${image "..r.."/jour/"..conditionAM[tonumber(j)].Icone..".png -p "..p.." -s "..s.." -f "..f.."}"
end
function conky_Meteo_AM_IconeV(r, p, s, f, j)
return "${image "..r.."/"..conditionAM[tonumber(j)].VentIcone.." -p "..p.." -s "..s.." -f "..f.."}"
end
--Soirée
function conky_Meteo_Soiree_CondMeteo(j)
return conditionSoiree[tonumber(j)].CondMeteo
end
function conky_Meteo_Soiree_CondMeteo1(j)
return conditionSoiree[tonumber(j)].CondMeteo1
end
function conky_Meteo_Soiree_CondMeteo2(j)
return conditionSoiree[tonumber(j)].CondMeteo2
end
function conky_Meteo_Soiree_CondMeteo1se(j)
return conditionSoiree[tonumber(j)].CondMeteo1se
end
function conky_Meteo_Soiree_CondMeteo2se(j)
return conditionSoiree[tonumber(j)].CondMeteo2se
end
function conky_Meteo_Soiree_TempMax(j)
return tonumber(conditionSoiree[tonumber(j)].TempMax)
end
function conky_Meteo_Soiree_TempMin(j)
return tonumber(conditionSoiree[tonumber(j)].TempMin)
end
function conky_Meteo_Soiree_TempMaxRes(j)
return tonumber(conditionSoiree[tonumber(j)].TempMaxR)
end
function conky_Meteo_Soiree_TempMinRes(j)
return tonumber(conditionSoiree[tonumber(j)].TempMinR)
end
function conky_Meteo_Soiree_ProbPrec(j)
return tonumber(conditionSoiree[tonumber(j)].ProbPrec)
end
function conky_Meteo_Soiree_VentDir(j)
return conditionSoiree[tonumber(j)].VentDir
end
function conky_Meteo_Soiree_VentDirP(j)
return conditionSoiree[tonumber(j)].VentP
end
function conky_Meteo_Soiree_VentForce(j)
return tonumber(conditionSoiree[tonumber(j)].VentForce)
end
function conky_Meteo_Soiree_QPluie(j)
return tonumber(conditionSoiree[tonumber(j)].QPluie)
end
function conky_Meteo_Soiree_QNeige(j)
return tonumber(conditionSoiree[tonumber(j)].QNeige)
end
function conky_Meteo_Soiree_Humidite(j)
return tonumber(conditionSoiree[tonumber(j)].Humidite)
end
function conky_Meteo_Soiree_CouvNuage(j, r)
if r == nil then r = 100 end
local Couv = (tonumber(conditionSoiree[tonumber(j)].CouvNuage) / 100) * r
if Couv - math.floor(Couv) <= 0.5 then
Couv = math.floor(Couv)
else
Couv = math.ceil(Couv)
end
return Couv
end
function conky_Meteo_Soiree_Rose(j)
return tonumber(conditionSoiree[tonumber(j)].PointRosee)
end
function conky_Meteo_Soiree_Visibilite(j)
return tonumber(conditionSoiree[tonumber(j)].Visibilite)
end
function conky_Meteo_Soiree_IconeM(r, p, s, f, j)
return "${image "..r.."/jour/"..conditionSoiree[tonumber(j)].Icone..".png -p "..p.." -s "..s.." -f "..f.."}"
end
function conky_Meteo_Soiree_IconeV(r, p, s, f, j)
return "${image "..r.."/"..conditionSoiree[tonumber(j)].VentIcone.." -p "..p.." -s "..s.." -f "..f.."}"
end
--Nuit
function conky_Meteo_Noct_CondMeteo(j)
return conditionNoct[tonumber(j)].CondMeteo
end
function conky_Meteo_Noct_CondMeteo1(j)
return conditionNoct[tonumber(j)].CondMeteo1
end
function conky_Meteo_Noct_CondMeteo2(j)
return conditionNoct[tonumber(j)].CondMeteo2
end
function conky_Meteo_Noct_CondMeteo1se(j)
return conditionNoct[tonumber(j)].CondMeteo1se
end
function conky_Meteo_Noct_CondMeteo2se(j)
return conditionNoct[tonumber(j)].CondMeteo2se
end
function conky_Meteo_Noct_TempMax(j)
return tonumber(conditionNoct[tonumber(j)].TempMax)
end
function conky_Meteo_Noct_TempMin(j)
return tonumber(conditionNoct[tonumber(j)].TempMin)
end
function conky_Meteo_Noct_TempMaxRes(j)
return tonumber(conditionNoct[tonumber(j)].TempMaxR)
end
function conky_Meteo_Noct_TempMinRes(j)
return tonumber(conditionNoct[tonumber(j)].TempMinR)
end
function conky_Meteo_Noct_ProbPrec(j)
return tonumber(conditionNoct[tonumber(j)].ProbPrec)
end
function conky_Meteo_Noct_VentDir(j)
return conditionNoct[tonumber(j)].VentDir
end
function conky_Meteo_Noct_VentDirP(j)
return conditionNoct[tonumber(j)].VentP
end
function conky_Meteo_Noct_VentForce(j)
return tonumber(conditionNoct[tonumber(j)].VentForce)
end
function conky_Meteo_Noct_QPluie(j)
return tonumber(conditionNoct[tonumber(j)].QPluie)
end
function conky_Meteo_Noct_QNeige(j)
return tonumber(conditionNoct[tonumber(j)].QNeige)
end
function conky_Meteo_Noct_Humidite(j)
return tonumber(conditionNoct[tonumber(j)].Humidite)
end
function conky_Meteo_Noct_CouvNuage(j, r)
if r == nil then r = 100 end
local Couv = (tonumber(conditionNoct[tonumber(j)].CouvNuage) / 100) * r
if Couv - math.floor(Couv) <= 0.5 then
Couv = math.floor(Couv)
else
Couv = math.ceil(Couv)
end
return Couv
end
function conky_Meteo_Noct_Rose(j)
return tonumber(conditionNoct[tonumber(j)].PointRosee)
end
function conky_Meteo_Noct_Visibilite(j)
return tonumber(conditionNoct[tonumber(j)].Visibilite)
end
function conky_Meteo_Noct_IconeM(r, p, s, f, j)
return "${image "..r.."/nuit/"..conditionNoct[tonumber(j)].Icone..".png -p "..p.." -s "..s.." -f "..f.."}"
end
function conky_Meteo_Noct_IconeV(r, p, s, f, j)
return "${image "..r.."/"..conditionNoct[tonumber(j)].VentIcone.." -p "..p.." -s "..s.." -f "..f.."}"
end
--Lunaison
function conky_Lune_ephemerides()
return ephemerides
end
function conky_Lune_ephemerides1()
return ephemerides1
end
function conky_Lune_ephemerides2()
return ephemerides2
end
function conky_Lune_Visibilite()
return Visibilite
end
function conky_Lune_Phases()
return Phases
end
function conky_Lune_Phases1()
return Phases1
end
function conky_Lune_Phases2()
return Phases2
end
function conky_Lune_Noeudlunaire()
return Noeud_lunaire
end
function conky_Lune_Apogee()
return Apogee
end
function conky_Lune_Perigee()
return Perigee
end
function conky_Lune_Distance()
return Distance
end
function conky_Lune_Age()
return Age
end
function conky_Lune_HLeverLune()
return Lever_LuneHeure
end
function conky_Lune_MLeverLune()
return Lever_LuneMinute
end
function conky_Lune_HCoucherLune()
return Coucher_LuneHeure
end
function conky_Lune_MCoucherLune()
return Coucher_LuneMinute
end
function conky_Lune_EclipsePartielle(format)
if format == nil then format = "%A_%d_%B_%Y_à_%H:%M" end
format = string.gsub(format, "_", " ")
return trad_date(os.date(format, Eclipse_partielle))
end
function conky_Lune_EclipseTotal()
if format == nil then format = "%A_%d_%B_%Y_à_%H:%M" end
format = string.gsub(format, "_", " ")
return trad_date(os.date(format, Eclipse_total))
end
--Informations sur le lua
function conky_Version()
return Version
end
function conky_Meteo_fichier_init()
return fichier_init
end
function conky_Meteo_etat_MAJ()
return MAJ
end
--Sauvegarde des données
function sauvegarde()
--sauvegarde prévision
for j = 1,jours do
local file = assert(io.open(repsauv.."/prevision"..j, "w+"))
file:write ("\n")
local t = {"CondMeteo", "CondMeteo1", "CondMeteo2", "CondMeteo1se", "CondMeteo2se", "Temp", "TempRes", "ProbPrec", "VentDir", "VentP", "VentForce", "VentRafales", "Uv", "ProbOrage", "NivPrec", "QPluie", "QNeige", "Icone", "VentIcone", "RafalesIcone", "EVerglas"}
for i = 1, 21 do
file:write (conditionJour[j][t[i]], "\n")
end
t = {"CondMeteo", "CondMeteo1", "CondMeteo2", "CondMeteo1se", "CondMeteo2se", "Temp", "TempRes", "ProbPrec", "VentDir", "VentP", "VentForce", "VentRafales", "ProbOrage", "NivPrec", "QPluie", "QNeige", "Icone", "VentIcone", "RafalesIcone", "EVerglas"}
for i = 1, 20 do
file:write (conditionNuit[j][t[i]], "\n")
end
t= {"Jour", "LeverSoleilH", "LeverSoleilM", "CoucherSoleilH", "CoucherSoleilM", "Histo_Max", "Histo_Min"}
for i = 1, 7 do
file:write (InfoJour[j][t[i]], "\n")
end
io.close(file)
if matin == "oui" then
local file = assert(io.open(repsauv.."/matin"..j, "w+"))
file:write ("\n")
local t = {"CondMeteo", "CondMeteo1", "CondMeteo2", "CondMeteo1se", "CondMeteo2se", "TempMax", "TempMin", "TempMaxR", "TempMinR", "ProbPrec", "VentDir", "VentP", "VentForce", "QPluie", "QNeige", "Humidite", "CouvNuage", "PointRosee", "Visibilite", "Icone", "VentIcone"}
for i = 1, 21 do
file:write (conditionMatin[j][t[i]], "\n")
end
io.close(file)
end
if apresmidi == "oui" then
local file = assert(io.open(repsauv.."/ApresMidi"..j, "w+"))
file:write ("\n")
local t = {"CondMeteo", "CondMeteo1", "CondMeteo2", "CondMeteo1se", "CondMeteo2se", "TempMax", "TempMin", "TempMaxR", "TempMinR", "ProbPrec", "VentDir", "VentP", "VentForce", "QPluie", "QNeige", "Humidite", "CouvNuage", "PointRosee", "Visibilite", "Icone", "VentIcone"}
for i = 1, 21 do
file:write (conditionAM[j][t[i]], "\n")
end
io.close(file)
end
if soiree == "oui" then
local file = assert(io.open(repsauv.."/Soiree"..j, "w+"))
file:write ("\n")
local t = {"CondMeteo", "CondMeteo1", "CondMeteo2", "CondMeteo1se", "CondMeteo2se", "TempMax", "TempMin", "TempMaxR", "TempMinR", "ProbPrec", "VentDir", "VentP", "VentForce", "QPluie", "QNeige", "Humidite", "CouvNuage", "PointRosee", "Visibilite", "Icone", "VentIcone"}
for i = 1, 21 do
file:write (conditionSoiree[j][t[i]], "\n")
end
io.close(file)
end
if nuit == "oui" then
local file = assert(io.open(repsauv.."/Nuit"..j, "w+"))
file:write ("\n")
local t = {"CondMeteo", "CondMeteo1", "CondMeteo2", "CondMeteo1se", "CondMeteo2se", "TempMax", "TempMin", "TempMaxR", "TempMinR", "ProbPrec", "VentDir", "VentP", "VentForce", "QPluie", "QNeige", "Humidite", "CouvNuage", "PointRosee", "Visibilite", "Icone", "VentIcone"}
for i = 1, 21 do
file:write (conditionNoct[j][t[i]], "\n")
end
io.close(file)
end
end
--sauvegarde lunaison
local file = assert(io.open(repsauv.."/lunaison", "w+"))
file:write ("\n", ephemerides, "\n")
file:write (ephemerides1, "\n")
file:write (ephemerides2, "\n")
file:write (Visibilite, "\n")
file:write (Phases, "\n")
file:write (Phases1, "\n")
file:write (Phases2, "\n")
file:write (Noeud_lunaire, "\n")
file:write (Apogee, "\n")
file:write (Perigee, "\n")
file:write (Distance, "\n")
file:write (Age, "\n")
file:write (Lever_LuneHeure, "\n")
file:write (Lever_LuneMinute, "\n")
file:write (Coucher_LuneHeure, "\n")
file:write (Coucher_LuneMinute, "\n")
file:write (Eclipse_partielle, "\n")
file:write (Eclipse_total, "\n")
io.close(file)
--Sauvegarde condition courante
local file = assert(io.open(repsauv.."/CondCour", "w+") )
file:write ("\n")
local t = {"Icone", "Tempr", "Temp", "Cond", "CondMeteo1", "CondMeteo2", "CondMeteo1se", "CondMeteo2se", "VentDir", "VentPlein", "VentForce", "VentIcone", "Humidite", "PointRosee", "Pression", "Visibilite", "Date", "Ville", "CouvNuage", "Uv", "QPrec", "latitude", "longitude"}
for i = 1,23 do
file:write (conditioncourante[t[i]], "\n")
end
file:write (time, "\n")
io.close(file)
--modification des droits utilisateur
os.execute('chmod o+rw- '..r..'/*lun*')
os.execute('chmod -R o+rw- '..repsauv)
os.execute('chmod -R o+rw- '..Rep)
end
Toujours pas de mise à jour
"Carpe diem quam minimum credula postero"
(Cueille le jour présent, en te fiant le moins possible au lendemain.)
HORACE
Hors ligne
#1310 Le 23/09/2012, à 12:27
- Didier-T
Re : [Conky] Alternative à weather.com (2)
@ carpediem,
en fait tu n'utilise pas ce script meteo.lua, ton conky pointe vers une version plus ancienne (ce qui me fait dire ceci est le fait que le numéro de version n'apparais pas dans le terminal)
Pourrais tu me montrer ton conky, ainsi que baro.lua, et m'indiquer ou ce situ dans ton arborescence le script meteo.lua que tu a copié sur le forum.
A+
Hors ligne
#1311 Le 23/09/2012, à 12:41
- carpediem
Re : [Conky] Alternative à weather.com (2)
mon conky
baro.lua
--==============================================================================
-- baro.lua
--
-- author : SLK-adapted by shamen456
-- version : v2011-06-13
-- license : Distributed under the terms of GNU GPL version 2 or later
--
--==============================================================================
require 'cairo'
--------------------------------------------------------------------------------
-- gauge DATA
gauge = {
{
name='cpu', arg='', max_value=1060, sub_value=960,
x=175, y=200,
graph_radius=60,
graph_thickness=10,
graph_start_angle=235,
graph_unit_angle=2.5, graph_unit_thickness=2.,
graph_bg_colour=0xFFFFFF, graph_bg_alpha=0.4,
graph_fg_colour=0xB1ADA7, graph_fg_alpha=0,
hand_fg_colour=0x000000, hand_fg_alpha=.0,
txt_radius=0,
txt_weight=0, txt_size=10.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=0,
graduation_radius=50,
graduation_thickness=8, graduation_mark_thickness=2,
graduation_unit_angle=18,
graduation_fg_colour=0x4F4B41, graduation_fg_alpha=0,
caption='',
caption_weight=1, caption_size=8.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.8,
},
{
name='lua', arg='Meteo_Pression', max_value=1050, sub_value=950,
x=175, y=200,
graph_radius=30,
graph_thickness=70,
graph_start_angle=255,
graph_unit_angle=2.1, graph_unit_thickness=2.,
graph_bg_colour=0xFFFFFF, graph_bg_alpha=0.4,
graph_fg_colour=0xB1ADA7, graph_fg_alpha=0,
hand_fg_colour=0xFF0000, hand_fg_alpha=.5,
txt_radius=20,
txt_weight=0, txt_size=10.0,
txt_fg_colour=0xFFFFFF, txt_fg_alpha=0,
graduation_radius=70,
graduation_thickness=8, graduation_mark_thickness=2,
graduation_unit_angle=18,
graduation_fg_colour=0x4F4B41, graduation_fg_alpha=1,
caption='',
caption_weight=1, caption_size=8.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.8,
},
{
name='lua', arg='Meteo_TempRes',
max_value=60, sub_value=-30,--valeur de depart du graphe
x=175, y=250,
graph_radius=20,
graph_thickness=40,
graph_start_angle=75,
graph_unit_angle=2.33, graph_unit_thickness=1.5,
graph_bg_colour=0xFFFFFF, graph_bg_alpha=0.4,
graph_fg_colour=0xB1ADA7, graph_fg_alpha=0,
hand_fg_colour=0xFF0000, hand_fg_alpha=1,
txt_radius=18,
txt_weight=1, txt_size=10.0,
txt_fg_colour=0xC0C0FF, txt_fg_alpha=0,
graduation_radius=20,
graduation_thickness=8, graduation_mark_thickness=2,
graduation_unit_angle=11.6,
graduation_fg_colour=0x4F4B41, graduation_fg_alpha=0.6,
caption='',
caption_weight=1, caption_size=8.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.3,
},
{
name='lua', arg='Meteo_TempAct', max_value=60, sub_value=-30,
x=175, y=250,
graph_radius=20,
graph_thickness=40,
graph_start_angle=75,
graph_unit_angle=2.33, graph_unit_thickness=1.5,
graph_bg_colour=0xFFFFFF, graph_bg_alpha=0.,
graph_fg_colour=0xB1ADA7, graph_fg_alpha=0,
hand_fg_colour=0xED7F77, hand_fg_alpha=1,
txt_radius=30,
txt_weight=1, txt_size=10.0,
txt_fg_colour=0xED7F77, txt_fg_alpha=0,
graduation_radius=22,
graduation_thickness=14, graduation_mark_thickness=2,
graduation_unit_angle=23.3,
graduation_fg_colour=0x4F4B41, graduation_fg_alpha=1,
caption='',
caption_weight=1, caption_size=8.0,
caption_fg_colour=0xFFFFFF, caption_fg_alpha=0.3,
},
}
-------------------------------------------------------------------------------
-- rgb_to_r_g_b
-- converts color in hexa to decimal
--
function rgb_to_r_g_b(colour, alpha)
return ((colour / 0x10000) % 0x100) / 255., ((colour / 0x100) % 0x100) / 255., (colour % 0x100) / 255., alpha
end
-------------------------------------------------------------------------------
-- angle_to_position
-- convert degree to rad and rotate (0 degree is top/north)
--
function angle_to_position(start_angle, current_angle)
local pos = current_angle + start_angle
return ( ( pos * (2 * math.pi / 360) ) - (math.pi / 2) )
end
-------------------------------------------------------------------------------
-- draw_gauge_ring
-- displays gauges
--
function draw_gauge_ring(display, data, value)
local max_value = data['max_value']-data['sub_value']
local sub_value = data['sub_value']
local x, y = data['x'], data['y']
local graph_radius = data['graph_radius']
local graph_thickness, graph_unit_thickness = data['graph_thickness'], data['graph_unit_thickness']
local graph_start_angle = data['graph_start_angle']
local graph_unit_angle = data['graph_unit_angle']
local graph_bg_colour, graph_bg_alpha = data['graph_bg_colour'], data['graph_bg_alpha']
local graph_fg_colour, graph_fg_alpha = data['graph_fg_colour'], data['graph_fg_alpha']
local hand_fg_colour, hand_fg_alpha = data['hand_fg_colour'], data['hand_fg_alpha']
local graph_end_angle = (max_value * graph_unit_angle) % 360
-- background ring
cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, 0), angle_to_position(graph_start_angle, graph_end_angle))
cairo_set_source_rgba(display, rgb_to_r_g_b(graph_bg_colour, graph_bg_alpha))
cairo_set_line_width(display, graph_thickness)
cairo_stroke(display)
-- arc of value
local val = (value-sub_value) % (max_value + 1)
local start_arc = 0
local stop_arc = 0
local i = 1
while i <= val do
start_arc = (graph_unit_angle * i) - graph_unit_thickness
stop_arc = (graph_unit_angle * i)
cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
cairo_set_source_rgba(display, rgb_to_r_g_b(graph_fg_colour, graph_fg_alpha))
cairo_stroke(display)
i = i + 1
end
local angle = start_arc
-- hand
start_arc = (graph_unit_angle * val) - (graph_unit_thickness * 2)
stop_arc = (graph_unit_angle * val)
cairo_arc(display, x, y, graph_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
cairo_set_source_rgba(display, rgb_to_r_g_b(hand_fg_colour, hand_fg_alpha))
cairo_stroke(display)
-- graduations marks
local graduation_radius = data['graduation_radius']
local graduation_thickness, graduation_mark_thickness = data['graduation_thickness'], data['graduation_mark_thickness']
local graduation_unit_angle = data['graduation_unit_angle']
local graduation_fg_colour, graduation_fg_alpha = data['graduation_fg_colour'], data['graduation_fg_alpha']
if graduation_radius > 0 and graduation_thickness > 0 and graduation_unit_angle > 0 then
local nb_graduation = graph_end_angle / graduation_unit_angle
local i = 0
while i < nb_graduation do
cairo_set_line_width(display, graduation_thickness)
start_arc = (graduation_unit_angle * i) - (graduation_mark_thickness / 2)
stop_arc = (graduation_unit_angle * i) + (graduation_mark_thickness / 2)
cairo_arc(display, x, y, graduation_radius, angle_to_position(graph_start_angle, start_arc), angle_to_position(graph_start_angle, stop_arc))
cairo_set_source_rgba(display,rgb_to_r_g_b(graduation_fg_colour,graduation_fg_alpha))
cairo_stroke(display)
cairo_set_line_width(display, graph_thickness)
i = i + 1
end
end
-- text
local txt_radius = data['txt_radius']
local txt_weight, txt_size = data['txt_weight'], data['txt_size']
local txt_fg_colour, txt_fg_alpha = data['txt_fg_colour'], data['txt_fg_alpha']
local movex = txt_radius * math.cos(angle_to_position(graph_start_angle, angle))
local movey = txt_radius * math.sin(angle_to_position(graph_start_angle, angle))
cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, txt_weight)
cairo_set_font_size (display, txt_size)
cairo_set_source_rgba (display, rgb_to_r_g_b(txt_fg_colour, txt_fg_alpha))
cairo_move_to (display, x + movex - (txt_size / 2), y + movey + 3)
cairo_show_text (display, value)
cairo_stroke (display)
-- caption
local caption = data['caption']
local caption_weight, caption_size = data['caption_weight'], data['caption_size']
local caption_fg_colour, caption_fg_alpha = data['caption_fg_colour'], data['caption_fg_alpha']
local tox = graph_radius * (math.cos((graph_start_angle * 2 * math.pi / 360)-(math.pi/2)))
local toy = graph_radius * (math.sin((graph_start_angle * 2 * math.pi / 360)-(math.pi/2)))
cairo_select_font_face (display, "ubuntu", CAIRO_FONT_SLANT_NORMAL, caption_weight);
cairo_set_font_size (display, caption_size)
cairo_set_source_rgba (display, rgb_to_r_g_b(caption_fg_colour, caption_fg_alpha))
cairo_move_to (display, x + tox + 5, y + toy + 1)
-- bad hack but not enough time !
if graph_start_angle < 105 then
cairo_move_to (display, x + tox - 30, y + toy + 1)
end
cairo_show_text (display, caption)
cairo_stroke (display)
end
-------------------------------------------------------------------------------
-- go_gauge_rings
-- loads data and displays gauges
--
function go_gauge_rings(display)
local function load_gauge_rings(display, data)
local str, value = '', 0
str = string.format('${%s %s}',data['name'], data['arg'])
str = conky_parse(str)
print(data['name'], data['arg'], "= ", str)
value = tonumber(str)
draw_gauge_ring(display, data, value)
end
for i in pairs(gauge) do
load_gauge_rings(display, gauge[i])
end
end
-------------------------------------------------------------------------------
-- MAIN
function conky_main()
if conky_window == nil then
return
end
local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height)
local display = cairo_create(cs)
local updates = conky_parse('${updates}')
update_num = tonumber(updates)
if update_num > 5 then
go_gauge_rings(display)
end
end
conkyrc baro
#Fonctionnement de conky
total_run_times 0 #Temps en secondes ; 0 = toujours actif
background yes #Pour que conky tourne en arrière plan ; no = pour les tests
#Réglages système
cpu_avg_samples 1 #Nb d'échantillons pour calculer la moyenne d'utilisation CPU
net_avg_samples 2 #Nb d'échantillons pour calculer la moyenne d'utilisation CPU
#Mémoire
double_buffer yes #Éviter le clignotement
no_buffers yes #Soustraire les mémoires tampons de la mémoire utilisée
text_buffer_size 2048 #Taille du cache pour le texte
#Affichage
out_to_console no #Affiche le texte sur la sortie standard
update_interval 1 #Taux de rafraîchissement de la fenêtre (s)
#Fenêtre conky
#alignment top_left #Alignement
#---
minimum_size 350 50 #Taille minimum (px) ; largeur / hauteur
maximum_width300 100 #Largeur maximum (px)
#---
gap_x 480 #Écart avec le bord gauche / droit
gap_y 585 #Écart avec le bord haut / bas
#---
draw_shades no #Afficher les ombres
draw_outline no #Afficher les contours de fenêtre
draw_borders no #Afficher des contours autour des blocs de texte
border_width 1 #Largeur du contour
border_margin 1 #Largeur des marges
#---
own_window yes #Utiliser sa propre fenêtre
own_window_type override #Type de fenêtre ; normal / override / desktop
own_window_transparent yes #Pseudo transparence
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
#Mise en forme
use_xft yes #Utiliser Xft (polices lissées etc)
xftalpha 1 #Utiliser Xft
override_utf8_locale yes #Force l'UTF8
uppercase no #Tout le texte en majuscule
use_spacer right #Ajoute des espaces après certains objets (qu'avec des polices fixes)
#---
xftfont saxMono:size=9 #Police par défaut
#---
default_bar_size 360 3 #Barre par défaut (longeur hauteur)
stippled_borders 6 #Taille des pointillés
#Couleurs
default_color FFFFFF #Couleur par défaut
default_shade_color 333333 #Couleur des ombres
default_outline_color black #Couleur des contours
#---
color1 242424 #Gris
#---
short_units yes #Unités courtes
pad_percents 2 #Unité à 2 décimales
default_color FFFFFF
color1 D2CBC1
color2 red #red, color of current T°
color3 blue #color of feels like T°
color4 B1ADA7
color5 7B7870
color6 3F3C36
color7 black #text color
# -- Declaration template -- #
template0 ${image ~/conky/meteo/conky/script/images/\1 -p \2 -s \3} # -- images fond -- #
template1 ${lua Meteo_\1 \2 \3 \4 \5 \6} # -- gestion météo --#
template2 ${lua_parse Meteo_\1 \2 \3 \4 60 \5} # -- icones météo -- \2=repertoir icones \3=position \4=taille \5=jour (pour les prévisions) #
template3 ${lua Lune_\1}
lua_load ~/conky/meteo.lua
lua_load ~/conky/Baro/baro.lua
lua_draw_hook_pre main
lua_load ~/conky/Baro/textwriting.lua
lua_draw_hook_post draw_text
lua_startup_hook init ~/conky/meteo.cfg
TEXT
#### Lancement du script récupérant les données météo ####
${template1 Maj}
${font URW Chancery L:style=Bold:size=14}${image /usr/share/conkyforecast/images/weathericons/00.png -s 60x60 -p 10,200}\
${image /usr/share/conkyforecast/images/weathericons/40.png -s 60x60 -p 20,130}\
${image /usr/share/conkyforecast/images/weathericons/09.png -s 60x60 -p 50,80}\
${image /usr/share/conkyforecast/images/weathericons/39.png -s 60x60 -p 120,50}\
${image /usr/share/conkyforecast/images/weathericons/28.png -s 60x60 -p 200,50}\
${image /usr/share/conkyforecast/images/weathericons/30.png -s 60x60 -p 250,90}\
${image /usr/share/conkyforecast/images/weathericons/34.png -s 60x60 -p 270,140}\
${image /usr/share/conkyforecast/images/weathericons/32.png -s 60x60 -p 270,200}
${voffset 170}${color black}${alignc}${template1 Pression} mb
${voffset 70}${font URW Chancery L:style=Bold:size=18}${goto 50}T°${font URW Chancery L:style=Bold:size=12} Actuelle / Ressentie#
${voffset -8}${goto 220}${font URW Chancery L:style=Bold:size=18}T° ${font URW Chancery L:style=Bold:size=12}Nuit
${font URW Chancery L:style=Bold:size=16}${goto 60}${color2}${template1 TempAct}°C / ${template1 TempRes}°C
${voffset -30}${goto 240}${color3}${template1 Nuit_Temp 1}°C ${font Verdana:size=2}
conkyrc meteo
#Fonctionnement de conky
total_run_times 0 #Temps en secondes ; 0 = toujours actif
background yes #Pour que conky tourne en arrière plan ; no = pour les tests
#Réglages système
cpu_avg_samples 1 #Nb d'échantillons pour calculer la moyenne d'utilisation CPU
net_avg_samples 2 #Nb d'échantillons pour calculer la moyenne d'utilisation CPU
#Mémoire
double_buffer yes #Éviter le clignotement
no_buffers yes #Soustraire les mémoires tampons de la mémoire utilisée
text_buffer_size 2048 #Taille du cache pour le texte
#Affichage
out_to_console no #Affiche le texte sur la sortie standard
update_interval 1 #Taux de rafraîchissement de la fenêtre (s)
#Fenêtre conky
#alignment top_left #Alignement
#---
minimum_size 350 100 #Taille minimum (px) ; largeur / hauteur
maximum_width 300 #Largeur maximum (px)
#---
gap_x 820 #Écart avec le bord gauche / droit
gap_y 25 #Écart avec le bord haut / bas
#---
draw_shades no #Afficher les ombres
draw_outline no #Afficher les contours de fenêtre
draw_borders no #Afficher des contours autour des blocs de texte
border_width 1 #Largeur du contour
border_inner_margin 1 #Largeur des marges
#---
own_window yes #Utiliser sa propre fenêtre
own_window_type override #Type de fenêtre ; normal / override / desktop
own_window_transparent yes #Pseudo transparence
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager,below
#Mise en forme
use_xft yes #Utiliser Xft (polices lissées etc)
xftalpha 1 #Utiliser Xft
override_utf8_locale yes #Force l'UTF8
uppercase no #Tout le texte en majuscule
use_spacer right #Ajoute des espaces après certains objets (qu'avec des polices fixes)
#---
xftfont saxMono:size=9 #Police par défaut
#---
default_bar_size 50 4 #Barre par défaut (longeur hauteur)
stippled_borders 3 #Taille des pointillés
#Couleurs
default_color FFFFFF #Couleur par défaut
default_shade_color 333333 #Couleur des ombres
default_outline_color black #Couleur des contours
#---
color1 242424 #Gris
#---
short_units yes #Unités courtes
pad_percents 2 #Unité à 2 décimales
# -- Declaration template -- #
template0 ${image ~/conky/meteo/conky/script/images/\1 -p \2 -s \3} # -- images fond -- #
template1 ${lua Meteo_\1 \2 \3 \4 \5 \6} # -- gestion météo --#
template2 ${lua_parse Meteo_\1 \2 \3 \4 60 \5} # -- icones météo -- \2=repertoir icones \3=position \4=taille \5=jour (pour les prévisions) #
template3 ${lua Lune_\1}
lua_load /home/claude/conky/meteo.lua
lua_startup_hook init /home/claude/conky/meteo.cfg
lua_load ~/conky/Clic_info.lua
TEXT
#### Lancement du script récupérant les données météo ####
${template1 Maj}${lua click}#Mise à jours via le réseau si disponible, sinon récupération des informations sauvegardées
${font chopinscript:size=20}${alignc}${color1}La Météo à ${template1 Ville}${font verdana:size=16}
${font chopinscript:size=15}Précipitations :${alignr}${font verdana:size=8}${template1 Jour_QPluie 1} mm${font verdana:size=4}
${font chopinscript:size=15}Taux d'humidité :${alignr}${font verdana:size=8}${template1 Humidite}%${font verdana:size=4}
${font chopinscript:size=15}Levé du soleil à :${alignr}${font verdana:size=8}${template1 HLeverSoleil}h${template1 MLeverSoleil}${font verdana:size=4}
${font chopinscript:size=15}Couché du soleil à :${alignr}${font verdana:size=8}${template1 HCoucherSoleil}h${template1 MCoucherSoleil}${font verdana:size=6}
${hr}
${font chopinscript:size=16}Aujourd'hui: ${font verdana:size=8} ${template1 CondMeteo} ${template2 IconeM ~/conky/meteo/conky/meteo+lune/icones/base 200,140 120x40}
${font chopinscript:size=16}Vent:${font verdana:size=8} ${template1 VentForce} km/h ${template1 VentDirP}
${hr}
${goto 20}${exec date --date '1 day' +%a| sed 's/^./\u&/;'}#
${goto 90}${exec date --date '2 day' +%a| sed 's/^./\u&/;'}#
${goto 175}${exec date --date '3 day' +%a| sed 's/^./\u&/;'}#
${goto 260}${exec date --date '4 day' +%a| sed 's/^./\u&/;'}#
${template2 Jour_IconeM ~/conky/meteo/conky/meteo+lune/icones/base -10,205 86x52 2}
${template2 Jour_IconeM ~/conky/meteo/conky/meteo+lune/icones/base 70,205 86x52 3}
${template2 Jour_IconeM ~/conky/meteo/conky/meteo+lune/icones/base 145,205 86x52 4}
${template2 Jour_IconeM ~/conky/meteo/conky/meteo+lune/icones/base 225,205 86x52 5}
${voffset 5}
${goto 10}${template1 Jour_Temp 2}°/${template1 Nuit_Temp 2}°#
${goto 90}${template1 Jour_Temp 3}°/${template1 Nuit_Temp 3}°#
${goto 165}${template1 Jour_Temp 4}°/${template1 Nuit_Temp 4}°#
${goto 250}${template1 Jour_Temp 5}°/${template1 Nuit_Temp 5}°#
"Carpe diem quam minimum credula postero"
(Cueille le jour présent, en te fiant le moins possible au lendemain.)
HORACE
Hors ligne
#1312 Le 23/09/2012, à 12:53
- Didier-T
Re : [Conky] Alternative à weather.com (2)
Tu as oublié de noter le chemin du meteo.lua que tu montre sur ton précédent post.
Hors ligne
#1313 Le 23/09/2012, à 12:56
- carpediem
Re : [Conky] Alternative à weather.com (2)
/home/claude/conky/meteo.lua
"Carpe diem quam minimum credula postero"
(Cueille le jour présent, en te fiant le moins possible au lendemain.)
HORACE
Hors ligne
#1314 Le 23/09/2012, à 13:11
- Didier-T
Re : [Conky] Alternative à weather.com (2)
alors quelques petites modifications.
conkyrc meteo
#Fonctionnement de conky
total_run_times 0 #Temps en secondes ; 0 = toujours actif
background yes #Pour que conky tourne en arrière plan ; no = pour les tests
#Réglages système
cpu_avg_samples 1 #Nb d'échantillons pour calculer la moyenne d'utilisation CPU
net_avg_samples 2 #Nb d'échantillons pour calculer la moyenne d'utilisation CPU
#Mémoire
double_buffer yes #Éviter le clignotement
no_buffers yes #Soustraire les mémoires tampons de la mémoire utilisée
text_buffer_size 2048 #Taille du cache pour le texte
#Affichage
out_to_console no #Affiche le texte sur la sortie standard
update_interval 1 #Taux de rafraîchissement de la fenêtre (s)
#Fenêtre conky
#alignment top_left #Alignement
#---
minimum_size 350 100 #Taille minimum (px) ; largeur / hauteur
maximum_width 300 #Largeur maximum (px)
#---
gap_x 820 #Écart avec le bord gauche / droit
gap_y 25 #Écart avec le bord haut / bas
#---
draw_shades no #Afficher les ombres
draw_outline no #Afficher les contours de fenêtre
draw_borders no #Afficher des contours autour des blocs de texte
border_width 1 #Largeur du contour
border_inner_margin 1 #Largeur des marges
#---
own_window yes #Utiliser sa propre fenêtre
own_window_type override #Type de fenêtre ; normal / override / desktop
own_window_transparent yes #Pseudo transparence
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager,below
#Mise en forme
use_xft yes #Utiliser Xft (polices lissées etc)
xftalpha 1 #Utiliser Xft
override_utf8_locale yes #Force l'UTF8
uppercase no #Tout le texte en majuscule
use_spacer right #Ajoute des espaces après certains objets (qu'avec des polices fixes)
#---
xftfont saxMono:size=9 #Police par défaut
#---
default_bar_size 50 4 #Barre par défaut (longeur hauteur)
stippled_borders 3 #Taille des pointillés
#Couleurs
default_color FFFFFF #Couleur par défaut
default_shade_color 333333 #Couleur des ombres
default_outline_color black #Couleur des contours
#---
color1 242424 #Gris
#---
short_units yes #Unités courtes
pad_percents 2 #Unité à 2 décimales
# -- Declaration template -- #
template0 ${image ~/conky/meteo/conky/script/images/\1 -p \2 -s \3} # -- images fond -- #
template1 ${lua Meteo_\1 \2 \3 \4 \5 \6} # -- gestion météo --#
template2 ${lua_parse Meteo_\1 \2 \3 \4 60 \5} # -- icones météo -- \2=repertoir icones \3=position \4=taille \5=jour (pour les prévisions) #
template3 ${lua Lune_\1}
lua_load ~/conky/meteo.lua
lua_startup_hook init ~/conky/meteo.cfg
TEXT
#### Lancement du script récupérant les données météo ####
${template1 horsligne}#Mise à jours via le réseau si disponible, sinon récupération des informations sauvegardées
${font chopinscript:size=20}${alignc}${color1}La Météo à ${template1 Ville}${font verdana:size=16}
${font chopinscript:size=15}Précipitations :${alignr}${font verdana:size=8}${template1 Jour_QPluie 1} mm${font verdana:size=4}
${font chopinscript:size=15}Taux d'humidité :${alignr}${font verdana:size=8}${template1 Humidite}%${font verdana:size=4}
${font chopinscript:size=15}Levé du soleil à :${alignr}${font verdana:size=8}${template1 HLeverSoleil}h${template1 MLeverSoleil}${font verdana:size=4}
${font chopinscript:size=15}Couché du soleil à :${alignr}${font verdana:size=8}${template1 HCoucherSoleil}h${template1 MCoucherSoleil}${font verdana:size=6}
${hr}
${font chopinscript:size=16}Aujourd'hui: ${font verdana:size=8} ${template1 CondMeteo} ${template2 IconeM ~/conky/meteo/conky/meteo+lune/icones/base 200,140 120x40}
${font chopinscript:size=16}Vent:${font verdana:size=8} ${template1 VentForce} km/h ${template1 VentDirP}
${hr}
${goto 20}${exec date --date '1 day' +%a| sed 's/^./\u&/;'}#
${goto 90}${exec date --date '2 day' +%a| sed 's/^./\u&/;'}#
${goto 175}${exec date --date '3 day' +%a| sed 's/^./\u&/;'}#
${goto 260}${exec date --date '4 day' +%a| sed 's/^./\u&/;'}#
${template2 Jour_IconeM ~/conky/meteo/conky/meteo+lune/icones/base -10,205 86x52 2}
${template2 Jour_IconeM ~/conky/meteo/conky/meteo+lune/icones/base 70,205 86x52 3}
${template2 Jour_IconeM ~/conky/meteo/conky/meteo+lune/icones/base 145,205 86x52 4}
${template2 Jour_IconeM ~/conky/meteo/conky/meteo+lune/icones/base 225,205 86x52 5}
${voffset 5}
${goto 10}${template1 Jour_Temp 2}°/${template1 Nuit_Temp 2}°#
${goto 90}${template1 Jour_Temp 3}°/${template1 Nuit_Temp 3}°#
${goto 165}${template1 Jour_Temp 4}°/${template1 Nuit_Temp 4}°#
${goto 250}${template1 Jour_Temp 5}°/${template1 Nuit_Temp 5}°#
meteo.cfg
# Créé par jpdipsy (forum.ubuntu-fr.org)
#Répertoire de sauvegarde
repsauv=~/conky/meteo
#Répertoire temporaire
TempShell=/tmp
#Copier votre adresse Accuweather ici
web=http://www.accuweather.com/fr/fr/stiring-wendel/135054/weather-forecast/135054
#Prévision sur n jour (de 1 à 15) moyenne pour la journée
periode=5
#Prévision infos sur la matinée (oui, non)
matinée=non
#Prévision infos sur la Après Midi (oui, non)
am=oui
#Prévision infos sur la Soirée (oui, non)
soiree=non
#Prévision infos sur la Nuit (oui, non)
nuit=oui
#Palier changement de couleur rose des vents (Km/h)
Palier=20
#Temps entre les mises à jour prévision (secondes)
update=300
Si il y a encore des soucis redonne moi la copie du terminal, avec les nouveaux messages.
P.S. : je crois te l'avoir déjà dit, j'adore ton écran, une vrai œuvre d'art.
Hors ligne
#1315 Le 23/09/2012, à 13:28
- carpediem
Re : [Conky] Alternative à weather.com (2)
un grand merci @Didier-T pour ton aide, ça fonctionne super bien
et merci pour tes compliments cela me touche sincèrement
claude
Dernière modification par carpediem (Le 23/09/2012, à 13:30)
"Carpe diem quam minimum credula postero"
(Cueille le jour présent, en te fiant le moins possible au lendemain.)
HORACE
Hors ligne
#1316 Le 23/09/2012, à 13:29
- Didier-T
Re : [Conky] Alternative à weather.com (2)
Cool, le problème heures début et fin de journée est réglé aussi ?
Hors ligne
#1317 Le 23/09/2012, à 13:31
- carpediem
Re : [Conky] Alternative à weather.com (2)
les heures de levé et couché du soleil fonctionne egalement
"Carpe diem quam minimum credula postero"
(Cueille le jour présent, en te fiant le moins possible au lendemain.)
HORACE
Hors ligne
#1318 Le 23/09/2012, à 13:32
- Didier-T
Re : [Conky] Alternative à weather.com (2)
Et bien c'est donc parfait.
Hors ligne
#1319 Le 23/09/2012, à 13:38
- Didier-T
Re : [Conky] Alternative à weather.com (2)
Hors ligne
#1320 Le 23/09/2012, à 13:44
- Phyllinux
Re : [Conky] Alternative à weather.com (2)
Très actif cet AM Didier !
Je termine mon boulot sous Calc et je teste tout ça.
Je te tiens au courant des résultats.
Merci
The ship is sinking normally...
Hors ligne
#1321 Le 24/09/2012, à 08:23
- carpediem
Re : [Conky] Alternative à weather.com (2)
Salut à tous,
Un grand merci à Didier pour son aide, mais il subsiste encore un petit problème.
les valeurs de la pression atmosphérique ne sont pas correct
valeur actuelle 90 mb ???
Fichier CondCour
c
13
16
Ciel Nuageux
Ciel Nuageux
Ciel Nuageux
S
Sud
20
02.png
87
14
90 "valeur à 2 chiffres"
16
1348437600
Stiring-Wendel
90
10
49.19951
6.92763
1348471029
Merci de votre aide
carpediem
"Carpe diem quam minimum credula postero"
(Cueille le jour présent, en te fiant le moins possible au lendemain.)
HORACE
Hors ligne
#1322 Le 24/09/2012, à 10:03
- ragamatrix
Re : [Conky] Alternative à weather.com (2)
@Phyllinux
Tiens comme promis :
Conkydb:conkydb
Tu pourras comparer, chez moi ça tourne nickel.
ps/Beaucoup plus facile à installer que les explications données sur le lien précédent.:cool:
Dernière modification par ragamatrix (Le 24/09/2012, à 10:22)
Hors ligne
#1323 Le 24/09/2012, à 10:07
- ragamatrix
Re : [Conky] Alternative à weather.com (2)
Bonjour a tous,
une évolution dans le script Beta qui devrait faire plaisir à ragamatrix.
Prévision sur huit heures.
13 nouvelles données pour chaqu'une des huit heures :
Température ressentie = ${template1 huitHeures_TempR <Num de l'heure>}
Température actuelle = ${template1 huitHeures_Temp <Num de l'heure>}
Direction du vent = ${template1 huitHeures_VentDir <Num de l'heure>}
Direction pleine en toutes lettres (Nord, Sud ...) = ${template1 huitHeures_VentDirP <Num de l'heure>}
Vitesse du vent = ${template1 huitHeures_VentForce <Num de l'heure>}
Taux d'humidité = ${template1 huitHeures_Humidite <Num de l'heure>}
Point de rosée = ${template1 huitHeures_Rose <Num de l'heure>}
Indice UV = ${template1 huitHeures_Uv <Num de l'heure>}
Couverture nuageuse = ${template1 huitHeures_CouvNuage <Num de l'heure>}
Probabilité de précipitation = ${template1 huitHeures_ProbPrec <Num de l'heure>}
Heure concerné par la prévision = ${template1 huitHeures_Heure <Num de l'heure>}
Icône météo = ${template2 huitHeures_IconeM <répertoire> <position> <dimensions> <Num de l'heure>}
Icône du vent = ${template2 huitHeures_IconeV <répertoire> <position> <dimensions> <Num de l'heure>}
P.S. : normalement le problème d'affichage du nom de certaine ville devrait être réglé.
Merci pour ta vivacité !
J'ai juste fais un test en changeant seulement le script meteo.lua, la ville ne s'affiche pas et j'ai quelques erreurs dans l'execution du script.
Je m'y plongerais un peu plus en tous cas c'est une bonne nouvelle
Dernière modification par ragamatrix (Le 24/09/2012, à 10:08)
Hors ligne
#1324 Le 24/09/2012, à 12:04
- Didier-T
Re : [Conky] Alternative à weather.com (2)
@ ragamatrix,
il faut aussi changer le meteo.cfg
Hors ligne
#1325 Le 24/09/2012, à 12:06
- Didier-T
Re : [Conky] Alternative à weather.com (2)
@ ragamatrix,
il faut aussi changer le meteo.cfg
Hors ligne