Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#376 Le 20/12/2011, à 13:35

destroyedlolo

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

Salut Didier,

Cool que tu t'essaie a LUA big_smile

De mon cote, j'ai fini mon script myweather depuis quelques temps deja et il fonctionne pas mal. Mais :

  • Comme je l'ai dit, les informations sont vraiment limitees

  • je leur ai envoye un mail car les docs indiquent que je devrais avoir plus mais pas de reponse (2eme tentative aujourd'hui)

Je le publierai peut etre ce soir si tu veux t'en inspire (celui la est vraiment chaide par rapport au precedent).
Je n'ai pas eu encore le temps car je n'ai pas acces aux hebergeurs d'images depuis le taf et ... ben la neige est la et ce W.E. etait totalement STRATOSPHERIQUE spatulairement parlant big_smile big_smile big_smile

Dernière modification par destroyedlolo (Le 20/12/2011, à 13:36)

Hors ligne

#377 Le 20/12/2011, à 21:11

Didier-T

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

Bonjour à tous,

Nous y voici le script en lua fonctionne impec (du moins pour ce que j'utilise sur mon conky)

je vous joint les scripts.

meteo.lua

-- Créé par Didier-T (forum.ubuntu-fr.org)




require "io"

function lune(r)

    s = "${exec wget -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)
        if string.find(line, "ephemerides_1") ~= nil then
            pos1 =  string.find(line, 'src="')
            pos2 = string.find(line, '" /')
            s = "${exec wget -q -O "..r.."/lune.png http://www.calendrier-lunaire.net/"..string.sub(line, pos1+5, pos2-1).."}"
            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+2, pos2-1)
            local pos3 = string.find(line, 'n>', pos2)
            local pos4 = string.find(line, "</", pos2+3)
            ephemerides2 = string.sub(line, pos3+3, pos4-1)
            ephemerides = ephemerides1.." "..ephemerides2
        elseif string.find(line, "Visibilit") ~= nil then
            Visibilite = string.sub(line, pos1+2, pos2-3)
        elseif string.find(line, "Phases") ~= nil then
            Phases = string.gsub(string.sub(line, pos1+2, pos2-1), "&eacute;", "é")
            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
            local a = string.gsub(string.sub(line, pos1+2, pos2-1), "Dans ", "")
            Noeud_lunaire = string.gsub(a, " Jours", "")
        elseif string.find(line, "Apog") ~= nil then
            local a = string.gsub(string.sub(line, pos1+2, pos2-1), "Dans ", "")
            Apogee = string.gsub(a, " Jours", "")
        elseif string.find(line, "Perig") ~= nil then
            local a = string.gsub(string.sub(line, pos1+2, pos2-1), "Dans ", "")
            Perigee = string.gsub(a, " Jours", "")
        elseif string.find(line, "Distance") ~= nil then
            Distance = string.sub(line, pos1+2, pos2-4)
        elseif string.find(line, "Age de la Lune") ~= nil then
            Age = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "La Lune se") ~= nil then
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            Lever_LuneHeure = string.sub(a, 0, pos3-1)
            Lever_LuneMinute = string.sub(a, pos3+1)
            local pos3 = string.find(line, '">', pos2)
            local pos4 = string.find(line, "</", pos3+3)
            a = string.sub(line, pos3+2, pos4-1)
            local pos5 = string.find(a, ":")
            Coucher_LuneHeure = string.sub(a, 0, pos5-1)
            Coucher_LuneMinute = string.sub(a, pos5+1)
        elseif string.find(line, "eclipse_partielle") ~= nil then
            local pos3 = string.find(line, '">', pos1+3)
            local a = string.gsub(string.sub(line, pos3+2, pos2-1), "<br />", "à")
            Eclipse_partielle = a
        elseif string.find(line, "eclipse_totale") ~= nil then
            local pos3 = string.find(line, '">', pos1+3)
            local a = string.gsub(string.sub(line, pos3+2, pos2-1), "<br />", "à")
            Eclipse_total = a
        end
    end
    io.close(file)

end



function test_image(i)

    if i == "1" then
        return "1su.png"
    elseif i == "2" then
        return "2msu.png"
    elseif i == "3" then
        return "3psu.png"
    elseif i == "4" then
        return "4ic.png"
    elseif i == "5" then
        return "5h.png"
    elseif i == "6" then
        return "6mc.png"
    elseif i == "7" then
        return "7c.png"
    elseif i == "8" then
        return "8d.png"
    elseif i == "11" then
        return "9f.png"
    elseif i == "12" then
        return "10s.png"
    elseif i == "13" then
        return "11mcs.png"
    elseif i == "14" then
        return "12psus.png"
    elseif i == "15" then
        return "13t.png"
    elseif i == "16" then
        return "14mct.png"
    elseif i == "17" then
        return "15psut.png"
    elseif i == "18" then
        return "16r.png"
    elseif i == "19" then
        return "17fl.png"
    elseif i == "20" then
        return "18mcfl.png"
    elseif i == "21" then
        return "19psfl.png"
    elseif i == "22" then
        return "20sn.png"
    elseif i == "23" then
        return "21mcsn.png"
    elseif i == "24" then
        return "22i.png"
    elseif i == "25" then
        return "23sl.png"
    elseif i == "26" then
        return "24fr.png"
    elseif i == "29" then
        return "25rsn.png"
    elseif i == "30" then
        return "27ho.png"
    elseif i == "31" then
        return "28co.png"
    elseif i == "32" then
        return "26w.png"
    elseif i == "33" then
        return "29cl.png"
    elseif i == "34" then
        return "31mcl.png"
    elseif i == "35" then
        return "32pc.png"
    elseif i == "36" then
        return "33ic.png"
    elseif i == "37" then
        return "34h.png"
    elseif i == "38" then
        return "35mc.png"
    elseif i == "39" then
        return "36pcs.png"
    elseif i == "40" then
        return "37mcs.png"
    elseif i == "41" then
        return "38pct.png"
    elseif i == "42" then
        return "39mct.png"
    elseif i == "43" then
        return "40mcfl.png"
    elseif i == "44" then
        return "41mcsn.png"
    end

end



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



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



function icone_vent(d, fo)

    local f = tonumber(fo)
    local n

    if f <= 25 then
        n = d
    elseif f <= 50 then
        n = d + 17
    elseif f <= 75 then
        n = d + 34
    elseif f >= 76 then
        n = d + 51
    end

    if n <= 9 then 
        n = "0"..n
    end

    return n..".png"

end



function decoupage(d)

    local l1, l2, n, p1, p2, n1, n2, l1b, l2b

    if string.len(d) >= 21 then
        n = math.ceil(string.len(d)/2)
        p1 = string.find(d, " ", n)
        p2 = string.find(d, " ", -n)
        if p1 >= 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((21 - string.len(l1b))/2)
    l1 = string.rep(" ", n1)..l1b 
    n2 = math.ceil((21 - string.len(l2b))/2)
    l2 = string.rep(" ", n2)..l2b 
    
    return l1, l2

end



function jour_n(a, j)
    local s = '${exec wget -q --load-cookies '..Rep..'/cookie -O '..Rep..'/details'..j..' '..a..'details'..j..'.aspx}'
     conky_parse( s )

    local file = assert(io.open(Rep..'/details'..j, "rb") )
    local line = file:read()

    local pos3, iconej,Jour, CondMeteoj, CondMeteoj1, CondMeteoj2, Temp, TempjRes, Vent, VentDirj, VentForcej, iconev, VentP, Uv, ProbOrage, NivPrec, QPluie, QNeige, DPrecHeure, DPluieHeure, DPrecNuit, DPluieNuit, niconej, nCondMeteoj, nCondMeteoj1, nCondMeteoj2, nTemp, nTempjRes, nVent, nVentDirj, nVentForcej, niconev, nVentP, nUv, nProbOrage, nNivPrec, nQPluie, nQNeige, nDPrecHeure, nDPluieHeure, nDPrecMinute, nDPluieMinute, LeverSoleilHeure, CoucherSoleilHeure, LeverLuneHeure, CoucherLuneHeure, DureeJourHeure, DureeNuitHeure, LeverSoleilMinute, CoucherSoleilMinute, LeverLuneMinute, CoucherLuneMinute, DureeJourMinute, DureeNuitMinute

    for line in file:lines() do
        line = string.gsub(line, ",", ".")
        local pos1 = string.find(line, '">', 40)
        local pos2 = string.find(line, "</")
        if string.find(line, "imgDayIcon") ~= nil then
            pos1 =  string.find(line, 'blue/')
            pos2 = string.find(line, "_int")
            iconej =  test_image(string.sub(line, pos1+5, pos2-1))
        elseif string.find(line, "lblDetails") ~= nil then
            pos3 = string.find(line, "pour")
            Jour = string.sub(line, pos3+5, pos2-1)
        elseif string.find(line, "lblDayText") ~= nil then
            CondMeteoj = string.sub(line, pos1+2, pos2-1)
            CondMeteoj1, CondMeteoj2 = decoupage(CondMeteoj)
        elseif string.find(line, "lblHighValue") ~= nil then Temp = string.sub(line, pos1+2, pos2-7)
        elseif string.find(line, "lblRealFeelValue") ~= nil then TempjRes = string.sub(line, pos1+2, pos2-7)
        elseif string.find(line, "lblWindsValue") ~= nil then
            Vent = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(Vent, " ")
            VentDirj = string.gsub(string.sub(Vent, 1, pos3-1), "W", "O")
            VentForcej = string.sub(Vent, pos3+1)
            iconev = icone_vent(direction_vent(VentDirj), VentForcej)
            VentP = vent_plein(VentDirj)
        elseif string.find(line, "lblMaxUVValue") ~= nil then Uv = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblTStormProbValue") ~= nil then ProbOrage = string.sub(line, pos1+2, pos2-2)
        elseif string.find(line, "lblPrecipValue") ~= nil then NivPrec = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblRainValue") ~= nil then QPluie = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblSnowValue") ~= nil then QNeige = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblHoursPrecipValue") ~= nil then
                DPrecHeure = string.sub(line, pos1+2, pos2-8)
                DPrecMinute = "00"
        elseif string.find(line, "lblHoursOfRainValue") ~= nil then 
                DPluieHeure = string.sub(line, pos1+2, pos2-8)
                DPluieMinute = "00"
        elseif string.find(line, "imgNightIcon") ~= nil then
            pos1 =  string.find(line, 'blue/')
            pos2 = string.find(line, "_int")
            niconej =  test_image(string.sub(line, pos1+5, pos2-1))
        elseif string.find(line, "lblNightText") ~= nil then
            nCondMeteoj = string.sub(line, pos1+2, pos2-1)
            nCondMeteoj1, nCondMeteoj2 = decoupage(nCondMeteoj)
        elseif string.find(line, "lblLowValue") ~= nil then nTemp = string.sub(line, pos1+2, pos2-7)
        elseif string.find(line, "lblRealFeelNValue") ~= nil then nTempjRes = string.sub(line, pos1+2, pos2-7)
        elseif string.find(line, "lblWindsNValue") ~= nil then
            nVent = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(Vent, " ")
            nVentDirj = string.gsub(string.sub(Vent, 1, pos3-1), "W", "O")
            nVentForcej = string.sub(Vent, pos3+1)
            niconev = icone_vent(direction_vent(VentDirj), VentForcej)
            nVentP = vent_plein(VentDirj)
        elseif string.find(line, "lblTStormProbNValue") ~= nil then nProbOrage = string.sub(line, pos1+2, pos2-2)
        elseif string.find(line, "lblPrecipNValue") ~= nil then nNivPrec = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblRainNValue") ~= nil then nQPluie = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblSnowNValue") ~= nil then nQNeige = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblHoursPrecipNValue") ~= nil then
                nDPrecHeure = string.sub(line, pos1+2, pos2-8)
                nDPrecMinute = "00"
        elseif string.find(line, "lblHoursOfRainNValue") ~= nil then
                nDPluieHeure = string.sub(line, pos1+2, pos2-8)
                nDPluieMinute = "00"
        end
        pos1 = string.find(line, ': ')
        if string.find(line, "lblSunrise") ~= nil then
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            LeverSoleilHeure = string.sub(a, 0, pos3-1)
            LeverSoleilMinute = string.sub(a, pos3+1)
        elseif string.find(line, "lblSunset") ~= nil then
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            CoucherSoleilHeure = string.sub(a, 0, pos3-1)
            CoucherSoleilMinute = string.sub(a, pos3+1)
        elseif string.find(line, "lblMoonrise") ~= nil then
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            LeverLuneHeure = string.sub(a, 0, pos3-1)
            LeverLuneMinute = string.sub(a, pos3+1)
        elseif string.find(line, "lblMoonset") ~= nil then 
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            CoucherLuneHeure = string.sub(a, 0, pos3-1)
            CoucherLuneMinute = string.sub(a, pos3+1)
        elseif string.find(line, "lblDaylight") ~= nil then
            DureeJourHeure = string.sub(line, pos1+2, pos2-1)
            DureeJourMinute = "00"
        elseif string.find(line, "lblDarkness") ~= nil then
            DureeNuitHeure = string.sub(line, pos1+2, pos2-1)
            DureeNuitMinute = "00"
        end

    end     

    conditionJour[j] = { CondMeteo=CondMeteoj, Temp=Temp, TempRes=TempjRes, VentDir=VentDirj, VentForce=VentForcej, Uv=Uv, ProbOrage=ProbOrage, NivPrec=NivPrec, QPluie=QPluie, QNeige=QNeige, DPrecHeure=DPrecHeure, DPluieHeure=DPluieHeure, DPrecMinute=DPrecMinute, DPluieMinute=DPluieMinute, IconeM=iconej, IconeV=iconev, VentP=VentP, CondMeteo1=CondMeteoj1, CondMeteo2=CondMeteoj2 }

        conditionNuit[j] = { CondMeteo=nCondMeteoj, Temp=nTemp, TempRes=nTempjRes, VentDir=nVentDirj, VentForce=nVentForcej, ProbOrage=nProbOrage, NivPrec=nNivPrec, QPluie=nQPluie, QNeige=nQNeige, DPrecHeure=nDPrecHeure, DPluieHeure=nDPluieHeure, DPrecMinute=nDPrecMinute, DPluieMinute=nDPluieMinute, IconeM=niconej, IconeV=niconev, VentP=nVentP, CondMeteo1=nCondMeteoj1, CondMeteo2=nCondMeteoj2 }

        InfoJour[j] = { Jour=Jour, LeverSoleilHeure=LeverSoleilHeure, CoucherSoleilHeure=CoucherSoleilHeure, LeverLuneHeure=LeverLuneHeure, CoucherLuneHeure=CoucherLuneHeure, DureeJourHeure=DureeJourHeure, DureeNuitHeure=DureeNuitHeure, LeverSoleilMinute=LeverSoleilMinute, CoucherSoleilMinute=CoucherSoleilMinute, LeverLuneMinute=LeverLuneMinute, CoucherLuneMinute=CoucherLuneMinute, DureeJourMinute=DureeJourMinute, DureeNuitMinute=DureeNuitMinute }

    io.close(file)

end



function conky_Meteo_Maj(cmd, jours, delais, r)


    if t == nil then
        local bar, bar1
        local l = string.sub(cmd, 0, string.find(cmd, '/quick.')-1)
        local a = 1
        while bar == nil do
            a = a+1
            bar = string.find(l, '/', -a)
        end
        local l1 = string.sub(cmd, 0, bar-1)
        local b = 1
        while bar1 == nil do
            b = b+1
            bar1 = string.find(l1, '/', -b)
        end
        l = string.sub(cmd, bar1, string.find(cmd, '/quick.')-1)
        Rep = r..l
        if os.execute("cd "..Rep) ~= 0 then
            os.execute("mkdir "..r..string.sub(cmd, bar1, bar-1))
            os.execute("mkdir "..Rep)
        end
        t = os.time()-delais
        start = 1
    end
    if tonumber(delais) <= os.difftime(os.time(), t) then
        if os.execute("ping -c 1 www.google.com") == 0 then

            Heure = nil
            while Heure == nil do
    
                local s = '${exec wget -q --save-cookies '..Rep..'/cookie -O '..Rep..'/curr_cond_raw '..cmd..'}'
                 local addr_week = string.sub(cmd, 0, string.find(cmd, 'quick.')-1)
                 conky_parse( s )
        
                if not conditionJour then
                    conditionJour = {}
                    conditionNuit = {}
                    InfoJour= {}
                end
        
                local file = assert(io.open(Rep.."/curr_cond_raw", "rb") )
                local line = file:read()
                for line in file:lines() do
                    local pos1 = string.find(line, '">')
                    local pos2 = string.find(line, "</")
                    if string.find(line, "imgCurConCondition") ~= nil then
                        pos1 =  string.find(line, 'blue/')
                        pos2 = string.find(line, "_int")
                        icone =  test_image(string.sub(line, pos1+5, pos2-1))
                    elseif  string.find(line, "lblRealFeelValue") ~= nil then TempRes = string.sub(line, pos1+2, pos2-7)
                    elseif string.find(line, "lblCurrentTemp") ~= nil then TempAct = string.sub(line, pos1+2, pos2-7)
                    elseif string.find(line, "lblCurrentTime") ~= nil then
                        local a = string.sub(line, pos1+2, pos2-1)
                        local pos3 = string.find(a, ":")
                        Heure = string.sub(a, 0, pos3-1)
                        Minute = string.sub(a, pos3+1)
                    elseif string.find(line, "lblCurrentText") ~= nil then
                        CondMeteo = string.sub(line, pos1+2, pos2-1)
                        CondMeteo1, CondMeteo2 = decoupage(CondMeteo)
                    elseif  string.find(line, "lblWindsValue") ~= nil then
                        local Vent = string.sub(line, pos1+2, pos2-1)
                        local pos3 = string.find(Vent, " ")
                        VentDir = string.gsub(string.sub(Vent, 1, pos3-1), "W", "O")
                        VentForce = string.sub(Vent, pos3+1, -6)
                        IconeV = icone_vent(direction_vent(VentDir), VentForce)
                        VentPlein = vent_plein(VentDir)
                    elseif  string.find(line, "lblHumidityValue") ~= nil then Humidite = string.sub(line, pos1+2, pos2-2)
                    elseif string.find(line, "lblDewPointValue") ~= nil then Rose = string.sub(line, pos1+2, pos2-7)
                    elseif string.find(line, "lblPressureValue") ~= nil then Pression = string.sub(line, pos1+2, pos2-4)
                    elseif string.find(line, "lblPressureTenValue") ~= nil then EvoPression = string.sub(line, pos1+2, pos2-2)
                    elseif string.find(line, "lblVisibilityValue") ~= nil then Visibilite = string.sub(line, pos1+2, pos2-4)
                    elseif string.find(line, "lblSunRiseValue") ~= nil then
                        local a = string.sub(line, pos1+2, pos2-1)
                        local pos3 = string.find(a, ":")
                        LeverSoleilHeure = string.sub(a, 0, pos3-1)
                        LeverSoleilMinute = string.sub(a, pos3+1)
                    elseif string.find(line, "lblSunSetValue") ~= nil then
                        local a = string.sub(line, pos1+2, pos2-1)
                        local pos3 = string.find(a, ":")
                        CoucherSoleilHeure = string.sub(a, 0, pos3-1)
                        CoucherSoleilMinute = string.sub(a, pos3+1)
                    elseif string.find(line, "lblDate") ~= nil then Date = string.sub(line, pos1+2, pos2-1)
                    elseif string.find(line, "lnkLocation") ~= nil then Ville = string.sub(line, pos1+2, pos2-9)
                    end
                end     
                io.close(file)
    
                if 14400 <= os.difftime(os.time(), t) or start == 1 then
                    for i = 1,jours do jour_n(addr_week, i) end
                    start = 2
                end

                t = os.time() 
            end
            lune(r)
        end
    collectgarbage()
    end
    return " "
end


--Retour d'information météo

--Condition courrante

function conky_Meteo_IconeM(r, p, s, f)
    return "${image "..r.."/"..icone.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_TempRes()
    return tonumber(TempRes)
end

function conky_Meteo_TempAct()
    return tonumber(TempAct)
end

function conky_Meteo_Heure()
    return Heure
end

function conky_Meteo_Minute()
    return Minute
end

function conky_Meteo_CondMeteo()
    return CondMeteo
end

function conky_Meteo_CondMeteo1()
    return CondMeteo1
end

function conky_Meteo_CondMeteo2()
    return CondMeteo2
end

function conky_Meteo_VentDir()
    return VentDir
end

function conky_Meteo_VentDirP()
    return VentPlein
end

function conky_Meteo_VentForce()
    return tonumber(VentForce)
end

function conky_Meteo_IconeV(r, p, s, f)
    return "${image "..r.."/"..IconeV.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_Humidite()
    return tonumber(Humidite)
end

function conky_Meteo_Rose()
    return tonumber(Rose)
end

function conky_Meteo_Pression()
    return tonumber(Pression)
end

function conky_Meteo_EvoPression()
    return EvoPression
end

function conky_Meteo_Visibilite()
    return tonumber(Visibilite)
end

function conky_Meteo_HLeverSoleilC()
    return LeverSoleilHeure
end

function conky_Meteo_MLeverSoleilC()
    return LeverSoleilMinute
end

function conky_Meteo_HCoucherSoleilC()
    return CoucherSoleilHeure
end

function conky_Meteo_MCoucherSoleilC()
    return CoucherSoleilMinute
end

function conky_Meteo_Date()
    return Date
end

function conky_Meteo_Ville()
    return Ville
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_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_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_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_HDureePrec(j)
    return conditionJour[tonumber(j)].DPrecHeure
end

function conky_Meteo_Jour_MDureePrec(j)
    return conditionJour[tonumber(j)].DPrecMinute
end

function conky_Meteo_Jour_HDureePluie(j)
    return conditionJour[tonumber(j)].DPluieHeure
end

function conky_Meteo_Jour_MDureePluie(j)
    return conditionJour[tonumber(j)].DPluieMinute
end

function conky_Meteo_Jour_IconeM(r, p, s, f, j)
    return "${image "..r.."/"..conditionJour[tonumber(j)].IconeM.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_Jour_IconeV(r, p, s, f, j)
    return "${image "..r.."/"..conditionJour[tonumber(j)].IconeV.." -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_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_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_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_HDureePrec(j)
    return conditionNuit[tonumber(j)].DPrecHeure
end

function conky_Meteo_Nuit_MDureePrec(j)
    return conditionNuit[tonumber(j)].DPrecMinute
end

function conky_Meteo_Nuit_HDureePluie(j)
    return conditionNuit[tonumber(j)].DPluieHeure
end

function conky_Meteo_Nuit_MDureePluie(j)
    return conditionNuit[tonumber(j)].DPluieMinute
end

function conky_Meteo_Nuit_IconeM(r, p, s, f, j)
    return "${image "..r.."/"..conditionNuit[tonumber(j)].IconeM.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_Nuit_IconeV(r, p, s, f, j)
    return "${image "..r.."/"..conditionNuit[tonumber(j)].IconeV.." -p "..p.." -s "..s.." -f "..f.."}"
end


--Infos sur la journée

function conky_Meteo_Jour(j)
    return InfoJour[tonumber(j)].Jour
end

function conky_Meteo_HLeverSoleil(j)
    return InfoJour[tonumber(j)].LeverSoleilHeure
end

function conky_Meteo_MLeverSoleil(j)
    return InfoJour[tonumber(j)].LeverSoleilMinute
end

function conky_Meteo_HCoucherSoleil(j)
    return InfoJour[tonumber(j)].CoucherSoleilHeure
end

function conky_Meteo_MCoucherSoleil(j)
    return InfoJour[tonumber(j)].CoucherSoleilMinute
end

function conky_Meteo_HLeverLune(j)
    return InfoJour[tonumber(j)].LeverLuneHeure
end

function conky_Meteo_MLeverLune(j)
    return InfoJour[tonumber(j)].LeverLuneMinute
end

function conky_Meteo_HCoucherLune(j)
    return InfoJour[tonumber(j)].CoucherLuneHeure
end

function conky_Meteo_MCoucherLune(j)
    return InfoJour[tonumber(j)].CoucherLuneMinute
end

function conky_Meteo_HDureeJour(j)
    return InfoJour[tonumber(j)].DureeJourHeure
end

function conky_Meteo_MDureeJour(j)
    return InfoJour[tonumber(j)].DureeJourMinute
end

function conky_Meteo_HDureeNuit(j)
    return InfoJour[tonumber(j)].DureeNuitHeure
end

function conky_Meteo_MDureeNuit(j)
    return InfoJour[tonumber(j)].DureeNuitMinute
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()
    return Eclipse_partielle
end

function conky_Lune_EclipseTotal()
    return Eclipse_total
end

Conkyrc_meteo_lua

# -- Conky settings -- #
    background yes
    update_interval 1

    cpu_avg_samples 2
    net_avg_samples 2

    override_utf8_locale yes

    double_buffer yes
    no_buffers yes

    text_buffer_size 2048
#    imlib_cache_size 0
    # -- Window specifications -- #

    own_window yes
    own_window_type override
    own_window_transparent yes
    own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below

    border_inner_margin 0
    border_outer_margin 0

    minimum_size 280 100
    maximum_width 310
    

    alignment tm
    gap_x 0
    gap_y 20

    # -- Graphics settings -- #
    draw_shades no
    draw_outline no
    draw_borders no
    draw_graph_borders yes

    # -- Text settings -- #
    use_xft yes
    xftfont MaiandraGD:size=24
    xftalpha 0.4

    uppercase no

    default_color 8b8b8b
    # -- Declaration template -- #
    template0 ${image ~/conky/script/images/\1 -p \2 -s \3} # -- images fond -- #
    template1 ${lua Meteo_\1 \2 \3 \4 \5} # -- 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/didier/conky/script/meteo.lua

         TEXT
#### Lancement du script récupérant les données météo ####
${template1 Maj http://www.accuweather.com/fr/fr/île-de-france/argenteuil/quick-look.aspx 5 1800 /tmp}
#### Premier cadre ####
##### Heure #####
${voffset -16}${font LED_mono :style=Medium:size=60}${color 434343}${goto 30}${time %H}${goto 140}${time %M}${font LED_mono :size=25:style=Medium}${color 808080}${goto 235}${time %S}
##### Date #####
${voffset 8}${color yellow}${font URW Chancery L:style=Bold:size=18}${alignc}${exec date "+%A %d %B %Y"|sed 's/^.\| [a-z]/\U&/g'}
##### ville #####
${voffset -10}${goto 5}${color ffe595}${template1 Ville}
##### température actuelle #####
${voffset -10}${goto 15}${font URW Chancery L:style=Bold:size=30}${if_match ${template1 TempAct}<5}${color lightblue}${blink ${template1 TempAct}°}${else}${color white}${template1 TempAct}°${endif}
##### Affichage conditions météo #####
${voffset -25}${font URW Chancery L:style=Bold:size=12}${color white}${alignc}${template1  CondMeteo}
##### Affichage infos vent ######
${voffset -60}${color ffe595}${font Helvetica LT Std:style=Bold:size=10}${alignr}${template1 VentDirP}          
${color ffe595}${font Helvetica LT Std:style=Bold:size=10}${goto 200}${template1 VentForce} km/h
#### Second cadre ####
##### Affichage Probabilité de précipitations Jour/Nuit #####
${voffset 47}${color lightwhite}${font Helvetica LT Std:style=Bold:size=10}${goto 40}${template1 Jour_ProbOrage 1}${goto 220}${template1 Nuit_ProbOrage 1}
##### Affichage temperature #####
${voffset 8}${goto 75}${template1 Jour_Temp 1}°${goto 250}${template1 Nuit_Temp 1}°
##### Affichage conditions météo #####
${voffset -8}${font Bitstream Vera Sans Mono:style=condensed:size=6}${color grey} ${template1  Jour_CondMeteo1 1}${goto 170} ${template1  Nuit_CondMeteo1 1}
 ${template1  Jour_CondMeteo2 1}${goto 170} ${template1  Nuit_CondMeteo2 1}
##### Affichage lunaison #####
${voffset -65}${font URW Chancery L:style=Bold:size=10}${color white}${alignc}${template3 ephemerides1}
${voffset -5}${alignc}${template3 ephemerides2}
#### troisieme cadre ####
${voffset 52}${font Ubuntu :size=10:style=bold}${color lightwhite}${goto 35}${template1 Jour_ProbOrage 2}${goto 105}${template1 Jour_ProbOrage 3}${goto 170}${template1 Jour_ProbOrage 4}${goto 235}${template1 Jour_ProbOrage 5}
##### Affichage temperature #####
${voffset 14}${goto 27}${font Ubuntu :size=10:style=bold}${color red}${template1 Jour_Temp 2}°${color white}/${color lightblue}${template1 Nuit_Temp 2}°${goto 97}${color red}${template1 Jour_Temp 3}°${color white}/${color lightblue}${template1 Nuit_Temp 3}°${goto 167}${color red}${template1 Jour_Temp 4}°${color white}/${color lightblue}${template1 Nuit_Temp 4}°${goto 237}${color red}${template1 Jour_Temp 5}°${color white}/${color lightblue}${template1 Nuit_Temp 5}°
##### Affichage vitesse du vent #####
${voffset 3}${font Ubuntu :size=9:style=bold}${color ffe595}${goto 27}${template1 Jour_VentForce 2}${font Ubuntu :size=6:style=bold} km/h${goto 97}${voffset -4}${font Ubuntu :size=9:style=bold}${template1 Jour_VentForce 3}${font Ubuntu :size=6:style=bold} km/h${goto 167}${voffset -4}${font Ubuntu :size=9:style=bold}${template1 Jour_VentForce 4}${font Ubuntu :size=6:style=bold} km/h${goto 237}${voffset -4}${font Ubuntu :size=9:style=bold}${template1 Jour_VentForce 5}${font Ubuntu :size=6:style=bold} km/h
#### quatrième cadre ####
##### Heure mise à jour #####
${voffset 44}${font URW Chancery L:style=Bold:size=16}${alignc}Dernière mise à jour : ${template1 Heure}h${template1 Minute}

#### Affichage des cadres utilisés dans le conky ####
${voffset -935}
#### premier cadre ####
${template0 base.png 0,40 280x170}
${template0 flip_bg.png 24,10 100x100}
${template0 flip_bg.png 134,10 100x100}
#### Second cadre ####
${template0 base.png 0,245 280x50}
#### troisieme cadre ####
${template0 base.png 0,320 280x40}
${template0 base180.png 0,358 280x40}
#### quatrieme cadre ####
${template0 base1.png 0,420 280x30}
#### icones premier cadre ####
${template2 IconeM ~/conky/meteo+lune/icones/base 74,120 132x79}
${template2 IconeV ~/conky/meteo+lune/icones/base/vent 235,130 44x44}
#### icones Second cadre ####
${template2 Jour_IconeM ~/conky/meteo+lune/icones/base -15,205 132x79 1}
${template2 Nuit_IconeM ~/conky/meteo+lune/icones/base 160,205 132x79 1}
${image /tmp/lune.png -p 116,215 -s 53x53 -f 60}
#### icones troisieme cadre ####
${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 0,295 86x52 2}
${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 68,295 86x52 3}
${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 133,295 86x52 4}
${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 200,295 86x52 5}
${template2 Jour_IconeV ~/conky/meteo+lune/icones/base/vent 0,344 30x30 2}
${template2 Jour_IconeV ~/conky/meteo+lune/icones/base/vent 70,344 30x30 3}
${template2 Jour_IconeV ~/conky/meteo+lune/icones/base/vent 140,344 30x30 4}
${template2 Jour_IconeV ~/conky/meteo+lune/icones/base/vent 210,344 30x30 5}
${template2 Nuit_IconeM ~/conky/meteo+lune/icones/base 0,375 86x52 2}
${template2 Nuit_IconeM ~/conky/meteo+lune/icones/base 68,375 86x52 3}
${template2 Nuit_IconeM ~/conky/meteo+lune/icones/base 133,375 86x52 4}
${template2 Nuit_IconeM ~/conky/meteo+lune/icones/base 200,375 86x52 5}

Vous remarquerez l'utisation de template.
ainsi que les apelles lua et lua_parse.
Au fait il faut dans l'adresse internet mettre les caractère accentué en normal par exemple pour moi "île-de-france" à la place de "%c3%aele-de-france"

Les plus courageux pouront tester cher eux moi je tourne déjà avec et pas de soucis.
1324407325.png     1324491276.png

P.S. : un truc qui m'a pas mal bloqué il faut installer lua5.1 (et oui il est neuneu le monsieur)

P.S.2. : destroyedlolo, ce serais sympa de voir ton script, je suis certain que se sera instructif.

Edit : Toutes les fonctions sont vérifiées et fonctionnent (il y avait des petits soucis qui sont réglés)
Edit2 : Correction fonction vent direction pleine
Edit3 : Séparation Heure Minute pour tous ce qui est horaire (mise à jour, lever soleil ...)
Edit4 : Mise à jour prévision toutes les 4 heures
Edit5 : Ajout sous rep "région/ville"
Edit6 : Ajout d'une collecte d'ordure

Dernière modification par Didier-T (Le 24/12/2011, à 09:20)

Hors ligne

#378 Le 21/12/2011, à 02:28

destroyedlolo

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

Voici donc le resultat :

1324425292.png

Il faut donc :

1/ L'installation

  • Il faut creer son compte dans http://www.myweather2.com : c'est gratuit big_smile

  • aller dans "Developer Zone / Ski Resort Snow Report and 6 Day Weather API" pour indiquer la station dont on souhaite avoir la meteo ... 1 seule station par compte.
    Ca donne une URL contenant votre id perso et une clef ... c'est l'URL qui permet d'acceder au flux XML. Attention, c'est perso, il ne faut pas la partager

  • aller dans "Services / Weather API / Ski Resort Snow Report and Weather Forecast API" : on se tape des infos qu'ils donnent car elles sont fausses (malheureusement sad ), mais il faut recuperer les fichiers du cadre "Weather Code and Icons". Le fichier CSV contient une cross reference entre les codes de conditions meteo et les icones, le zip contient les dits icones. On les placera dans un sous repertoire nome Resources. (on unzipera les icones qui iront dans Resources/Icons).

2/ Le script LUA.

require "lxp"

-- Configuration
HOME="."                        -- Test : répertoire courant
ans_s = "pas encore remplis"    -- Dernière réponse traitée

--[[ Convertie une ligne CSV
    Depuis http://www.lua.org/pil/20.4.html
]]

function fromCSV (s)
    s = s .. ','        -- ending comma
    local t = {}        -- table to collect fields
    local fieldstart = 1
    repeat -- next field is quoted? (start with `"'?)
        if string.find(s, '^"', fieldstart) then
            local a, c
            local i  = fieldstart
            repeat -- find closing quote
                a, i, c = string.find(s, '"("?)', i+1)
            until c ~= '"'    -- quote not followed by quote?
            if not i then error('unmatched "') end
            local f = string.sub(s, fieldstart+1, i-1)
            table.insert(t, (string.gsub(f, '""', '"')))
            fieldstart = string.find(s, ',', i) + 1
        else                -- unquoted; find next comma
            local nexti = string.find(s, ',', fieldstart)
            table.insert(t, string.sub(s, fieldstart, nexti-1))
            fieldstart = nexti + 1
        end
    until fieldstart > string.len(s)
    return t
end

--[[ Maj des données depuis les données XML ]]
function conky_MyWeather_maj( cmd )
    if not icnXref then        -- Table de correspondance des icônes
        icnXref = {}
        for l in io.lines(HOME .. "/Resources/WebService_WeatherCondition.csv") do
            local t = fromCSV(l)
            if string.find(t[1], "^%d") then    -- ignore les entetes
                icnXref[t[1]] = { DayWeatherText=t[2], NightWeatherText=t[3], DayIcon=t[4], NightIcon=t[5] }
            end
        end
--for i,v in pairs(icnXref["0"]) do print(i,v) end
--print(icnXref["0"].DayIcon)
    end

    s = conky_parse( cmd )

    if s == "" then            -- Pas de reponse
        return ""
    end

    if s == ans_s then        -- la reponse n'a pas changée
        return "inchangee"    -- on garde les valeurs precedentes
    end
    ans_s = s

        -- construit la reponse
    meteo = {}
    local stack = {}
    nb_forcast = 0
    callbacks = {
        StartElement = function (parser, name, attrs)
            if name == "forecast" then
                nb_forcast = nb_forcast + 1
                name = name .. nb_forcast
            end
            table.insert(stack, name)
        end,
        EndElement = function (parser, name)
            local closed = table.remove(stack) -- supprime le dernier element
            if closed ~= name then
                if name ~= "forecast" or string.sub(closed,1,8)~= "forecast" then
                    error("Fermeture de '".. name .."' alors qu'est attendu '".. closed .."'")
                end
            end
        end,
        CharacterData = function (parser, string)
            local var = "meteo"
            for i,v in ipairs(stack) do var = var ..'.'..v end
            meteo[var] =  string
        end
    }
    p = lxp.new(callbacks)
    p:parse(s)
    p:parse()
    p:close() 
-- for k,v in pairs(meteo ) do print(k,v) end

        -- Formate la date des conditions
    local a,m,j,h,mi = string.match(meteo["meteo.weather.snow_report.report_date"],"(%d+)-(%d+)-(%d+) (%d+):(%d+)")
    meteo["meteo.weather.snow_report.report_date"] = os.time{year=a, month=m, day=j, hour=h, min=mi}

        -- Et celles des forcast
    for i=1, nb_forcast do
        local a,m,j = string.match(meteo["meteo.weather.forecast".. i ..".date"],"(%d+)-(%d+)-(%d+)")
        meteo["meteo.weather.forecast".. i ..".date"] = os.time{year=a, month=m, day=j, hour=0 }
    end

    return "ok"
end

function conky_MyWeather_reportDate()
    return os.date("%a %d %b %Y, %H:%M", meteo["meteo.weather.snow_report.report_date"])
end

function conky_MyWeather_reportLowDepth()
    return meteo["meteo.weather.snow_report.lower_snow_depth"]
end

function conky_MyWeather_reportHighDepth()
    return meteo["meteo.weather.snow_report.upper_snow_depth"]
end

function conky_MyWeather_reportLast()
    return meteo["meteo.weather.snow_report.last_snow_date"]
end

function conky_MyWeather_reportCondition()
    return meteo["meteo.weather.snow_report.conditions"]
end

function conky_MyWeather_fDate( num )
    return os.date("%a %d %b %Y", meteo["meteo.weather.forecast".. num ..".date"])
end

function conky_MyWeather_fMin(num)
    return  meteo["meteo.weather.forecast".. num ..".night_min_temp"]
end

function conky_MyWeather_fMax(num)
    return  meteo["meteo.weather.forecast".. num ..".day_max_temp"]
end

function conky_MyWeather_fDayIcon( num )
    return '${image ' .. HOME .."/Resources/Icons/".. icnXref[meteo["meteo.weather.forecast".. num ..".day.weather_code"]].DayIcon ..' -p 9,' .. 16 + tonumber(num)*69 ..'}'
end

function conky_MyWeather_fNightIcon( num )
    return '${image ' .. HOME .."/Resources/Icons/".. icnXref[meteo["meteo.weather.forecast".. num ..".night.weather_code"]].NightIcon ..' -p 125,' .. 16 + tonumber(num)*69 ..'}'
end

function conky_MyWeather_fDayWSpeed( num )
    return  meteo["meteo.weather.forecast".. num ..".day.wind.speed"]
end

function conky_MyWeather_fDayWDirection( num )
    return  meteo["meteo.weather.forecast".. num ..".day.wind.dir"]
end

function conky_MyWeather_fNightWSpeed( num )
    return  meteo["meteo.weather.forecast".. num ..".night.wind.speed"]
end

function conky_MyWeather_fNightWDirection( num )
    return  meteo["meteo.weather.forecast".. num ..".night.wind.dir"]
end

Alors ce script est encore plus optimise que le precedent car je me suis rendu compte que les variables globales sont concervees d'un run a l'autre. Cool, donc je ne charge qu'une fois le contenu du fichier de cross references (lignes 37 a 44).
Idem avec la reponse XML : on ne met a jour que si la reponse a changee (lignes 55 a 58).
L'un dans l'autre, ce script est donc totalement indolore meme sur des machines tres tres peu puissante wink

3/ la config conky.

alignment top_left
double_buffer yes
default_color black
background no
update_interval 1.0 # Sera changé dans le script une fois les données récupérées
out_to_console no
out_to_stderr no

own_window yes
own_window_class Conky
own_window_type normal
#own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_transparent no
own_window_colour eeeeee
default_shade_color dddddd
lua_load MyWeather.lua

# text_buffer_size    312

# Les templates ne prennent pas en compte text_buffer_size donc j'ai ete oblige de les coupe en 2 ...
template0 ${color Grey}$hr\n${color BlueViolet}Prévision pour : $color${lua MyWeather_fDate \1}
template1 ${color BlueViolet}Températures : $color${lua MyWeather_fMin \1}${color BlueViolet}/$color${lua MyWeather_fMax \1}${color BlueViolet}°C\n${lua_parse MyWeather_fDayIcon \1}${lua_parse MyWeather_fNightIcon \1}\n${voffset 18} $color${lua MyWeather_fDayWDirection \1} ${lua MyWeather_fDayWSpeed \1}${color BlueViolet} km/h${offset 50}$color${lua MyWeather_fNightWDirection \1} ${lua MyWeather_fNightWSpeed \1}${color BlueViolet} km/h

TEXT
${if_empty ${lua MyWeather_maj ${curl http://localhost/~laurent/weather.ashx }}}
En attente ...
${else}${iconv_start UTF-8 ISO_8859-1} ${color DarkGreen}La Clusaz${offset 8}$color${voffset -2}${hr}

${color BlueViolet}Condition au : $color${lua MyWeather_reportDate}
${color BlueViolet}Couche de neige : ${color orange}${lua MyWeather_reportLowDepth}${color BlueViolet}/${color orange}${lua MyWeather_reportHighDepth} ${color BlueViolet}cm
${color BlueViolet}Dernière chute : $color${lua MyWeather_reportLast}
${lua MyWeather_reportCondition}
${template0 1}
${template1 1}
${template0 2}
${template1 2}
${iconv_stop}$endif

A la ligne 25, mettre dans le curl l'URL que myweather vous aura donne. Ici, ce n'est qu'une copie locale pour ne pas me faire blackliste durant les testes.

Comme vous pouvez le voire, conky ouvrira sa propre fenetre ... car les icones fournis par le site sont mal decoupes donc on voit d'horribles points blancs sur un fond sombre (en plus, ils ne sont pas tres beau mais bon ... ils sont fournis et c'est deja sympa).

Je ne pense pas que j'irai plus loin avec ce site car :

  • deja ... ils ne repondent pas hmm

  • une seule station, c'est trop leger

  • ensuite, il me manque des informations CRUCIALES : par exemple, c'est bien qu'ils donnent l'epaisseur de la couche de neige ... mais ca serait encore mieux qu'ils donnent aussi l'epaisseur de poudre, le risque d'avalanche, ...

  • enfin et surtout : 2 jours y compris aujourd'hui, c'est vraiment trop leger

Mais bon, je suis assez content de ce script surtout pour les optimisations apportees. Maintenant, je vais voir sur les forums si qq'un connaitrait un flux publique plus complet. Au pire, j'extrairais les infos directement sur des sites comme l'excellentissime skiinfo.fr ... mais c'est moins fun tongue

Hors ligne

#379 Le 22/12/2011, à 09:40

Didier-T

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

Pour le fun toutes les infos récupérable sur 1 journée.

1324539531.png

Hors ligne

#380 Le 22/12/2011, à 10:29

jpdipsy

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

Didier-T a écrit :

Pour le fun toutes les infos récupérable sur 1 journée.

Joli mais pour le moment chez moi ton  scripts en lua et ton conky  (en l'état avec ton adresse) ne fonctionnent pas (du moins ne récupère rien) malgré l'installation de lua 5.1. Tu n'as pas installé autre chose par hasard parce que là je suis dans le flou.
Sinon bravo pour le boulot .

Hors ligne

#381 Le 22/12/2011, à 12:24

Didier-T

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

jpdipsy a écrit :
Didier-T a écrit :

Pour le fun toutes les infos récupérable sur 1 journée.

Joli mais pour le moment chez moi ton  scripts en lua et ton conky  (en l'état avec ton adresse) ne fonctionnent pas (du moins ne récupère rien) malgré l'installation de lua 5.1. Tu n'as pas installé autre chose par hasard parce que là je suis dans le flou.
Sinon bravo pour le boulot .

Non, à part lua5.1 je n'ai rien installé.
A tu bien un répertoire /tmp (si tu n'as rien changé, je vois que ça)

Hors ligne

#382 Le 22/12/2011, à 17:38

jpdipsy

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

Didier-T a écrit :

Non, à part lua5.1 je n'ai rien installé.
A tu bien un répertoire /tmp (si tu n'as rien changé, je vois que ça)

ça fonctionne désolé pour le bruit j'avais mal orthographié le nom du script  lua . Ach! la vieillesse !

Donc du coup tout se retrouve dans /tmp et, ce qui à mon avis serais bien c'est "/tmp/nom de la ville" ou "/tmp/meteo/nom de la ville" pour ceux qui voudrais avoir plusieurs suivis météo.Quand à avoir scinder les heures et minutes c'est impec.
Bon j'ai plus qu'a étudier lua maintenant.

A+

Hors ligne

#383 Le 22/12/2011, à 17:55

Didier-T

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

jpdipsy a écrit :
Didier-T a écrit :

Non, à part lua5.1 je n'ai rien installé.
A tu bien un répertoire /tmp (si tu n'as rien changé, je vois que ça)

ça fonctionne désolé pour le bruit j'avais mal orthographié le nom du script  lua . Ach! la vieillesse !

Donc du coup tout se retrouve dans /tmp et, ce qui à mon avis serais bien c'est "/tmp/nom de la ville" ou "/tmp/meteo/nom de la ville" pour ceux qui voudrais avoir plusieurs suivis météo.Quand à avoir scinder les heures et minutes c'est impec.
Bon j'ai plus qu'a étudier lua maintenant.

A+

Je vais regarder comment créer des répertoires avec lua, les docs sont rares et souvent en anglais hmm , dans le pire des cas je tricherai un peut en appelant une fonction système. tongue

Hors ligne

#384 Le 22/12/2011, à 18:58

jpdipsy

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

Didier-T a écrit :

Je vais regarder comment créer des répertoires avec lua, les docs sont rares et souvent en anglais hmm , dans le pire des cas je tricherai un peut en appelant une fonction système. tongue

peut-être çà 22.2 – Other System Calls

Hors ligne

#385 Le 22/12/2011, à 20:17

Didier-T

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

jpdipsy a écrit :
Didier-T a écrit :

Je vais regarder comment créer des répertoires avec lua, les docs sont rares et souvent en anglais hmm , dans le pire des cas je tricherai un peut en appelant une fonction système. tongue

peut-être çà 22.2 – Other System Calls

Parfais, la doc lua le dit, il faut tricher en appelant une fonction système. big_smile

Merci jpdipsy wink

Hors ligne

#386 Le 22/12/2011, à 22:06

Didier-T

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

jpdipsy a écrit :

...
ce qui à mon avis serais bien c'est "/tmp/nom de la ville"
...

C'est fait smile

A+

Edit : j'ai réalisé qu'il y avait plusieurs ville en France portant le même nom donc ce sera "/tmp/région/ville"
         Pour simplifier les choses l’icône lune reste dans "/tmp"

Dernière modification par Didier-T (Le 23/12/2011, à 08:00)

Hors ligne

#387 Le 31/12/2011, à 00:52

Chokapic

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

Salut à tous wink ,
Après moultes essais, j'ai fini par comprendre comment çà fonctionnait. Un grand merci à la communauté de ce forum et plus particulièrement à Didier­T & adama88 pour leurs config sur lesquelles je me suis appuyé pour faire la mienne.
Je vous livre donc la météo via conky et accuweather telle que je la conçois pour l'instant. Ce n'est qu'une ébauche mais çà contribuera à aider les newbies qui pédalent encore à ce sujet. smile
Une petite capture d'écran pour commencer :
mes conky
Et ma config ici : https://skydrive.live.com/redir.aspx?ci … parid=root
Bonne Année à tous !


Le plus grand pouvoir de décision dans ce monde, c'est le nombre de personnes qui pensent et agissent de concert au même moment...il est temps de s'en servir pour rétablir les valeurs fondamentales de et pour l'Humanité Une.
Crunchbang sur du 64 bits et  4 core c'est comme un TGV sur une autoroute : sécurité et vitesse !  ;-)

Hors ligne

#388 Le 04/01/2012, à 12:15

destroyedlolo

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

Salut et bonne annee.

Pour ceux qui seraient interesse par LUA, j'ai trouvé un tuto en Francais

Bon, c'est visiblement une mauvaise traduction de l'anglais et ce n'est pas toujours compréhensible mais c'est mieux que rien ... (perso, je reste sur la doc anglaise ...).

J'ai adopté ma météo Google qui suffit a mes besoins. Pour la neige ... je laisse tomber pour le moment, j'y reviendrais sans doute quand j'aurai plus de temps.
Maintenant que je maîtrise a peu pret LUA, je m'attaque a la supervision des disques amovibles (ajoute les infos d'un disque pas forcement toujours monte), et surtout de systèmes distants par SNMP.
Si j'arrive a qq chose, je le publirait sur mon site.

Bye.

Hors ligne

#389 Le 05/01/2012, à 23:29

TrucSarret

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

Bonjour à tous,

Je fais mes premiers essais avec conky, et depuis peu sous linux-mint (soyez indulgents)
J'ai installé le package de Didier-T avec les scripts .sh et .lua et suivi tant bien que mal la notice

Le lancement de conkyrc_meteo_lua dans un terminal me renvoie les messages :
Conky: invalid configuration file 'conkyrc_meteo_lua'

Conky: desktop window (1200023) is subwindow of root window (19c)
Conky: window type - desktop
Conky: drawing to created window (0x1a00001)
Conky: drawing to single buffer

Est-ce que c'est grave docteur ?

Que cela ne vous empêche pas de passer une excellente année !


http://eaudolle.over-blog.com

Hors ligne

#390 Le 05/01/2012, à 23:36

Didier-T

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

TrucSarret a écrit :

Bonjour à tous,

Je fais mes premiers essais avec conky, et depuis peu sous linux-mint (soyez indulgents)
J'ai installé le package de Didier-T avec les scripts .sh et .lua et suivi tant bien que mal la notice

Le lancement de conkyrc_meteo_lua dans un terminal me renvoie les messages :
Conky: invalid configuration file 'conkyrc_meteo_lua'

Conky: desktop window (1200023) is subwindow of root window (19c)
Conky: window type - desktop
Conky: drawing to created window (0x1a00001)
Conky: drawing to single buffer

Est-ce que c'est grave docteur ?

Que cela ne vous empêche pas de passer une excellente année !

tu peu nous montrer ton script conky, merci

Au fait bonne année @ tous !!!

Hors ligne

#391 Le 05/01/2012, à 23:45

TrucSarret

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

Voilà le contenu de mon .conkyrc_meteo_lua

# -- Conky settings -- #
background yes
update_interval 1

cpu_avg_samples 2
net_avg_samples 2

override_utf8_locale yes

double_buffer yes
no_buffers yes

text_buffer_size 2048
#imlib_cache_size 0
# -- Window specifications -- #

own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below

border_inner_margin 0
border_outer_margin 0

minimum_size 280 100
maximum_width 310


alignment tm
gap_x 0
gap_y 20

# -- Graphics settings -- #
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders yes

# -- Text settings -- #
use_xft yes
xftfont MaiandraGD:size=24
xftalpha 0.4

uppercase no

default_color 8b8b8b
# -- Declaration template -- #
template0 ${image ~/conky/script/images/\1 -p \2 -s \3} # -- images fond -- #
template1 ${lua Meteo_\1 \2 \3 \4 \5} # -- 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/trucsarret/conky/script/meteo.lua

TEXT
#### Lancement du script récupérant les données météo ####
${template1 Maj http://www.accuweather.com/fr/fr/rhône-alpes/valence/quick-look.aspx 5 1800 /tmp}
#### Premier cadre ####
##### Heure #####
${voffset -16}${font LED_mono :style=Medium:size=60}${color 434343}${goto 30}${time %H}${goto 140}${time %M}${font LED_mono :size=25:style=Medium}${color 808080}${goto 235}${time %S}
##### Date #####
${voffset 8}${color yellow}${font URW Chancery L:style=Bold:size=18}${alignc}${exec date "+%A %d %B %Y"|sed 's/^.\| [a-z]/\U&/g'}
##### ville #####
${voffset -10}${goto 5}${color ffe595}${template1 Ville}
##### température actuelle #####
${voffset -10}${goto 15}${font URW Chancery L:style=Bold:size=30}${if_match ${template1 TempAct}<5}${color lightblue}${blink ${template1 TempAct}°}${else}${color white}${template1 TempAct}°${endif}
##### Affichage conditions météo #####
${voffset -25}${font URW Chancery L:style=Bold:size=12}${color white}${alignc}${template1  CondMeteo}
##### Affichage infos vent ######
${voffset -60}${color ffe595}${font Helvetica LT Std:style=Bold:size=10}${alignr}${template1 VentDirP}  
${color ffe595}${font Helvetica LT Std:style=Bold:size=10}${goto 200}${template1 VentForce} km/h
#### Second cadre ####
##### Affichage Probabilité de précipitations Jour/Nuit #####
${voffset 47}${color lightwhite}${font Helvetica LT Std:style=Bold:size=10}${goto 40}${template1 Jour_ProbOrage 1}${goto 220}${template1 Nuit_ProbOrage 1}
##### Affichage temperature #####
${voffset 8}${goto 75}${template1 Jour_Temp 1}°${goto 250}${template1 Nuit_Temp 1}°
##### Affichage conditions météo #####
${voffset -8}${font Bitstream Vera Sans Mono:style=condensed:size=6}${color grey} ${template1  Jour_CondMeteo1 1}${goto 170} ${template1  Nuit_CondMeteo1 1}
 ${template1  Jour_CondMeteo2 1}${goto 170} ${template1  Nuit_CondMeteo2 1}
##### Affichage lunaison #####
${voffset -65}${font URW Chancery L:style=Bold:size=10}${color white}${alignc}${template3 ephemerides1}
${voffset -5}${alignc}${template3 ephemerides2}
#### troisieme cadre ####
${voffset 52}${font Ubuntu :size=10:style=bold}${color lightwhite}${goto 35}${template1 Jour_ProbOrage 2}${goto 105}${template1 Jour_ProbOrage 3}${goto 170}${template1 Jour_ProbOrage 4}${goto 235}${template1 Jour_ProbOrage 5}
##### Affichage temperature #####
${voffset 14}${goto 27}${font Ubuntu :size=10:style=bold}${color red}${template1 Jour_Temp 2}°${color white}/${color lightblue}${template1 Nuit_Temp 2}°${goto 97}${color red}${template1 Jour_Temp 3}°${color white}/${color lightblue}${template1 Nuit_Temp 3}°${goto 167}${color red}${template1 Jour_Temp 4}°${color white}/${color lightblue}${template1 Nuit_Temp 4}°${goto 237}${color red}${template1 Jour_Temp 5}°${color white}/${color lightblue}${template1 Nuit_Temp 5}°
##### Affichage vitesse du vent #####
${voffset 3}${font Ubuntu :size=9:style=bold}${color ffe595}${goto 27}${template1 Jour_VentForce 2}${font Ubuntu :size=6:style=bold} km/h${goto 97}${voffset -4}${font Ubuntu :size=9:style=bold}${template1 Jour_VentForce 3}${font Ubuntu :size=6:style=bold} km/h${goto 167}${voffset -4}${font Ubuntu :size=9:style=bold}${template1 Jour_VentForce 4}${font Ubuntu :size=6:style=bold} km/h${goto 237}${voffset -4}${font Ubuntu :size=9:style=bold}${template1 Jour_VentForce 5}${font Ubuntu :size=6:style=bold} km/h
#### quatrième cadre ####
##### Heure mise à jour #####
${voffset 44}${font URW Chancery L:style=Bold:size=16}${alignc}Dernière mise à jour : ${template1 Heure}h${template1 Minute}

#### Affichage des cadres utilisés dans le conky ####
${voffset -935}
#### premier cadre ####
${template0 base.png 0,40 280x170}
${template0 flip_bg.png 24,10 100x100}
${template0 flip_bg.png 134,10 100x100}
#### Second cadre ####
${template0 base.png 0,245 280x50}
#### troisieme cadre ####
${template0 base.png 0,320 280x40}
${template0 base180.png 0,358 280x40}
#### quatrieme cadre ####
${template0 base1.png 0,420 280x30}
#### icones premier cadre ####
${template2 IconeM ~/conky/meteo+lune/icones/base 74,120 132x79}
${template2 IconeV ~/conky/meteo+lune/icones/base/vent 235,130 44x44}
#### icones Second cadre ####
${template2 Jour_IconeM ~/conky/meteo+lune/icones/base -15,205 132x79 1}
${template2 Nuit_IconeM ~/conky/meteo+lune/icones/base 160,205 132x79 1}
${image /tmp/lune.png -p 116,215 -s 53x53 -f 60}
#### icones troisieme cadre ####
${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 0,295 86x52 2}
${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 68,295 86x52 3}
${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 133,295 86x52 4}
${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 200,295 86x52 5}
${template2 Jour_IconeV ~/conky/meteo+lune/icones/base/vent 0,344 30x30 2}
${template2 Jour_IconeV ~/conky/meteo+lune/icones/base/vent 70,344 30x30 3}
${template2 Jour_IconeV ~/conky/meteo+lune/icones/base/vent 140,344 30x30 4}
${template2 Jour_IconeV ~/conky/meteo+lune/icones/base/vent 210,344 30x30 5}
${template2 Nuit_IconeM ~/conky/meteo+lune/icones/base 0,375 86x52 2}
${template2 Nuit_IconeM ~/conky/meteo+lune/icones/base 68,375 86x52 3}
${template2 Nuit_IconeM ~/conky/meteo+lune/icones/base 133,375 86x52 4}
${template2 Nuit_IconeM ~/conky/meteo+lune/icones/base 200,375 86x52 5}

Merci pour la rapidité !!


http://eaudolle.over-blog.com

Hors ligne

#392 Le 06/01/2012, à 00:00

TrucSarret

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

Avec en bonus mon fichier meteo.cfg car je ne suis pas sûr de l'indication du repertoire TempShell

# Créé par jpdipsy (forum.ubuntu-fr.org)

#Répertoire de travail
DirShell="$HOME/conky/meteo+lune"

#Répertoire temporaire (si pas de disque ram pareil que DirShell)
TempShell="/tmp"

#Copier votre adresse Accuweather ici
address="http://www.accuweather.com/fr/fr/rhône-alpes/valence/quick-look.aspx"

#Prévision sur n jour (de 1 à 15)
periode=5

#Temps entre les mises à jour prévision (en heure+minute)
update=300

http://eaudolle.over-blog.com

Hors ligne

#393 Le 06/01/2012, à 07:33

Didier-T

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

bonjour TrucSarret,

Alors tu utilise le script conky pour lua, mais a tu créer le script en meteo.lua qui vas avec ?
Tu le trouveras ici, ce script fonctionne pleinement, mais je n'ai pas encore fais de pack ni de notice.

Hors ligne

#394 Le 06/01/2012, à 07:37

jpdipsy

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

Hello toutes et tous meilleurs voeux

Didier (et all) sauf erreur de ma part le script lua ne permettait pas d'afficher les jours en abrégé alors je me suis permis de l'ajouter ce qui donne :

-- Créé par Didier-T (forum.ubuntu-fr.org)




require "io"

function lune(r)

    s = "${exec wget -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)
        if string.find(line, "ephemerides_1") ~= nil then
            pos1 =  string.find(line, 'src="')
            pos2 = string.find(line, '" /')
            s = "${exec wget -q -O "..r.."/lune.png http://www.calendrier-lunaire.net/"..string.sub(line, pos1+5, pos2-1).."}"
            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+2, pos2-1)
            local pos3 = string.find(line, 'n>', pos2)
            local pos4 = string.find(line, "</", pos2+3)
            ephemerides2 = string.sub(line, pos3+3, pos4-1)
            ephemerides = ephemerides1.." "..ephemerides2
        elseif string.find(line, "Visibilit") ~= nil then
            Visibilite = string.sub(line, pos1+2, pos2-3)
        elseif string.find(line, "Phases") ~= nil then
            Phases = string.gsub(string.sub(line, pos1+2, pos2-1), "&eacute;", "é")
            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
            local a = string.gsub(string.sub(line, pos1+2, pos2-1), "Dans ", "")
            Noeud_lunaire = string.gsub(a, " Jours", "")
        elseif string.find(line, "Apog") ~= nil then
            local a = string.gsub(string.sub(line, pos1+2, pos2-1), "Dans ", "")
            Apogee = string.gsub(a, " Jours", "")
        elseif string.find(line, "Perig") ~= nil then
            local a = string.gsub(string.sub(line, pos1+2, pos2-1), "Dans ", "")
            Perigee = string.gsub(a, " Jours", "")
        elseif string.find(line, "Distance") ~= nil then
            Distance = string.sub(line, pos1+2, pos2-4)
        elseif string.find(line, "Age de la Lune") ~= nil then
            Age = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "La Lune se") ~= nil then
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            Lever_LuneHeure = string.sub(a, 0, pos3-1)
            Lever_LuneMinute = string.sub(a, pos3+1)
            local pos3 = string.find(line, '">', pos2)
            local pos4 = string.find(line, "</", pos3+3)
            a = string.sub(line, pos3+2, pos4-1)
            local pos5 = string.find(a, ":")
            Coucher_LuneHeure = string.sub(a, 0, pos5-1)
            Coucher_LuneMinute = string.sub(a, pos5+1)
        elseif string.find(line, "eclipse_partielle") ~= nil then
            local pos3 = string.find(line, '">', pos1+3)
            local a = string.gsub(string.sub(line, pos3+2, pos2-1), "<br />", "à")
            Eclipse_partielle = a
        elseif string.find(line, "eclipse_totale") ~= nil then
            local pos3 = string.find(line, '">', pos1+3)
            local a = string.gsub(string.sub(line, pos3+2, pos2-1), "<br />", "à")
            Eclipse_total = a
        end
    end
    io.close(file)

end



function test_image(i)

    if i == "1" then
        return "1su.png"
    elseif i == "2" then
        return "2msu.png"
    elseif i == "3" then
        return "3psu.png"
    elseif i == "4" then
        return "4ic.png"
    elseif i == "5" then
        return "5h.png"
    elseif i == "6" then
        return "6mc.png"
    elseif i == "7" then
        return "7c.png"
    elseif i == "8" then
        return "8d.png"
    elseif i == "11" then
        return "9f.png"
    elseif i == "12" then
        return "10s.png"
    elseif i == "13" then
        return "11mcs.png"
    elseif i == "14" then
        return "12psus.png"
    elseif i == "15" then
        return "13t.png"
    elseif i == "16" then
        return "14mct.png"
    elseif i == "17" then
        return "15psut.png"
    elseif i == "18" then
        return "16r.png"
    elseif i == "19" then
        return "17fl.png"
    elseif i == "20" then
        return "18mcfl.png"
    elseif i == "21" then
        return "19psfl.png"
    elseif i == "22" then
        return "20sn.png"
    elseif i == "23" then
        return "21mcsn.png"
    elseif i == "24" then
        return "22i.png"
    elseif i == "25" then
        return "23sl.png"
    elseif i == "26" then
        return "24fr.png"
    elseif i == "29" then
        return "25rsn.png"
    elseif i == "30" then
        return "27ho.png"
    elseif i == "31" then
        return "28co.png"
    elseif i == "32" then
        return "26w.png"
    elseif i == "33" then
        return "29cl.png"
    elseif i == "34" then
        return "31mcl.png"
    elseif i == "35" then
        return "32pc.png"
    elseif i == "36" then
        return "33ic.png"
    elseif i == "37" then
        return "34h.png"
    elseif i == "38" then
        return "35mc.png"
    elseif i == "39" then
        return "36pcs.png"
    elseif i == "40" then
        return "37mcs.png"
    elseif i == "41" then
        return "38pct.png"
    elseif i == "42" then
        return "39mct.png"
    elseif i == "43" then
        return "40mcfl.png"
    elseif i == "44" then
        return "41mcsn.png"
    end

end



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



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



function icone_vent(d, fo)

    local f = tonumber(fo)
    local n

    if f <= 25 then
        n = d
    elseif f <= 50 then
        n = d + 17
    elseif f <= 75 then
        n = d + 34
    elseif f >= 76 then
        n = d + 51
    end

    if n <= 9 then 
        n = "0"..n
    end

    return n..".png"

end



function decoupage(d)

    local l1, l2, n, p1, p2, n1, n2, l1b, l2b

    if string.len(d) >= 21 then
        n = math.ceil(string.len(d)/2)
        p1 = string.find(d, " ", n)
        p2 = string.find(d, " ", -n)
        if p1 >= 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((21 - string.len(l1b))/2)
    l1 = string.rep(" ", n1)..l1b 
    n2 = math.ceil((21 - string.len(l2b))/2)
    l2 = string.rep(" ", n2)..l2b 
    
    return l1, l2

end



function jour_n(a, j)
    local s = '${exec wget -q --load-cookies '..Rep..'/cookie -O '..Rep..'/details'..j..' '..a..'details'..j..'.aspx}'
     conky_parse( s )

    local file = assert(io.open(Rep..'/details'..j, "rb") )
    local line = file:read()

    local pos3, iconej,Jour, CondMeteoj, CondMeteoj1, CondMeteoj2, Temp, TempjRes, Vent, VentDirj, VentForcej, iconev, VentP, Uv, ProbOrage, NivPrec, QPluie, QNeige, DPrecHeure, DPluieHeure, DPrecNuit, DPluieNuit, niconej, nCondMeteoj, nCondMeteoj1, nCondMeteoj2, nTemp, nTempjRes, nVent, nVentDirj, nVentForcej, niconev, nVentP, nUv, nProbOrage, nNivPrec, nQPluie, nQNeige, nDPrecHeure, nDPluieHeure, nDPrecMinute, nDPluieMinute, LeverSoleilHeure, CoucherSoleilHeure, LeverLuneHeure, CoucherLuneHeure, DureeJourHeure, DureeNuitHeure, LeverSoleilMinute, CoucherSoleilMinute, LeverLuneMinute, CoucherLuneMinute, DureeJourMinute, DureeNuitMinute, ABJour

    for line in file:lines() do
        line = string.gsub(line, ",", ".")
        local pos1 = string.find(line, '">', 40)
        local pos2 = string.find(line, "</")
        if string.find(line, "imgDayIcon") ~= nil then
            pos1 =  string.find(line, 'blue/')
            pos2 = string.find(line, "_int")
            iconej =  test_image(string.sub(line, pos1+5, pos2-1))
        elseif string.find(line, "lblDetails") ~= nil then
            pos3 = string.find(line, "pour")
            Jour = string.sub(line, pos3+5, pos2-1)
        ABJour = string.sub(line, pos3+5, pos3+7) --jour abrege
        elseif string.find(line, "lblDayText") ~= nil then
            CondMeteoj = string.sub(line, pos1+2, pos2-1)
            CondMeteoj1, CondMeteoj2 = decoupage(CondMeteoj)
        elseif string.find(line, "lblHighValue") ~= nil then Temp = string.sub(line, pos1+2, pos2-7)
        elseif string.find(line, "lblRealFeelValue") ~= nil then TempjRes = string.sub(line, pos1+2, pos2-7)
        elseif string.find(line, "lblWindsValue") ~= nil then
            Vent = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(Vent, " ")
            VentDirj = string.gsub(string.sub(Vent, 1, pos3-1), "W", "O")
            VentForcej = string.sub(Vent, pos3+1)
            iconev = icone_vent(direction_vent(VentDirj), VentForcej)
            VentP = vent_plein(VentDirj)
        elseif string.find(line, "lblMaxUVValue") ~= nil then Uv = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblTStormProbValue") ~= nil then ProbOrage = string.sub(line, pos1+2, pos2-2)
        elseif string.find(line, "lblPrecipValue") ~= nil then NivPrec = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblRainValue") ~= nil then QPluie = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblSnowValue") ~= nil then QNeige = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblHoursPrecipValue") ~= nil then
                DPrecHeure = string.sub(line, pos1+2, pos2-8)
                DPrecMinute = "00"
        elseif string.find(line, "lblHoursOfRainValue") ~= nil then 
                DPluieHeure = string.sub(line, pos1+2, pos2-8)
                DPluieMinute = "00"
        elseif string.find(line, "imgNightIcon") ~= nil then
            pos1 =  string.find(line, 'blue/')
            pos2 = string.find(line, "_int")
            niconej =  test_image(string.sub(line, pos1+5, pos2-1))
        elseif string.find(line, "lblNightText") ~= nil then
            nCondMeteoj = string.sub(line, pos1+2, pos2-1)
            nCondMeteoj1, nCondMeteoj2 = decoupage(nCondMeteoj)
        elseif string.find(line, "lblLowValue") ~= nil then nTemp = string.sub(line, pos1+2, pos2-7)
        elseif string.find(line, "lblRealFeelNValue") ~= nil then nTempjRes = string.sub(line, pos1+2, pos2-7)
        elseif string.find(line, "lblWindsNValue") ~= nil then
            nVent = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(Vent, " ")
            nVentDirj = string.gsub(string.sub(Vent, 1, pos3-1), "W", "O")
            nVentForcej = string.sub(Vent, pos3+1)
            niconev = icone_vent(direction_vent(VentDirj), VentForcej)
            nVentP = vent_plein(VentDirj)
        elseif string.find(line, "lblTStormProbNValue") ~= nil then nProbOrage = string.sub(line, pos1+2, pos2-2)
        elseif string.find(line, "lblPrecipNValue") ~= nil then nNivPrec = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblRainNValue") ~= nil then nQPluie = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblSnowNValue") ~= nil then nQNeige = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblHoursPrecipNValue") ~= nil then
                nDPrecHeure = string.sub(line, pos1+2, pos2-8)
                nDPrecMinute = "00"
        elseif string.find(line, "lblHoursOfRainNValue") ~= nil then
                nDPluieHeure = string.sub(line, pos1+2, pos2-8)
                nDPluieMinute = "00"
        end
        pos1 = string.find(line, ': ')
        if string.find(line, "lblSunrise") ~= nil then
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            LeverSoleilHeure = string.sub(a, 0, pos3-1)
            LeverSoleilMinute = string.sub(a, pos3+1)
        elseif string.find(line, "lblSunset") ~= nil then
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            CoucherSoleilHeure = string.sub(a, 0, pos3-1)
            CoucherSoleilMinute = string.sub(a, pos3+1)
        elseif string.find(line, "lblMoonrise") ~= nil then
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            LeverLuneHeure = string.sub(a, 0, pos3-1)
            LeverLuneMinute = string.sub(a, pos3+1)
        elseif string.find(line, "lblMoonset") ~= nil then 
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            CoucherLuneHeure = string.sub(a, 0, pos3-1)
            CoucherLuneMinute = string.sub(a, pos3+1)
        elseif string.find(line, "lblDaylight") ~= nil then
            DureeJourHeure = string.sub(line, pos1+2, pos2-1)
            DureeJourMinute = "00"
        elseif string.find(line, "lblDarkness") ~= nil then
            DureeNuitHeure = string.sub(line, pos1+2, pos2-1)
            DureeNuitMinute = "00"
        end

    end     

    conditionJour[j] = { CondMeteo=CondMeteoj, Temp=Temp, TempRes=TempjRes, VentDir=VentDirj, VentForce=VentForcej, Uv=Uv, ProbOrage=ProbOrage, NivPrec=NivPrec, QPluie=QPluie, QNeige=QNeige, DPrecHeure=DPrecHeure, DPluieHeure=DPluieHeure, DPrecMinute=DPrecMinute, DPluieMinute=DPluieMinute, IconeM=iconej, IconeV=iconev, VentP=VentP, CondMeteo1=CondMeteoj1, CondMeteo2=CondMeteoj2 }

        conditionNuit[j] = { CondMeteo=nCondMeteoj, Temp=nTemp, TempRes=nTempjRes, VentDir=nVentDirj, VentForce=nVentForcej, ProbOrage=nProbOrage, NivPrec=nNivPrec, QPluie=nQPluie, QNeige=nQNeige, DPrecHeure=nDPrecHeure, DPluieHeure=nDPluieHeure, DPrecMinute=nDPrecMinute, DPluieMinute=nDPluieMinute, IconeM=niconej, IconeV=niconev, VentP=nVentP, CondMeteo1=nCondMeteoj1, CondMeteo2=nCondMeteoj2 }

        InfoJour[j] = { Jour=Jour, LeverSoleilHeure=LeverSoleilHeure, CoucherSoleilHeure=CoucherSoleilHeure, LeverLuneHeure=LeverLuneHeure, CoucherLuneHeure=CoucherLuneHeure, DureeJourHeure=DureeJourHeure, DureeNuitHeure=DureeNuitHeure, LeverSoleilMinute=LeverSoleilMinute, CoucherSoleilMinute=CoucherSoleilMinute, LeverLuneMinute=LeverLuneMinute, CoucherLuneMinute=CoucherLuneMinute, DureeJourMinute=DureeJourMinute, DureeNuitMinute=DureeNuitMinute,ABJour=ABJour }

    io.close(file)

end



function conky_Meteo_Maj(cmd, jours, delais, r)


    if t == nil then
        local bar, bar1
        local l = string.sub(cmd, 0, string.find(cmd, '/quick.')-1)
        local a = 1
        while bar == nil do
            a = a+1
            bar = string.find(l, '/', -a)
        end
        local l1 = string.sub(cmd, 0, bar-1)
        local b = 1
        while bar1 == nil do
            b = b+1
            bar1 = string.find(l1, '/', -b)
        end
        l = string.sub(cmd, bar1, string.find(cmd, '/quick.')-1)
        Rep = r..l
        if os.execute("cd "..Rep) ~= 0 then
            os.execute("mkdir "..r..string.sub(cmd, bar1, bar-1))
            os.execute("mkdir "..Rep)
        end
        t = os.time()-delais
        start = 1
    end
    if tonumber(delais) <= os.difftime(os.time(), t) then
        if os.execute("ping -c 1 www.google.com") == 0 then

            Heure = nil
            while Heure == nil do
    
                local s = '${exec wget -q --save-cookies '..Rep..'/cookie -O '..Rep..'/curr_cond_raw '..cmd..'}'
                 local addr_week = string.sub(cmd, 0, string.find(cmd, 'quick.')-1)
                 conky_parse( s )
        
                if not conditionJour then
                    conditionJour = {}
                    conditionNuit = {}
                    InfoJour= {}
                end
        
                local file = assert(io.open(Rep.."/curr_cond_raw", "rb") )
                local line = file:read()
                for line in file:lines() do
                    local pos1 = string.find(line, '">')
                    local pos2 = string.find(line, "</")
                    if string.find(line, "imgCurConCondition") ~= nil then
                        pos1 =  string.find(line, 'blue/')
                        pos2 = string.find(line, "_int")
                        icone =  test_image(string.sub(line, pos1+5, pos2-1))
                    elseif  string.find(line, "lblRealFeelValue") ~= nil then TempRes = string.sub(line, pos1+2, pos2-7)
                    elseif string.find(line, "lblCurrentTemp") ~= nil then TempAct = string.sub(line, pos1+2, pos2-7)
                    elseif string.find(line, "lblCurrentTime") ~= nil then
                        local a = string.sub(line, pos1+2, pos2-1)
                        local pos3 = string.find(a, ":")
                        Heure = string.sub(a, 0, pos3-1)
                        Minute = string.sub(a, pos3+1)
                    elseif string.find(line, "lblCurrentText") ~= nil then
                        CondMeteo = string.sub(line, pos1+2, pos2-1)
                        CondMeteo1, CondMeteo2 = decoupage(CondMeteo)
                    elseif  string.find(line, "lblWindsValue") ~= nil then
                        local Vent = string.sub(line, pos1+2, pos2-1)
                        local pos3 = string.find(Vent, " ")
                        VentDir = string.gsub(string.sub(Vent, 1, pos3-1), "W", "O")
                        VentForce = string.sub(Vent, pos3+1, -6)
                        IconeV = icone_vent(direction_vent(VentDir), VentForce)
                        VentPlein = vent_plein(VentDir)
                    elseif  string.find(line, "lblHumidityValue") ~= nil then Humidite = string.sub(line, pos1+2, pos2-2)
                    elseif string.find(line, "lblDewPointValue") ~= nil then Rose = string.sub(line, pos1+2, pos2-7)
                    elseif string.find(line, "lblPressureValue") ~= nil then Pression = string.sub(line, pos1+2, pos2-4)
                    elseif string.find(line, "lblPressureTenValue") ~= nil then EvoPression = string.sub(line, pos1+2, pos2-2)
                    elseif string.find(line, "lblVisibilityValue") ~= nil then Visibilite = string.sub(line, pos1+2, pos2-4)
                    elseif string.find(line, "lblSunRiseValue") ~= nil then
                        local a = string.sub(line, pos1+2, pos2-1)
                        local pos3 = string.find(a, ":")
                        LeverSoleilHeure = string.sub(a, 0, pos3-1)
                        LeverSoleilMinute = string.sub(a, pos3+1)
                    elseif string.find(line, "lblSunSetValue") ~= nil then
                        local a = string.sub(line, pos1+2, pos2-1)
                        local pos3 = string.find(a, ":")
                        CoucherSoleilHeure = string.sub(a, 0, pos3-1)
                        CoucherSoleilMinute = string.sub(a, pos3+1)
                    elseif string.find(line, "lblDate") ~= nil then Date = string.sub(line, pos1+2, pos2-1)
                    elseif string.find(line, "lnkLocation") ~= nil then Ville = string.sub(line, pos1+2, pos2-9)
                    end
                end     
                io.close(file)
    
                if 14400 <= os.difftime(os.time(), t) or start == 1 then
                    for i = 1,jours do jour_n(addr_week, i) end
                    start = 2
                end

                t = os.time() 
            end
            lune(r)
        end
    collectgarbage()
    end
    return " "
end


--Retour d'information météo

--Condition courrante

function conky_Meteo_IconeM(r, p, s, f)
    return "${image "..r.."/"..icone.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_TempRes()
    return tonumber(TempRes)
end

function conky_Meteo_TempAct()
    return tonumber(TempAct)
end

function conky_Meteo_Heure()
    return Heure
end

function conky_Meteo_Minute()
    return Minute
end

function conky_Meteo_CondMeteo()
    return CondMeteo
end

function conky_Meteo_CondMeteo1()
    return CondMeteo1
end

function conky_Meteo_CondMeteo2()
    return CondMeteo2
end

function conky_Meteo_VentDir()
    return VentDir
end

function conky_Meteo_VentDirP()
    return VentPlein
end

function conky_Meteo_VentForce()
    return tonumber(VentForce)
end

function conky_Meteo_IconeV(r, p, s, f)
    return "${image "..r.."/"..IconeV.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_Humidite()
    return tonumber(Humidite)
end

function conky_Meteo_Rose()
    return tonumber(Rose)
end

function conky_Meteo_Pression()
    return tonumber(Pression)
end

function conky_Meteo_EvoPression()
    return EvoPression
end

function conky_Meteo_Visibilite()
    return tonumber(Visibilite)
end

function conky_Meteo_HLeverSoleilC()
    return LeverSoleilHeure
end

function conky_Meteo_MLeverSoleilC()
    return LeverSoleilMinute
end

function conky_Meteo_HCoucherSoleilC()
    return CoucherSoleilHeure
end

function conky_Meteo_MCoucherSoleilC()
    return CoucherSoleilMinute
end

function conky_Meteo_Date()
    return Date
end

function conky_Meteo_Ville()
    return Ville
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_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_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_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_HDureePrec(j)
    return conditionJour[tonumber(j)].DPrecHeure
end

function conky_Meteo_Jour_MDureePrec(j)
    return conditionJour[tonumber(j)].DPrecMinute
end

function conky_Meteo_Jour_HDureePluie(j)
    return conditionJour[tonumber(j)].DPluieHeure
end

function conky_Meteo_Jour_MDureePluie(j)
    return conditionJour[tonumber(j)].DPluieMinute
end

function conky_Meteo_Jour_IconeM(r, p, s, f, j)
    return "${image "..r.."/"..conditionJour[tonumber(j)].IconeM.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_Jour_IconeV(r, p, s, f, j)
    return "${image "..r.."/"..conditionJour[tonumber(j)].IconeV.." -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_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_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_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_HDureePrec(j)
    return conditionNuit[tonumber(j)].DPrecHeure
end

function conky_Meteo_Nuit_MDureePrec(j)
    return conditionNuit[tonumber(j)].DPrecMinute
end

function conky_Meteo_Nuit_HDureePluie(j)
    return conditionNuit[tonumber(j)].DPluieHeure
end

function conky_Meteo_Nuit_MDureePluie(j)
    return conditionNuit[tonumber(j)].DPluieMinute
end

function conky_Meteo_Nuit_IconeM(r, p, s, f, j)
    return "${image "..r.."/"..conditionNuit[tonumber(j)].IconeM.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_Nuit_IconeV(r, p, s, f, j)
    return "${image "..r.."/"..conditionNuit[tonumber(j)].IconeV.." -p "..p.." -s "..s.." -f "..f.."}"
end


--Infos sur la journée

function conky_Meteo_Jour(j)
    return InfoJour[tonumber(j)].Jour
end

function conky_Meteo_ABJour(j)
    return InfoJour[tonumber(j)].ABJour --jour abrege
end

function conky_Meteo_HLeverSoleil(j)
    return InfoJour[tonumber(j)].LeverSoleilHeure
end

function conky_Meteo_MLeverSoleil(j)
    return InfoJour[tonumber(j)].LeverSoleilMinute
end

function conky_Meteo_HCoucherSoleil(j)
    return InfoJour[tonumber(j)].CoucherSoleilHeure
end

function conky_Meteo_MCoucherSoleil(j)
    return InfoJour[tonumber(j)].CoucherSoleilMinute
end

function conky_Meteo_HLeverLune(j)
    return InfoJour[tonumber(j)].LeverLuneHeure
end

function conky_Meteo_MLeverLune(j)
    return InfoJour[tonumber(j)].LeverLuneMinute
end

function conky_Meteo_HCoucherLune(j)
    return InfoJour[tonumber(j)].CoucherLuneHeure
end

function conky_Meteo_MCoucherLune(j)
    return InfoJour[tonumber(j)].CoucherLuneMinute
end

function conky_Meteo_HDureeJour(j)
    return InfoJour[tonumber(j)].DureeJourHeure
end

function conky_Meteo_MDureeJour(j)
    return InfoJour[tonumber(j)].DureeJourMinute
end

function conky_Meteo_HDureeNuit(j)
    return InfoJour[tonumber(j)].DureeNuitHeure
end

function conky_Meteo_MDureeNuit(j)
    return InfoJour[tonumber(j)].DureeNuitMinute
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()
    return Eclipse_partielle
end

function conky_Lune_EclipseTotal()
    return Eclipse_total
end

ajout fonction ABJour   extraction  ABJour = string.sub(line, pos3+5, pos3+7) --jour abrege

et donc pour appeler dans conky : ${template1 ABJour 3} par exemple
Attention à ceux qui ne l'avaient pas remarqué les prévisions des jours suivant ne commencent qu'à details3 donc pour une prévision des 5 jours suivants  par exemple la  MAJ doit être de 7 (${template1 Maj http://www.accuweather.com/fr/fr/franch … yid=133341 7 1800 /tmp}).
Encore une fois le script fonctionne super bien.
A+

Hors ligne

#395 Le 06/01/2012, à 08:13

Didier-T

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

jpdipsy a écrit :

...
Attention à ceux qui ne l'avaient pas remarqué les prévisions des jours suivant ne commencent qu'à details3
...
Encore une fois le script fonctionne super bien.

Bien vu le coup du détails3, mais du coups sa fonctionne pas comme il faudrait, detail1 devrait être aujourd’hui et pas hier.
Je modifie sa tout de suite, en reprenant la modif pour les jours court que tu a effectué.

c'est fait.

script meteo.lua

-- Créé par Didier-T (forum.ubuntu-fr.org)




require "io"

function lune(r)

    s = "${exec wget -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)
        if string.find(line, "ephemerides_1") ~= nil then
            pos1 =  string.find(line, 'src="')
            pos2 = string.find(line, '" /')
            s = "${exec wget -q -O "..r.."/lune.png http://www.calendrier-lunaire.net/"..string.sub(line, pos1+5, pos2-1).."}"
            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+2, pos2-1)
            local pos3 = string.find(line, 'n>', pos2)
            local pos4 = string.find(line, "</", pos2+3)
            ephemerides2 = string.sub(line, pos3+3, pos4-1)
            ephemerides = ephemerides1.." "..ephemerides2
        elseif string.find(line, "Visibilit") ~= nil then
            Visibilite = string.sub(line, pos1+2, pos2-3)
        elseif string.find(line, "Phases") ~= nil then
            Phases = string.gsub(string.sub(line, pos1+2, pos2-1), "&eacute;", "é")
            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
            local a = string.gsub(string.sub(line, pos1+2, pos2-1), "Dans ", "")
            Noeud_lunaire = string.gsub(a, " Jours", "")
        elseif string.find(line, "Apog") ~= nil then
            local a = string.gsub(string.sub(line, pos1+2, pos2-1), "Dans ", "")
            Apogee = string.gsub(a, " Jours", "")
        elseif string.find(line, "Perig") ~= nil then
            local a = string.gsub(string.sub(line, pos1+2, pos2-1), "Dans ", "")
            Perigee = string.gsub(a, " Jours", "")
        elseif string.find(line, "Distance") ~= nil then
            Distance = string.sub(line, pos1+2, pos2-4)
        elseif string.find(line, "Age de la Lune") ~= nil then
            Age = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "La Lune se") ~= nil then
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            Lever_LuneHeure = string.sub(a, 0, pos3-1)
            Lever_LuneMinute = string.sub(a, pos3+1)
            local pos3 = string.find(line, '">', pos2)
            local pos4 = string.find(line, "</", pos3+3)
            a = string.sub(line, pos3+2, pos4-1)
            local pos5 = string.find(a, ":")
            Coucher_LuneHeure = string.sub(a, 0, pos5-1)
            Coucher_LuneMinute = string.sub(a, pos5+1)
        elseif string.find(line, "eclipse_partielle") ~= nil then
            local pos3 = string.find(line, '">', pos1+3)
            local a = string.gsub(string.sub(line, pos3+2, pos2-1), "<br />", "à")
            Eclipse_partielle = a
        elseif string.find(line, "eclipse_totale") ~= nil then
            local pos3 = string.find(line, '">', pos1+3)
            local a = string.gsub(string.sub(line, pos3+2, pos2-1), "<br />", "à")
            Eclipse_total = a
        end
    end
    io.close(file)

end



function test_image(i)

    if i == "1" then
        return "1su.png"
    elseif i == "2" then
        return "2msu.png"
    elseif i == "3" then
        return "3psu.png"
    elseif i == "4" then
        return "4ic.png"
    elseif i == "5" then
        return "5h.png"
    elseif i == "6" then
        return "6mc.png"
    elseif i == "7" then
        return "7c.png"
    elseif i == "8" then
        return "8d.png"
    elseif i == "11" then
        return "9f.png"
    elseif i == "12" then
        return "10s.png"
    elseif i == "13" then
        return "11mcs.png"
    elseif i == "14" then
        return "12psus.png"
    elseif i == "15" then
        return "13t.png"
    elseif i == "16" then
        return "14mct.png"
    elseif i == "17" then
        return "15psut.png"
    elseif i == "18" then
        return "16r.png"
    elseif i == "19" then
        return "17fl.png"
    elseif i == "20" then
        return "18mcfl.png"
    elseif i == "21" then
        return "19psfl.png"
    elseif i == "22" then
        return "20sn.png"
    elseif i == "23" then
        return "21mcsn.png"
    elseif i == "24" then
        return "22i.png"
    elseif i == "25" then
        return "23sl.png"
    elseif i == "26" then
        return "24fr.png"
    elseif i == "29" then
        return "25rsn.png"
    elseif i == "30" then
        return "27ho.png"
    elseif i == "31" then
        return "28co.png"
    elseif i == "32" then
        return "26w.png"
    elseif i == "33" then
        return "29cl.png"
    elseif i == "34" then
        return "31mcl.png"
    elseif i == "35" then
        return "32pc.png"
    elseif i == "36" then
        return "33ic.png"
    elseif i == "37" then
        return "34h.png"
    elseif i == "38" then
        return "35mc.png"
    elseif i == "39" then
        return "36pcs.png"
    elseif i == "40" then
        return "37mcs.png"
    elseif i == "41" then
        return "38pct.png"
    elseif i == "42" then
        return "39mct.png"
    elseif i == "43" then
        return "40mcfl.png"
    elseif i == "44" then
        return "41mcsn.png"
    end

end



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



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



function icone_vent(d, fo)

    local f = tonumber(fo)
    local n

    if f <= 25 then
        n = d
    elseif f <= 50 then
        n = d + 17
    elseif f <= 75 then
        n = d + 34
    elseif f >= 76 then
        n = d + 51
    end

    if n <= 9 then 
        n = "0"..n
    end

    return n..".png"

end



function decoupage(d)

    local l1, l2, n, p1, p2, n1, n2, l1b, l2b

    if string.len(d) >= 21 then
        n = math.ceil(string.len(d)/2)
        p1 = string.find(d, " ", n)
        p2 = string.find(d, " ", -n)
        if p1 >= 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((21 - string.len(l1b))/2)
    l1 = string.rep(" ", n1)..l1b 
    n2 = math.ceil((21 - string.len(l2b))/2)
    l2 = string.rep(" ", n2)..l2b 
    
    return l1, l2

end



function jour_n(a, j)
     local i = j+1
    local s = '${exec wget -q --load-cookies '..Rep..'/cookie -O '..Rep..'/details'..j..' '..a..'details'..i..'.aspx}'
     conky_parse( s )

    local file = assert(io.open(Rep..'/details'..j, "rb") )
    local line = file:read()

    local pos3, iconej,Jour, CondMeteoj, CondMeteoj1, CondMeteoj2, Temp, TempjRes, Vent, VentDirj, VentForcej, iconev, VentP, Uv, ProbOrage, NivPrec, QPluie, QNeige, DPrecHeure, DPluieHeure, DPrecNuit, DPluieNuit, niconej, nCondMeteoj, nCondMeteoj1, nCondMeteoj2, nTemp, nTempjRes, nVent, nVentDirj, nVentForcej, niconev, nVentP, nUv, nProbOrage, nNivPrec, nQPluie, nQNeige, nDPrecHeure, nDPluieHeure, nDPrecMinute, nDPluieMinute, LeverSoleilHeure, CoucherSoleilHeure, LeverLuneHeure, CoucherLuneHeure, DureeJourHeure, DureeNuitHeure, LeverSoleilMinute, CoucherSoleilMinute, LeverLuneMinute, CoucherLuneMinute, DureeJourMinute, DureeNuitMinute, ABJour

    for line in file:lines() do
        line = string.gsub(line, ",", ".")
        local pos1 = string.find(line, '">', 40)
        local pos2 = string.find(line, "</")
        if string.find(line, "imgDayIcon") ~= nil then
            pos1 =  string.find(line, 'blue/')
            pos2 = string.find(line, "_int")
            iconej =  test_image(string.sub(line, pos1+5, pos2-1))
        elseif string.find(line, "lblDetails") ~= nil then
            pos3 = string.find(line, "pour")
            Jour = string.sub(line, pos3+5, pos2-1)
        ABJour = string.sub(line, pos3+5, pos3+7) --jour abrege
        elseif string.find(line, "lblDayText") ~= nil then
            CondMeteoj = string.sub(line, pos1+2, pos2-1)
            CondMeteoj1, CondMeteoj2 = decoupage(CondMeteoj)
        elseif string.find(line, "lblHighValue") ~= nil then Temp = string.sub(line, pos1+2, pos2-7)
        elseif string.find(line, "lblRealFeelValue") ~= nil then TempjRes = string.sub(line, pos1+2, pos2-7)
        elseif string.find(line, "lblWindsValue") ~= nil then
            Vent = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(Vent, " ")
            VentDirj = string.gsub(string.sub(Vent, 1, pos3-1), "W", "O")
            VentForcej = string.sub(Vent, pos3+1)
            iconev = icone_vent(direction_vent(VentDirj), VentForcej)
            VentP = vent_plein(VentDirj)
        elseif string.find(line, "lblMaxUVValue") ~= nil then Uv = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblTStormProbValue") ~= nil then ProbOrage = string.sub(line, pos1+2, pos2-2)
        elseif string.find(line, "lblPrecipValue") ~= nil then NivPrec = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblRainValue") ~= nil then QPluie = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblSnowValue") ~= nil then QNeige = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblHoursPrecipValue") ~= nil then
                DPrecHeure = string.sub(line, pos1+2, pos2-8)
                DPrecMinute = "00"
        elseif string.find(line, "lblHoursOfRainValue") ~= nil then 
                DPluieHeure = string.sub(line, pos1+2, pos2-8)
                DPluieMinute = "00"
        elseif string.find(line, "imgNightIcon") ~= nil then
            pos1 =  string.find(line, 'blue/')
            pos2 = string.find(line, "_int")
            niconej =  test_image(string.sub(line, pos1+5, pos2-1))
        elseif string.find(line, "lblNightText") ~= nil then
            nCondMeteoj = string.sub(line, pos1+2, pos2-1)
            nCondMeteoj1, nCondMeteoj2 = decoupage(nCondMeteoj)
        elseif string.find(line, "lblLowValue") ~= nil then nTemp = string.sub(line, pos1+2, pos2-7)
        elseif string.find(line, "lblRealFeelNValue") ~= nil then nTempjRes = string.sub(line, pos1+2, pos2-7)
        elseif string.find(line, "lblWindsNValue") ~= nil then
            nVent = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(Vent, " ")
            nVentDirj = string.gsub(string.sub(Vent, 1, pos3-1), "W", "O")
            nVentForcej = string.sub(Vent, pos3+1)
            niconev = icone_vent(direction_vent(VentDirj), VentForcej)
            nVentP = vent_plein(VentDirj)
        elseif string.find(line, "lblTStormProbNValue") ~= nil then nProbOrage = string.sub(line, pos1+2, pos2-2)
        elseif string.find(line, "lblPrecipNValue") ~= nil then nNivPrec = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblRainNValue") ~= nil then nQPluie = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblSnowNValue") ~= nil then nQNeige = string.sub(line, pos1+2, pos2-1)
        elseif string.find(line, "lblHoursPrecipNValue") ~= nil then
                nDPrecHeure = string.sub(line, pos1+2, pos2-8)
                nDPrecMinute = "00"
        elseif string.find(line, "lblHoursOfRainNValue") ~= nil then
                nDPluieHeure = string.sub(line, pos1+2, pos2-8)
                nDPluieMinute = "00"
        end
        pos1 = string.find(line, ': ')
        if string.find(line, "lblSunrise") ~= nil then
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            LeverSoleilHeure = string.sub(a, 0, pos3-1)
            LeverSoleilMinute = string.sub(a, pos3+1)
        elseif string.find(line, "lblSunset") ~= nil then
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            CoucherSoleilHeure = string.sub(a, 0, pos3-1)
            CoucherSoleilMinute = string.sub(a, pos3+1)
        elseif string.find(line, "lblMoonrise") ~= nil then
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            LeverLuneHeure = string.sub(a, 0, pos3-1)
            LeverLuneMinute = string.sub(a, pos3+1)
        elseif string.find(line, "lblMoonset") ~= nil then 
            local a = string.sub(line, pos1+2, pos2-1)
            pos3 = string.find(a, ":")
            CoucherLuneHeure = string.sub(a, 0, pos3-1)
            CoucherLuneMinute = string.sub(a, pos3+1)
        elseif string.find(line, "lblDaylight") ~= nil then
            DureeJourHeure = string.sub(line, pos1+2, pos2-1)
            DureeJourMinute = "00"
        elseif string.find(line, "lblDarkness") ~= nil then
            DureeNuitHeure = string.sub(line, pos1+2, pos2-1)
            DureeNuitMinute = "00"
        end

    end     

    conditionJour[j] = { CondMeteo=CondMeteoj, Temp=Temp, TempRes=TempjRes, VentDir=VentDirj, VentForce=VentForcej, Uv=Uv, ProbOrage=ProbOrage, NivPrec=NivPrec, QPluie=QPluie, QNeige=QNeige, DPrecHeure=DPrecHeure, DPluieHeure=DPluieHeure, DPrecMinute=DPrecMinute, DPluieMinute=DPluieMinute, IconeM=iconej, IconeV=iconev, VentP=VentP, CondMeteo1=CondMeteoj1, CondMeteo2=CondMeteoj2 }

        conditionNuit[j] = { CondMeteo=nCondMeteoj, Temp=nTemp, TempRes=nTempjRes, VentDir=nVentDirj, VentForce=nVentForcej, ProbOrage=nProbOrage, NivPrec=nNivPrec, QPluie=nQPluie, QNeige=nQNeige, DPrecHeure=nDPrecHeure, DPluieHeure=nDPluieHeure, DPrecMinute=nDPrecMinute, DPluieMinute=nDPluieMinute, IconeM=niconej, IconeV=niconev, VentP=nVentP, CondMeteo1=nCondMeteoj1, CondMeteo2=nCondMeteoj2 }

        InfoJour[j] = { Jour=Jour, LeverSoleilHeure=LeverSoleilHeure, CoucherSoleilHeure=CoucherSoleilHeure, LeverLuneHeure=LeverLuneHeure, CoucherLuneHeure=CoucherLuneHeure, DureeJourHeure=DureeJourHeure, DureeNuitHeure=DureeNuitHeure, LeverSoleilMinute=LeverSoleilMinute, CoucherSoleilMinute=CoucherSoleilMinute, LeverLuneMinute=LeverLuneMinute, CoucherLuneMinute=CoucherLuneMinute, DureeJourMinute=DureeJourMinute, DureeNuitMinute=DureeNuitMinute,ABJour=ABJour }

    io.close(file)

end



function conky_Meteo_Maj(cmd, jours, delais, r)


    if t == nil then
        local bar, bar1
        local l = string.sub(cmd, 0, string.find(cmd, '/quick.')-1)
        local a = 1
        while bar == nil do
            a = a+1
            bar = string.find(l, '/', -a)
        end
        local l1 = string.sub(cmd, 0, bar-1)
        local b = 1
        while bar1 == nil do
            b = b+1
            bar1 = string.find(l1, '/', -b)
        end
        l = string.sub(cmd, bar1, string.find(cmd, '/quick.')-1)
        Rep = r..l
        if os.execute("cd "..Rep) ~= 0 then
            os.execute("mkdir "..r..string.sub(cmd, bar1, bar-1))
            os.execute("mkdir "..Rep)
        end
        t = os.time()-delais
        start = 1
    end
    if tonumber(delais) <= os.difftime(os.time(), t) then
        if os.execute("ping -c 1 www.google.com") == 0 then

            Heure = nil
            while Heure == nil do
    
                local s = '${exec wget -q --save-cookies '..Rep..'/cookie -O '..Rep..'/curr_cond_raw '..cmd..'}'
                 local addr_week = string.sub(cmd, 0, string.find(cmd, 'quick.')-1)
                 conky_parse( s )
        
                if not conditionJour then
                    conditionJour = {}
                    conditionNuit = {}
                    InfoJour= {}
                end
        
                local file = assert(io.open(Rep.."/curr_cond_raw", "rb") )
                local line = file:read()
                for line in file:lines() do
                    local pos1 = string.find(line, '">')
                    local pos2 = string.find(line, "</")
                    if string.find(line, "imgCurConCondition") ~= nil then
                        pos1 =  string.find(line, 'blue/')
                        pos2 = string.find(line, "_int")
                        icone =  test_image(string.sub(line, pos1+5, pos2-1))
                    elseif  string.find(line, "lblRealFeelValue") ~= nil then TempRes = string.sub(line, pos1+2, pos2-7)
                    elseif string.find(line, "lblCurrentTemp") ~= nil then TempAct = string.sub(line, pos1+2, pos2-7)
                    elseif string.find(line, "lblCurrentTime") ~= nil then
                        local a = string.sub(line, pos1+2, pos2-1)
                        local pos3 = string.find(a, ":")
                        Heure = string.sub(a, 0, pos3-1)
                        Minute = string.sub(a, pos3+1)
                    elseif string.find(line, "lblCurrentText") ~= nil then
                        CondMeteo = string.sub(line, pos1+2, pos2-1)
                        CondMeteo1, CondMeteo2 = decoupage(CondMeteo)
                    elseif  string.find(line, "lblWindsValue") ~= nil then
                        local Vent = string.sub(line, pos1+2, pos2-1)
                        local pos3 = string.find(Vent, " ")
                        VentDir = string.gsub(string.sub(Vent, 1, pos3-1), "W", "O")
                        VentForce = string.sub(Vent, pos3+1, -6)
                        IconeV = icone_vent(direction_vent(VentDir), VentForce)
                        VentPlein = vent_plein(VentDir)
                    elseif  string.find(line, "lblHumidityValue") ~= nil then Humidite = string.sub(line, pos1+2, pos2-2)
                    elseif string.find(line, "lblDewPointValue") ~= nil then Rose = string.sub(line, pos1+2, pos2-7)
                    elseif string.find(line, "lblPressureValue") ~= nil then Pression = string.sub(line, pos1+2, pos2-4)
                    elseif string.find(line, "lblPressureTenValue") ~= nil then EvoPression = string.sub(line, pos1+2, pos2-2)
                    elseif string.find(line, "lblVisibilityValue") ~= nil then Visibilite = string.sub(line, pos1+2, pos2-4)
                    elseif string.find(line, "lblSunRiseValue") ~= nil then
                        local a = string.sub(line, pos1+2, pos2-1)
                        local pos3 = string.find(a, ":")
                        LeverSoleilHeure = string.sub(a, 0, pos3-1)
                        LeverSoleilMinute = string.sub(a, pos3+1)
                    elseif string.find(line, "lblSunSetValue") ~= nil then
                        local a = string.sub(line, pos1+2, pos2-1)
                        local pos3 = string.find(a, ":")
                        CoucherSoleilHeure = string.sub(a, 0, pos3-1)
                        CoucherSoleilMinute = string.sub(a, pos3+1)
                    elseif string.find(line, "lblDate") ~= nil then Date = string.sub(line, pos1+2, pos2-1)
                    elseif string.find(line, "lnkLocation") ~= nil then Ville = string.sub(line, pos1+2, pos2-9)
                    end
                end     
                io.close(file)
    
                if 14400 <= os.difftime(os.time(), t) or start == 1 then
                    for i = 1,jours do jour_n(addr_week, i) end
                    start = 2
                end

                t = os.time() 
            end
            lune(r)
        end
    collectgarbage()
    end
    return " "
end


--Retour d'information météo

--Condition courrante

function conky_Meteo_IconeM(r, p, s, f)
    return "${image "..r.."/"..icone.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_TempRes()
    return tonumber(TempRes)
end

function conky_Meteo_TempAct()
    return tonumber(TempAct)
end

function conky_Meteo_Heure()
    return Heure
end

function conky_Meteo_Minute()
    return Minute
end

function conky_Meteo_CondMeteo()
    return CondMeteo
end

function conky_Meteo_CondMeteo1()
    return CondMeteo1
end

function conky_Meteo_CondMeteo2()
    return CondMeteo2
end

function conky_Meteo_VentDir()
    return VentDir
end

function conky_Meteo_VentDirP()
    return VentPlein
end

function conky_Meteo_VentForce()
    return tonumber(VentForce)
end

function conky_Meteo_IconeV(r, p, s, f)
    return "${image "..r.."/"..IconeV.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_Humidite()
    return tonumber(Humidite)
end

function conky_Meteo_Rose()
    return tonumber(Rose)
end

function conky_Meteo_Pression()
    return tonumber(Pression)
end

function conky_Meteo_EvoPression()
    return EvoPression
end

function conky_Meteo_Visibilite()
    return tonumber(Visibilite)
end

function conky_Meteo_HLeverSoleilC()
    return LeverSoleilHeure
end

function conky_Meteo_MLeverSoleilC()
    return LeverSoleilMinute
end

function conky_Meteo_HCoucherSoleilC()
    return CoucherSoleilHeure
end

function conky_Meteo_MCoucherSoleilC()
    return CoucherSoleilMinute
end

function conky_Meteo_Date()
    return Date
end

function conky_Meteo_Ville()
    return Ville
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_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_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_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_HDureePrec(j)
    return conditionJour[tonumber(j)].DPrecHeure
end

function conky_Meteo_Jour_MDureePrec(j)
    return conditionJour[tonumber(j)].DPrecMinute
end

function conky_Meteo_Jour_HDureePluie(j)
    return conditionJour[tonumber(j)].DPluieHeure
end

function conky_Meteo_Jour_MDureePluie(j)
    return conditionJour[tonumber(j)].DPluieMinute
end

function conky_Meteo_Jour_IconeM(r, p, s, f, j)
    return "${image "..r.."/"..conditionJour[tonumber(j)].IconeM.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_Jour_IconeV(r, p, s, f, j)
    return "${image "..r.."/"..conditionJour[tonumber(j)].IconeV.." -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_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_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_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_HDureePrec(j)
    return conditionNuit[tonumber(j)].DPrecHeure
end

function conky_Meteo_Nuit_MDureePrec(j)
    return conditionNuit[tonumber(j)].DPrecMinute
end

function conky_Meteo_Nuit_HDureePluie(j)
    return conditionNuit[tonumber(j)].DPluieHeure
end

function conky_Meteo_Nuit_MDureePluie(j)
    return conditionNuit[tonumber(j)].DPluieMinute
end

function conky_Meteo_Nuit_IconeM(r, p, s, f, j)
    return "${image "..r.."/"..conditionNuit[tonumber(j)].IconeM.." -p "..p.." -s "..s.." -f "..f.."}"
end

function conky_Meteo_Nuit_IconeV(r, p, s, f, j)
    return "${image "..r.."/"..conditionNuit[tonumber(j)].IconeV.." -p "..p.." -s "..s.." -f "..f.."}"
end


--Infos sur la journée

function conky_Meteo_Jour(j)
    return InfoJour[tonumber(j)].Jour
end

function conky_Meteo_ABJour(j)
    return InfoJour[tonumber(j)].ABJour --jour abrege
end

function conky_Meteo_HLeverSoleil(j)
    return InfoJour[tonumber(j)].LeverSoleilHeure
end

function conky_Meteo_MLeverSoleil(j)
    return InfoJour[tonumber(j)].LeverSoleilMinute
end

function conky_Meteo_HCoucherSoleil(j)
    return InfoJour[tonumber(j)].CoucherSoleilHeure
end

function conky_Meteo_MCoucherSoleil(j)
    return InfoJour[tonumber(j)].CoucherSoleilMinute
end

function conky_Meteo_HLeverLune(j)
    return InfoJour[tonumber(j)].LeverLuneHeure
end

function conky_Meteo_MLeverLune(j)
    return InfoJour[tonumber(j)].LeverLuneMinute
end

function conky_Meteo_HCoucherLune(j)
    return InfoJour[tonumber(j)].CoucherLuneHeure
end

function conky_Meteo_MCoucherLune(j)
    return InfoJour[tonumber(j)].CoucherLuneMinute
end

function conky_Meteo_HDureeJour(j)
    return InfoJour[tonumber(j)].DureeJourHeure
end

function conky_Meteo_MDureeJour(j)
    return InfoJour[tonumber(j)].DureeJourMinute
end

function conky_Meteo_HDureeNuit(j)
    return InfoJour[tonumber(j)].DureeNuitHeure
end

function conky_Meteo_MDureeNuit(j)
    return InfoJour[tonumber(j)].DureeNuitMinute
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()
    return Eclipse_partielle
end

function conky_Lune_EclipseTotal()
    return Eclipse_total
end

Dernière modification par Didier-T (Le 06/01/2012, à 08:25)

Hors ligne

#396 Le 06/01/2012, à 08:37

jpdipsy

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

Merci tu ne dors pas beaucoup non plus smile

Tiens un petit screenshot meteo lua

Hors ligne

#397 Le 06/01/2012, à 09:36

Didier-T

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

Pas mal du tout ton conky smile

Hors ligne

#398 Le 06/01/2012, à 14:11

TrucSarret

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

Didier-T a écrit :

bonjour TrucSarret,

Alors tu utilise le script conky pour lua, mais a tu créer le script en meteo.lua qui vas avec ?
Tu le trouveras ici, ce script fonctionne pleinement, mais je n'ai pas encore fais de pack ni de notice.

Bonjour,
Le script en meteo.lua est bien enregistré dans le répertoire /home/trucsarret/conky/script

En fait je pense m'être trompé de commande pour lancer ce conky :

trucsarret@trucsarret ~ $ conky -c conkyrc_meteo_lua
Conky: invalid configuration file 'conkyrc_meteo_lua'

Conky: desktop window (e00023) is subwindow of root window (19c)
Conky: window type - desktop
Conky: drawing to created window (0x2000001)
Conky: drawing to single buffer

Lance ce conky horrible captur10.png

Par contre en ajoutant un point devant le nom de mon fichier (donc son vrai nom) cela donne

trucsarret@trucsarret ~ $ conky -c .conkyrc_meteo_lua
Conky: can't parse X color 'lightwhite'
Conky: can't parse X color 'lightwhite'
Conky: forked to background, pid is 3358
trucsarret@trucsarret-System-Product-Name ~ $ 
Conky: desktop window (e00023) is subwindow of root window (19c)
Conky: window type - override
Conky: drawing to created window (0x2000001)
Conky: drawing to double buffer
cd: 1: can't cd to /tmp/rhône-alpes/valence

Toujours pas d'affichage de conky mais ça avance


http://eaudolle.over-blog.com

Hors ligne

#399 Le 06/01/2012, à 15:11

shamen456

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

@jpdipsy & Didier-T : comme d'hab super boulot...faut vraiment que je passe à lua pour la meteo...

jpdipsy : super ton conky meteo... tu sais (peux wink ) poster ton conkyrc, j'aimerais partir de la pour faire la conversion vers meteo avec lua...

Hors ligne

#400 Le 06/01/2012, à 17:00

jpdipsy

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

Didier apparemment le décalage avec detail de ce matin était dû au sîte donc retour arrière pour le script et tout est correct.

Bon voici donc mon script conky :

# -- Conky settings -- #
    background yes
    update_interval 1

    cpu_avg_samples 2
    net_avg_samples 2

    override_utf8_locale yes

    double_buffer yes
    no_buffers yes

    text_buffer_size 2048
#   imlib_cache_size 0
   
    own_window yes
    own_window_type override
    own_window_transparent yes
    own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below

    border_inner_margin 0
    border_outer_margin 0

    minimum_size 465 
    maximum_width  465
    
    alignment tl
    gap_x 50
    gap_y 5

    # -- Graphics settings -- #
    draw_shades no
    draw_outline yes
    draw_borders no
    draw_graph_borders no

    # -- Text settings -- #
    use_xft yes
    font Helvetica LT Std:bold:size=8
    uppercase no

    default_color 8b8b8b
    # -- Declaration template -- #
    template0 ${image ~/conky/script/images/\1 -p \2 -s \3 -n} # -- images fond -- #
    template1 ${lua Meteo_\1 \2 \3 \4 \5} # -- 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} # -- recup info par sed -- #

    lua_load  ~/conky/script/meteo_lua

         TEXT
#### Lancement du script récupérant les données météo ####
${template1 Maj http://www.accuweather.com/fr/fr/franche-comté/belfort/quick-look.aspx?cityid=133341 7 1800 /tmp}
##### ville #####
${template0 fond.png 0,0 465x220}${voffset -10}${goto 90}${font URW Chancery L:style=Bold:size=25}${color yellow}${template1 Ville}${goto 190}${font Helvetica LT Std:bold:size=20}${if_match ${template1 TempAct}<5}${color red}${template1 TempAct}°${else}${color white}${template1 TempAct}°${endif}${font Helvetica LT Std:bold:size=10}${offset -10}${color white}/${template1 Nuit_Temp 1}°${font}


##### lunaison #####
${goto 12}${color white}${template3 ephemerides1}
${goto 12}${template3 ephemerides2}

##### Affichage conditions météo ########## température actuelle #####
${goto 12}${font Helvetica LT Std:bold:size=12}${color yellow}${template1  CondMeteo}
${goto 12}${font}${color white}Précipitation${goto 90}: ${template1 Jour_QPluie 1}
${goto 12}Humidité${goto 90}: ${template1  Humidite}%${goto 188}${color yellow}${font Helvetica LT Std:style=Bold:size=10}${template1 VentDirP}${color white}${font}
${goto 12}Qté Neige${goto 90}: ${template1 Jour_QNeige 1}
${goto 12}Pression : ${template1 Pression} mb   U.V : ${template1 Jour_Uv}
${goto 12}Levé : ${template1 HLeverSoleil}h${template1 MLeverSoleil}   Couché :${template1 HCoucherSoleil}h${template1 MCoucherSoleil}
${goto 12}Durée jour : ${template1 HDureeJour}h${template1 MDureeJour}
${goto 180}${color yellow}${font Helvetica LT Std:style=Bold:size=10}${template1 VentForce} km/h${color white}${font}
${goto 12}Dernière mise à jour : ${template1 Heure}h${template1 Minute}
${template2 IconeV ~/conky/meteo+lune/icones/base/vent 180,136 44x44}#icone vent
${template2 IconeM ~/conky/meteo+lune/icones/base 70,40 132x79 }#condition jour
${image /tmp/lune.png -p 15,15 -s 43x43 -f 60}
#### previsions ####
${voffset -200}
${goto 264}${color yellow}${template1 ABJour 2}${goto 400}${template1 Jour_VentDirP 2}
${goto 264}${color white}${template1 Jour_Temp 2}°/${template1 Nuit_Temp 2}°${goto 400}${template1 Jour_VentForce 2} km/h
${template2 Jour_IconeV ~/conky/meteo+lune/icones/base/vent 360,23 30x30 2}${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 300,23 51x30 2}
${goto 264}${color yellow}${template1 ABJour 3}${goto 400}${template1 Jour_VentDirP 3}
${goto 264}${color white}${template1 Jour_Temp 3}°/${template1 Nuit_Temp 3}°${goto 400}${template1 Jour_VentForce 3} km/h
${template2 Jour_IconeV ~/conky/meteo+lune/icones/base/vent 360,56 30x30 3}${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 300,56 51x30 3}
${goto 264}${color yellow}${template1 ABJour 4}${goto 400}${template1 Jour_VentDirP 4}
${goto 264}${color white}${template1 Jour_Temp 4}°/${template1 Nuit_Temp 4}°${goto 400}${template1 Jour_VentForce 4} km/h
${template2 Jour_IconeV ~/conky/meteo+lune/icones/base/vent 360,89 30x30 4}${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 300,89 51x30 4}
${goto 264}${color yellow}${template1 ABJour 5}${goto 400}${template1 Jour_VentDirP 5}
${goto 264}${color white}${template1 Jour_Temp 5}°/${template1 Nuit_Temp 5}°${goto 400}${template1 Jour_VentForce 5} km/h
${template2 Jour_IconeV ~/conky/meteo+lune/icones/base/vent 360,122 30x30 5}${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 300,122 51x30 5}
${goto 264}${color yellow}${template1 ABJour 6}${goto 400}${template1 Jour_VentDirP 6}
${goto 264}${color white}${template1 Jour_Temp 6}°/${template1 Nuit_Temp 6}°${goto 400}${template1 Jour_VentForce 6} km/h
${template2 Jour_IconeV ~/conky/meteo+lune/icones/base/vent 360,155 30x30 6}${template2 Jour_IconeM ~/conky/meteo+lune/icones/base 300,155 51x30 6}

Voila mon bureau actuel mon bureau

en plus grand mon bureau
Le tout sous precise avec cairo-dock et session perso gnome3 sans toutes les fioritures (unity ubuntu-one zeigzeit et j'en passe) résultat moins de 300MO de ram  et très stable.
L'horloge en haut à droite avec effet LED et aussi un script lua dérivé d'un script de  Wlourf et integré aux conky principal.Si ça intéresse je vous met ça.   

remarque : bien changer la ref à votre ville et avoir les fontes Helvetica LT Std  URW Chancery L d'installées je vous fait un paquet cadeau avec ce qu'il faut le paquet : j'ai supprimé tous ce qui faisait référence aux anciens scripts c'est plus clair.

Je suis à votre disposition pour tout renseignement critique etc..

Bonne soirée et bonne épiphanie (vive le roi).

Hors ligne