--[[weather display by mrpeachy nov 2011 version 8 call data via conkyrc ability to display weather images display weather font display wind font and moon font ]] --######################################################################################################### --SETUP--SETUP--SETUP--SETUP--SETUP--SETUP--SETUP--SETUP--SETUP--SETUP--SETUP secs=1800--set update interval web="http://www.intellicast.com/Local/Forecast.aspx?location=USMO9688"--insert unit=C& after? for C --get web address by going to the intellicast site and entering your location in the box --for version 3 you must get click on "Extended Forecast" to get the necessary address units="F" --set location where weather data txt will be saved location="/home/benjamin/Desktop/weather.txt" --set location of weather images weathericons="/home/benjamin/Desktop/images/weathericons/" --######################################################################################################### require 'imlib2' require 'cairo' ------------------------------------------------------------------------------ function string:split(delimiter) local result = { } local from = 1 local delim_from, delim_to = string.find( self, delimiter, from ) while delim_from do table.insert( result, string.sub( self, from , delim_from-1 ) ) from = delim_to + 1 delim_from, delim_to = string.find( self, delimiter, from ) end table.insert( result, string.sub( self, from ) ) return result end -------------------------------------------------------------------------------- --################################### function conky_weatherdata()--####### --################################### --table to convert intellicast images to icons and fonts wimage={ wx_65="32,a",wx_66="30,c", wx_67="26,f", wx_68="32,a", wx_69="28,d", wx_70="20,0", wx_71="32,a", wx_72="21,9", wx_73="36,5", wx_74="14,p", wx_75="28,d", wx_76="18,w", wx_77="14,p", wx_78="23,6", wx_79="05,x", wx_80="15,8", wx_81="15,8", wx_82="11,h", wx_83="16,q", wx_84="00,m", wx_85="32,a", wx_86="25,-", wx_87="09,h", wx_88="05,x", wx_89="18,w", wx_90="18,w", wx_91="39,g", wx_92="39,g", wx_93="39,g", wx_94="39,g", wx_95="37,k", wx_96="37,k", wx_97="31,A", wx_98="29,C", wx_99="27,D", wx_100="47,K", wx_101="47,K", wx_102="33,B", wx_103="26,f", wx_104="20,0", wx_105="45,G", wx_106="45,G", wx_107="11,h", wx_108="46,O", wx_109="46,O", wx_110="06,x", wx_111="18,w", wx_112="06,x", wx_113="46,O", wx_114="46,O", wx_115="31,A", wx_116="47,K", }--end table --table to convert wind direction to font windfontt={S="9",SSW=":",SW=";",WSW="<",W="=",WNW=">",NW="?",NNW="@",N="1",NNE="2",NE="3",ENE="4",E="5",ESE="6",SE="7",SSE="8"} --table to convert moonphase to font moonfontt={New="=",Full="@",FirstQuarter="G",LastQuarter="T",WaningGibbous="R",WaningCrescent="V",WaxingCrescent="E",WaxingGibbous="I"} --################################################## --######data gatering and initial processing######## --################################################## local updates=tonumber(conky_parse('${updates}')) local timer=(updates %secs)+1 if timer==secs or updates==0 then --gets current data local f=io.popen("curl '"..web.."' | grep -A62 'As of ' | gawk -F'>' -v RS='' -v RS='<' 'RT{print $NF}' | sed -e 's/^[ \t]*//' -e 's/°//g' -e 's/ / /g' -e 's/%//g' -e 's/°//g' -e 's/Thunderstorms/T.Storms/g'") local fdata1=f:read("*a") f:close() local fdata=string.split(fdata1,"\n") fdata2={} for i,v in pairs(fdata) do if string.find(v,"[%a%d]")~=nil then table.insert(fdata2,fdata[i]) end end --gets weather image codes local f=io.popen("curl '"..web.."' | gawk -F'App_Images' -v RS='.png' 'RT{print $NF}'") icondata1=f:read("*a") f:close() local icondata=string.split(icondata1,"\n") icondata2={} for i,v in pairs(icondata) do if string.find(v,"32_white")==nil then table.insert(icondata2,icondata[i]) end end --################################################## --######data processing############################# --################################################## --current conditions local cdn=string.split(data[2],"/") if cdn[2]==nil then cd2="" else cd2="/"..string.gsub(cdn[2],"[\r\n]","") end local wdr=string.split(data[25]," ") now={con=string.gsub(cdn[1],"[\r\n]",""),tmp=string.gsub(data[4],units,""),flk=string.gsub(data[5],"Feels Like: ",""),wch=data[7],cel=data[10],hid=data[12],vis=string.gsub(data[15],"[ %a]",""),dpt=data[17],wsp=string.gsub(data[20],"[ %a]",""),wdg=(wdr[1]),wdi=string.gsub(wdr[2],"[%(%)\n\r]",""),wgs=string.gsub(data[30]," mph",""),hum=data[22],prs=string.gsub(data[27],"\"",""),cd2=cd2} --forecast days local cdn=string.split(fdata2[3],"/") if cdn[2]==nil then cd2="" else cd2="/"..cdn[2] end local dyt=string.split(fdata2[2],",") local uvi=string.split(fdata2[20]," ") local wsp=string.split(fdata2[32]," ") local wdr=string.split(fdata2[34]," ") day1={day=dyt[1],dat=string.gsub(dyt[2],"^.",""),con=cdn[1],hih=fdata2[4],low=fdata2[5],sri=fdata2[8],sst=fdata2[10],mri=fdata2[12],mst=fdata2[14],uvn=uvi[1],uvt=string.gsub(uvi[2],"[%(%)]",""),hum=fdata2[22],ppt=fdata2[24],snw=fdata2[26],cld=fdata2[28],mph=fdata2[30],wmh=string.gsub(wsp[1],"[%a]",""),wkm=string.gsub(wsp[2],"[%a%(,]",""),wkt=string.gsub(wsp[3],"[%a%)]",""),wdg=wdr[1],wdi=string.gsub(wdr[2],"[%(%)\n\r]",""),cd2=cd2} --day2 local cdn=string.split(fdata2[36],"/") if cdn[2]==nil then cd2="" else cd2="/"..cdn[2] end local dyt=string.split(fdata2[35],",") local uvi=string.split(fdata2[53]," ") local wsp=string.split(fdata2[65]," ") local wdr=string.split(fdata2[67]," ") day2={day=dyt[1],dat=string.gsub(dyt[2],"^.",""),con=cdn[1],hih=fdata2[37],low=fdata2[38],sri=fdata2[41],sst=fdata2[43],mri=fdata2[45],mst=fdata2[47],uvn=uvi[1],uvt=string.gsub(uvi[2],"[%(%)]",""),hum=fdata2[55],ppt=fdata2[57],snw=fdata2[59],cld=fdata2[61],mph=fdata2[63],wmh=string.gsub(wsp[1],"[%a]",""),wkm=string.gsub(wsp[2],"[%a%(,]",""),wkt=string.gsub(wsp[3],"[%a%)]",""),wdg=wdr[1],wdi=string.gsub(wdr[2],"[%(%)\n\r]",""),cd2=cd2} --day3 local start=68 local cdn=string.split(fdata2[start+1],"/") if cdn[2]==nil then cd2="" else cd2="/"..cdn[2] end local dyt=string.split(fdata2[start],",") local uvi=string.split(fdata2[start+14]," ") local wsp=string.split(fdata2[start+26]," ") local wdr=string.split(fdata2[start+28]," ") day3={day=dyt[1],dat=string.gsub(dyt[2],"^.",""),con=cdn[1],hih=fdata2[start+2],low=fdata2[start+3],sri=fdata2[start+5],sst=fdata2[start+7],mri=fdata2[start+9],mst=fdata2[start+11],uvn=uvi[1],uvt=string.gsub(uvi[2],"[%(%)]",""),hum=fdata2[start+16],ppt=fdata2[start+18],snw=fdata2[start+20],cld=fdata2[start+22],mph=fdata2[start+24],wmh=string.gsub(wsp[1],"[%a]",""),wkm=string.gsub(wsp[2],"[%a%(,]",""),wkt=string.gsub(wsp[3],"[%a%)]",""),wdg=wdr[1],wdi=string.gsub(wdr[2],"[%(%)\n\r]",""),cd2=cd2} --day4 local start=start+29 local cdn=string.split(fdata2[start+1],"/") if cdn[2]==nil then cd2="" else cd2="/"..cdn[2] end local dyt=string.split(fdata2[start],",") local uvi=string.split(fdata2[start+14]," ") local wsp=string.split(fdata2[start+26]," ") local wdr=string.split(fdata2[start+28]," ") day4={day=dyt[1],dat=string.gsub(dyt[2],"^.",""),con=cdn[1],hih=fdata2[start+2],low=fdata2[start+3],sri=fdata2[start+5],sst=fdata2[start+7],mri=fdata2[start+9],mst=fdata2[start+11],uvn=uvi[1],uvt=string.gsub(uvi[2],"[%(%)]",""),hum=fdata2[start+16],ppt=fdata2[start+18],snw=fdata2[start+20],cld=fdata2[start+22],mph=fdata2[start+24],wmh=string.gsub(wsp[1],"[%a]",""),wkm=string.gsub(wsp[2],"[%a%(,]",""),wkt=string.gsub(wsp[3],"[%a%)]",""),wdg=wdr[1],wdi=string.gsub(wdr[2],"[%(%)\n\r]",""),cd2=cd2} --day5 local start=start+29 local cdn=string.split(fdata2[start+1],"/") if cdn[2]==nil then cd2="" else cd2="/"..cdn[2] end local dyt=string.split(fdata2[start],",") local uvi=string.split(fdata2[start+14]," ") local wsp=string.split(fdata2[start+26]," ") local wdr=string.split(fdata2[start+28]," ") day5={day=dyt[1],dat=string.gsub(dyt[2],"^.",""),con=cdn[1],hih=fdata2[start+2],low=fdata2[start+3],sri=fdata2[start+5],sst=fdata2[start+7],mri=fdata2[start+9],mst=fdata2[start+11],uvn=uvi[1],uvt=string.gsub(uvi[2],"[%(%)]",""),hum=fdata2[start+16],ppt=fdata2[start+18],snw=fdata2[start+20],cld=fdata2[start+22],mph=fdata2[start+24],wmh=string.gsub(wsp[1],"[%a]",""),wkm=string.gsub(wsp[2],"[%a%(,]",""),wkt=string.gsub(wsp[3],"[%a%)]",""),wdg=wdr[1],wdi=string.gsub(wdr[2],"[%(%)\n\r]",""),cd2=cd2} --day6 local start=start+29 local cdn=string.split(fdata2[start+1],"/") if cdn[2]==nil then cd2="" else cd2="/"..cdn[2] end local dyt=string.split(fdata2[start],",") local uvi=string.split(fdata2[start+14]," ") local wsp=string.split(fdata2[start+26]," ") local wdr=string.split(fdata2[start+28]," ") day6={day=dyt[1],dat=string.gsub(dyt[2],"^.",""),con=cdn[1],hih=fdata2[start+2],low=fdata2[start+3],sri=fdata2[start+5],sst=fdata2[start+7],mri=fdata2[start+9],mst=fdata2[start+11],uvn=uvi[1],uvt=string.gsub(uvi[2],"[%(%)]",""),hum=fdata2[start+16],ppt=fdata2[start+18],snw=fdata2[start+20],cld=fdata2[start+22],mph=fdata2[start+24],wmh=string.gsub(wsp[1],"[%a]",""),wkm=string.gsub(wsp[2],"[%a%(,]",""),wkt=string.gsub(wsp[3],"[%a%)]",""),wdg=wdr[1],wdi=string.gsub(wdr[2],"[%(%)\n\r]",""),cd2=cd2} --day7 local start=start+29 local cdn=string.split(fdata2[start+1],"/") if cdn[2]==nil then cd2="" else cd2="/"..cdn[2] end local dyt=string.split(fdata2[start],",") local uvi=string.split(fdata2[start+14]," ") local wsp=string.split(fdata2[start+26]," ") local wdr=string.split(fdata2[start+28]," ") day7={day=dyt[1],dat=string.gsub(dyt[2],"^.",""),con=cdn[1],hih=fdata2[start+2],low=fdata2[start+3],sri=fdata2[start+5],sst=fdata2[start+7],mri=fdata2[start+9],mst=fdata2[start+11],uvn=uvi[1],uvt=string.gsub(uvi[2],"[%(%)]",""),hum=fdata2[start+16],ppt=fdata2[start+18],snw=fdata2[start+20],cld=fdata2[start+22],mph=fdata2[start+24],wmh=string.gsub(wsp[1],"[%a]",""),wkm=string.gsub(wsp[2],"[%a%(,]",""),wkt=string.gsub(wsp[3],"[%a%)]",""),wdg=wdr[1],wdi=string.gsub(wdr[2],"[%(%)\n\r]",""),cd2=cd2} --day8 local start=start+29 local cdn=string.split(fdata2[start+1],"/") if cdn[2]==nil then cd2="" else cd2="/"..cdn[2] end local dyt=string.split(fdata2[start],",") local uvi=string.split(fdata2[start+14]," ") local wsp=string.split(fdata2[start+26]," ") local wdr=string.split(fdata2[start+28]," ") day8={day=dyt[1],dat=string.gsub(dyt[2],"^.",""),con=cdn[1],hih=fdata2[start+2],low=fdata2[start+3],sri=fdata2[start+5],sst=fdata2[start+7],mri=fdata2[start+9],mst=fdata2[start+11],uvn=uvi[1],uvt=string.gsub(uvi[2],"[%(%)]",""),hum=fdata2[start+16],ppt=fdata2[start+18],snw=fdata2[start+20],cld=fdata2[start+22],mph=fdata2[start+24],wmh=string.gsub(wsp[1],"[%a]",""),wkm=string.gsub(wsp[2],"[%a%(,]",""),wkt=string.gsub(wsp[3],"[%a%)]",""),wdg=wdr[1],wdi=string.gsub(wdr[2],"[%(%)\n\r]",""),cd2=cd2} --day9 local start=start+29 local cdn=string.split(fdata2[start+1],"/") if cdn[2]==nil then cd2="" else cd2="/"..cdn[2] end local dyt=string.split(fdata2[start],",") local uvi=string.split(fdata2[start+14]," ") local wsp=string.split(fdata2[start+26]," ") local wdr=string.split(fdata2[start+28]," ") day9={day=dyt[1],dat=string.gsub(dyt[2],"^.",""),con=cdn[1],hih=fdata2[start+2],low=fdata2[start+3],sri=fdata2[start+5],sst=fdata2[start+7],mri=fdata2[start+9],mst=fdata2[start+11],uvn=uvi[1],uvt=string.gsub(uvi[2],"[%(%)]",""),hum=fdata2[start+16],ppt=fdata2[start+18],snw=fdata2[start+20],cld=fdata2[start+22],mph=fdata2[start+24],wmh=string.gsub(wsp[1],"[%a]",""),wkm=string.gsub(wsp[2],"[%a%(,]",""),wkt=string.gsub(wsp[3],"[%a%)]",""),wdg=wdr[1],wdi=string.gsub(wdr[2],"[%(%)\n\r]",""),cd2=cd2} --day10 local start=start+29 local cdn=string.split(fdata2[start+1],"/") if cdn[2]==nil then cd2="" else cd2="/"..cdn[2] end local dyt=string.split(fdata2[start],",") local uvi=string.split(fdata2[start+14]," ") local wsp=string.split(fdata2[start+26]," ") local wdr=string.split(fdata2[start+28]," ") day10={day=dyt[1],dat=string.gsub(dyt[2],"^.",""),con=cdn[1],hih=fdata2[start+2],low=fdata2[start+3],sri=fdata2[start+5],sst=fdata2[start+7],mri=fdata2[start+9],mst=fdata2[start+11],uvn=uvi[1],uvt=string.gsub(uvi[2],"[%(%)]",""),hum=fdata2[start+16],ppt=fdata2[start+18],snw=fdata2[start+20],cld=fdata2[start+22],mph=fdata2[start+24],wmh=string.gsub(wsp[1],"[%a]",""),wkm=string.gsub(wsp[2],"[%a%(,]",""),wkt=string.gsub(wsp[3],"[%a%)]",""),wdg=wdr[1],wdi=string.gsub(wdr[2],"[%(%)\n\r]",""),cd2=cd2} --################################################## --######font and image processing################### --################################################## nowif=string.split((loadstring("return ".."wimage."..string.gsub(icondata2[1],"/40_white/",""))()),",") day1if=string.split((loadstring("return ".."wimage."..string.gsub(icondata2[2],"/40_white/",""))()),",") day2if=string.split((loadstring("return ".."wimage."..string.gsub(icondata2[3],"/40_white/",""))()),",") day3if=string.split((loadstring("return ".."wimage."..string.gsub(icondata2[4],"/40_white/",""))()),",") day4if=string.split((loadstring("return ".."wimage."..string.gsub(icondata2[5],"/40_white/",""))()),",") day5if=string.split((loadstring("return ".."wimage."..string.gsub(icondata2[6],"/40_white/",""))()),",") day6if=string.split((loadstring("return ".."wimage."..string.gsub(icondata2[7],"/40_white/",""))()),",") day7if=string.split((loadstring("return ".."wimage."..string.gsub(icondata2[8],"/40_white/",""))()),",") day8if=string.split((loadstring("return ".."wimage."..string.gsub(icondata2[9],"/40_white/",""))()),",") day9if=string.split((loadstring("return ".."wimage."..string.gsub(icondata2[10],"/40_white/",""))()),",") day10if=string.split((loadstring("return ".."wimage."..string.gsub(icondata2[11],"/40_white/",""))()),",") --------------------------------------------------- image={ now=nowif[1], day1=day1if[1], day2=day2if[1], day3=day3if[1], day4=day4if[1], day5=day5if[1], day6=day6if[1], day7=day7if[1], day8=day8if[1], day9=day9if[1], day10=day10if[1] } --------------------------------------------------- font={now=nowif[2],day1=day1if[2],day2=day2if[2],day3=day3if[2],day4=day4if[2],day5=day5if[2],day6=day6if[2],day7=day7if[2],day8=day8if[2],day9=day9if[2],day10=day10if[2]} --wind font----------------------------------------- windfont={ now=(loadstring("return ".."windfontt."..now.wdi)()), day1=(loadstring("return ".."windfontt."..day1.wdi)()), day2=(loadstring("return ".."windfontt."..day2.wdi)()), day3=(loadstring("return ".."windfontt."..day3.wdi)()), day4=(loadstring("return ".."windfontt."..day4.wdi)()), day5=(loadstring("return ".."windfontt."..day5.wdi)()), day6=(loadstring("return ".."windfontt."..day6.wdi)()), day7=(loadstring("return ".."windfontt."..day7.wdi)()), day8=(loadstring("return ".."windfontt."..day8.wdi)()), day9=(loadstring("return ".."windfontt."..day9.wdi)()), day10=(loadstring("return ".."windfontt."..day10.wdi)()), } --moon font----------------------------------------- moonfont={ day1=(loadstring("return ".."moonfontt."..string.gsub(day1.mph," ",""))()), day2=(loadstring("return ".."moonfontt."..string.gsub(day2.mph," ",""))()), day3=(loadstring("return ".."moonfontt."..string.gsub(day3.mph," ",""))()), day4=(loadstring("return ".."moonfontt."..string.gsub(day4.mph," ",""))()), day5=(loadstring("return ".."moonfontt."..string.gsub(day5.mph," ",""))()), day6=(loadstring("return ".."moonfontt."..string.gsub(day6.mph," ",""))()), day7=(loadstring("return ".."moonfontt."..string.gsub(day7.mph," ",""))()), day8=(loadstring("return ".."moonfontt."..string.gsub(day8.mph," ",""))()), day9=(loadstring("return ".."moonfontt."..string.gsub(day9.mph," ",""))()), day10=(loadstring("return ".."moonfontt."..string.gsub(day10.mph," ",""))()), } --################################################## --##writing data to file for conkyrc restart######## --################################################## local file = io.open(location, "w") local datastringnow=now.con.."|"..now.tmp.."|"..now.flk.."|"..now.wch.."|"..now.cel.."|"..now.hid.."|"..now.vis.."|"..now.dpt.."|"..now.wsp.."|"..now.wdg.."|"..now.wdi.."|"..now.wgs.."|"..now.hum.."|"..now.prs.."|"..now.cd2 local datastringday1=day1.day.."|"..day1.dat.."|"..day1.con.."|"..day1.hih.."|"..day1.low.."|"..day1.sri.."|"..day1.sst.."|"..day1.mri.."|"..day1.mst.."|"..day1.uvn.."|"..day1.uvt.."|"..day1.hum.."|"..day1.ppt.."|"..day1.snw.."|"..day1.cld.."|"..day1.mph.."|"..day1.wmh.."|"..day1.wkm.."|"..day1.wkt.."|"..day1.wdg.."|"..day1.wdi.."|"..day1.cd2 local datastringday2=day2.day.."|"..day2.dat.."|"..day2.con.."|"..day2.hih.."|"..day2.low.."|"..day2.sri.."|"..day2.sst.."|"..day2.mri.."|"..day2.mst.."|"..day2.uvn.."|"..day2.uvt.."|"..day2.hum.."|"..day2.ppt.."|"..day2.snw.."|"..day2.cld.."|"..day2.mph.."|"..day2.wmh.."|"..day2.wkm.."|"..day2.wkt.."|"..day2.wdg.."|"..day2.wdi.."|"..day2.cd2 local datastringday3=day3.day.."|"..day3.dat.."|"..day3.con.."|"..day3.hih.."|"..day3.low.."|"..day3.sri.."|"..day3.sst.."|"..day3.mri.."|"..day3.mst.."|"..day3.uvn.."|"..day3.uvt.."|"..day3.hum.."|"..day3.ppt.."|"..day3.snw.."|"..day3.cld.."|"..day3.mph.."|"..day3.wmh.."|"..day3.wkm.."|"..day3.wkt.."|"..day3.wdg.."|"..day3.wdi.."|"..day3.cd2 local datastringday4=day4.day.."|"..day4.dat.."|"..day4.con.."|"..day4.hih.."|"..day4.low.."|"..day4.sri.."|"..day4.sst.."|"..day4.mri.."|"..day4.mst.."|"..day4.uvn.."|"..day4.uvt.."|"..day4.hum.."|"..day4.ppt.."|"..day4.snw.."|"..day4.cld.."|"..day4.mph.."|"..day4.wmh.."|"..day4.wkm.."|"..day4.wkt.."|"..day4.wdg.."|"..day4.wdi.."|"..day4.cd2 local datastringday5=day5.day.."|"..day5.dat.."|"..day5.con.."|"..day5.hih.."|"..day5.low.."|"..day5.sri.."|"..day5.sst.."|"..day5.mri.."|"..day5.mst.."|"..day5.uvn.."|"..day5.uvt.."|"..day5.hum.."|"..day5.ppt.."|"..day5.snw.."|"..day5.cld.."|"..day5.mph.."|"..day5.wmh.."|"..day5.wkm.."|"..day5.wkt.."|"..day5.wdg.."|"..day5.wdi.."|"..day5.cd2 local datastringday6=day6.day.."|"..day6.dat.."|"..day6.con.."|"..day6.hih.."|"..day6.low.."|"..day6.sri.."|"..day6.sst.."|"..day6.mri.."|"..day6.mst.."|"..day6.uvn.."|"..day6.uvt.."|"..day6.hum.."|"..day6.ppt.."|"..day6.snw.."|"..day6.cld.."|"..day6.mph.."|"..day6.wmh.."|"..day6.wkm.."|"..day6.wkt.."|"..day6.wdg.."|"..day6.wdi.."|"..day6.cd2 local datastringday7=day7.day.."|"..day7.dat.."|"..day7.con.."|"..day7.hih.."|"..day7.low.."|"..day7.sri.."|"..day7.sst.."|"..day7.mri.."|"..day7.mst.."|"..day7.uvn.."|"..day7.uvt.."|"..day7.hum.."|"..day7.ppt.."|"..day7.snw.."|"..day7.cld.."|"..day7.mph.."|"..day7.wmh.."|"..day7.wkm.."|"..day7.wkt.."|"..day7.wdg.."|"..day7.wdi.."|"..day7.cd2 local datastringday8=day8.day.."|"..day8.dat.."|"..day8.con.."|"..day8.hih.."|"..day8.low.."|"..day8.sri.."|"..day8.sst.."|"..day8.mri.."|"..day8.mst.."|"..day8.uvn.."|"..day8.uvt.."|"..day8.hum.."|"..day8.ppt.."|"..day8.snw.."|"..day8.cld.."|"..day8.mph.."|"..day8.wmh.."|"..day8.wkm.."|"..day8.wkt.."|"..day8.wdg.."|"..day8.wdi.."|"..day8.cd2 local datastringday9=day9.day.."|"..day9.dat.."|"..day9.con.."|"..day9.hih.."|"..day9.low.."|"..day9.sri.."|"..day9.sst.."|"..day9.mri.."|"..day9.mst.."|"..day9.uvn.."|"..day9.uvt.."|"..day9.hum.."|"..day9.ppt.."|"..day9.snw.."|"..day9.cld.."|"..day9.mph.."|"..day9.wmh.."|"..day9.wkm.."|"..day9.wkt.."|"..day9.wdg.."|"..day9.wdi.."|"..day9.cd2 local datastringday10=day10.day.."|"..day10.dat.."|"..day10.con.."|"..day10.hih.."|"..day10.low.."|"..day10.sri.."|"..day10.sst.."|"..day10.mri.."|"..day10.mst.."|"..day10.uvn.."|"..day10.uvt.."|"..day10.hum.."|"..day10.ppt.."|"..day10.snw.."|"..day10.cld.."|"..day10.mph.."|"..day10.wmh.."|"..day10.wkm.."|"..day10.wkt.."|"..day10.wdg.."|"..day10.wdi.."|"..day10.cd2 local datastringfont=font.now.."|"..font.day1.."|"..font.day2.."|"..font.day3.."|"..font.day4.."|"..font.day5.."|"..font.day6.."|"..font.day7.."|"..font.day8.."|"..font.day9.."|"..font.day10 local datastringimage=image.now.."|"..image.day1.."|"..image.day2.."|"..image.day3.."|"..image.day4.."|"..image.day5.."|"..image.day6.."|"..image.day7.."|"..image.day8.."|"..image.day9.."|"..image.day10 local datastringwindfont=windfont.now.."|"..windfont.day1.."|"..windfont.day2.."|"..windfont.day3.."|"..windfont.day4.."|"..windfont.day5.."|"..windfont.day6.."|"..windfont.day7.."|"..windfont.day8.."|"..windfont.day9.."|"..windfont.day10 local datastringmoonfont=moonfont.day1.."|"..moonfont.day2.."|"..moonfont.day3.."|"..moonfont.day4.."|"..moonfont.day5.."|"..moonfont.day6.."|"..moonfont.day7.."|"..moonfont.day8.."|"..moonfont.day9.."|"..moonfont.day10 file:write(datastringnow.."<>"..datastringday1.."<>"..datastringday2.."<>"..datastringday3.."<>"..datastringday4.."<>:"..datastringday5.."<>"..datastringday6.."<>"..datastringday7.."<>"..datastringday8.."<>"..datastringday9.."<>"..datastringday10.."<>"..datastringfont.."<>"..datastringimage.."<>"..datastringwindfont.."<>"..datastringmoonfont) file:close() end--timed section --################################################## --#read written data and process for conyrc restart# --################################################## if data1==nil then local f=io.popen("cat '"..location.."'") local alldata=f:read("*a") f:close() daydata=string.split(alldata,"<>") now=string.split(daydata[1],"|") day1=string.split(daydata[2],"|") day2=string.split(daydata[3],"|") day3=string.split(daydata[4],"|") day4=string.split(daydata[5],"|") day5=string.split(daydata[6],"|") day6=string.split(daydata[7],"|") day7=string.split(daydata[8],"|") day8=string.split(daydata[9],"|") day9=string.split(daydata[10],"|") day10=string.split(daydata[11],"|") font=string.split(daydata[12],"|") image=string.split(daydata[13],"|") windfont=string.split(daydata[14],"|") moonfont=string.split(daydata[15],"|") --set individual data points now={con=now[1],tmp=now[2],flk=now[3],wch=now[4],cel=now[5],hid=now[6],vis=now[7],dpt=now[8],wsp=now[9],wdg=now[10],wdi=now[11],wgs=now[12],hum=now[13],prs=now[14],cd2=now[15]} day1={day=day1[1],dat=day1[2],con=day1[3],hih=day1[4],low=day1[5],sri=day1[6],sst=day1[7],mri=day1[8],mst=day1[9],uvn=day1[10],uvt=day1[11],hum=day1[12],ppt=day1[13],snw=day1[14],cld=day1[15],mph=day1[16],wmh=day1[17],wkm=day1[18],wkt=day1[19],wdg=day1[20],wdi=day1[21],cd2=day1[22]} day2={day=day2[1],dat=day2[2],con=day2[3],hih=day2[4],low=day2[5],sri=day2[6],sst=day2[7],mri=day2[8],mst=day2[9],uvn=day2[10],uvt=day2[11],hum=day2[12],ppt=day2[13],snw=day2[14],cld=day2[15],mph=day2[16],wmh=day2[17],wkm=day2[18],wkt=day2[19],wdg=day2[20],wdi=day2[21],cd2=day2[22]} day3={day=day3[1],dat=day3[2],con=day3[3],hih=day3[4],low=day3[5],sri=day3[6],sst=day3[7],mri=day3[8],mst=day3[9],uvn=day3[10],uvt=day3[11],hum=day3[12],ppt=day3[13],snw=day3[14],cld=day3[15],mph=day3[16],wmh=day3[17],wkm=day3[18],wkt=day3[19],wdg=day3[20],wdi=day3[21],cd2=day3[22]} day4={day=day4[1],dat=day4[2],con=day4[3],hih=day4[4],low=day4[5],sri=day4[6],sst=day4[7],mri=day4[8],mst=day4[9],uvn=day4[10],uvt=day4[11],hum=day4[12],ppt=day4[13],snw=day4[14],cld=day4[15],mph=day4[16],wmh=day4[17],wkm=day4[18],wkt=day4[19],wdg=day4[20],wdi=day4[21],cd2=day4[22]} day5={day=day5[1],dat=day5[2],con=day5[3],hih=day5[4],low=day5[5],sri=day5[6],sst=day5[7],mri=day5[8],mst=day5[9],uvn=day5[10],uvt=day5[11],hum=day5[12],ppt=day5[13],snw=day5[14],cld=day5[15],mph=day5[16],wmh=day5[17],wkm=day5[18],wkt=day5[19],wdg=day5[20],wdi=day5[21],cd2=day5[22]} day6={day=day6[1],dat=day6[2],con=day6[3],hih=day6[4],low=day6[5],sri=day6[6],sst=day6[7],mri=day6[8],mst=day6[9],uvn=day6[10],uvt=day6[11],hum=day6[12],ppt=day6[13],snw=day6[14],cld=day6[15],mph=day6[16],wmh=day6[17],wkm=day6[18],wkt=day6[19],wdg=day6[20],wdi=day6[21],cd2=day6[22]} day7={day=day7[1],dat=day7[2],con=day7[3],hih=day7[4],low=day7[5],sri=day7[6],sst=day7[7],mri=day7[8],mst=day7[9],uvn=day7[10],uvt=day7[11],hum=day7[12],ppt=day7[13],snw=day7[14],cld=day7[15],mph=day7[16],wmh=day7[17],wkm=day7[18],wkt=day7[19],wdg=day7[20],wdi=day7[21],cd2=day7[22]} day8={day=day8[1],dat=day8[2],con=day8[3],hih=day8[4],low=day8[5],sri=day8[6],sst=day8[7],mri=day8[8],mst=day8[9],uvn=day8[10],uvt=day8[11],hum=day8[12],ppt=day8[13],snw=day8[14],cld=day8[15],mph=day8[16],wmh=day8[17],wkm=day8[18],wkt=day8[19],wdg=day8[20],wdi=day8[21],cd2=day8[22]} day9={day=day9[1],dat=day9[2],con=day9[3],hih=day9[4],low=day9[5],sri=day9[6],sst=day9[7],mri=day9[8],mst=day9[9],uvn=day9[10],uvt=day9[11],hum=day9[12],ppt=day9[13],snw=day9[14],cld=day9[15],mph=day9[16],wmh=day9[17],wkm=day9[18],wkt=day9[19],wdg=day9[20],wdi=day9[21],cd2=day9[22]} day10={day=day10[1],dat=day10[2],con=day10[3],hih=day10[4],low=day10[5],sri=day10[6],sst=day10[7],mri=day10[8],mst=day10[9],uvn=day10[10],uvt=day10[11],hum=day10[12],ppt=day10[13],snw=day10[14],cld=day10[15],mph=day10[16],wmh=day10[17],wkm=day10[18],wkt=day10[19],wdg=day10[20],wdi=day10[21],cd2=day10[22]} font={now=font[1],day1=font[2],day2=font[3],day3=font[4],day4=font[5],day5=font[6],day6=font[7],day7=font[8],day8=font[9],day9=font[10],day10=font[11]} image={now=image[1],day1=image[2],day2=image[3],day3=image[4],day4=image[5],day5=image[6],day6=image[7],day7=image[8],day8=image[9],day9=image[10],day10=image[11]} windfont={now=windfont[1],day1=windfont[2],day2=windfont[3],day3=windfont[4],day4=windfont[5],day5=windfont[6],day6=windfont[7],day7=windfont[8],day8=windfont[9],day9=windfont[10],day10=windfont[11]} moonfont={day1=moonfont[1],day2=moonfont[2],day3=moonfont[3],day4=moonfont[4],day5=moonfont[5],day6=moonfont[6],day7=moonfont[7],day8=moonfont[8],day9=moonfont[9],day10=moonfont[10]} end--if data1==nil return "" --######################################### end--weather data gathering function####### --######################################### --############################################################# function conky_weather(conkydata,xpos,ypos,scale1,scale2)--#### --############################################################# if conky_window == nil then return end local cs = cairo_xlib_surface_create(conky_window.display, conky_window.drawable, conky_window.visual, conky_window.width, conky_window.height) cr = cairo_create(cs) if xpos==nil then xpos=0 end if ypos==nil then ypos=0 end if scale1==nil then scale1=0 end if scale2==nil then scale2=0 end --######################## --####print moon font##### --######################## if string.find(conkydata,"moonfont")~=nil then local function rgb_to_r_g_b(color) return ((color/0x10000) % 0x100)/255,((color/0x100) % 0x100)/255,(color % 0x100)/255,1 end wfont="Moon Phases" fsize=scale1 cairo_select_font_face (cr, wfont, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, fsize) text=(loadstring("return "..conkydata)()) extents=cairo_text_extents_t:create() cairo_text_extents(cr,text,extents) xb=extents.x_bearing yb=extents.y_bearing height=extents.height ybadj=-height-yb cairo_set_source_rgba (cr ,rgb_to_r_g_b(scale2)) cairo_move_to (cr,xpos-xb,ypos+ybadj) cairo_show_text (cr,text) conkydata="" end--moon font --######################## --####print wind font##### --######################## if string.find(conkydata,"windfont")~=nil then local function rgb_to_r_g_b(color) return ((color/0x10000) % 0x100)/255,((color/0x100) % 0x100)/255,(color % 0x100)/255,1 end wfont="ConkyWindNESW" fsize=scale1 cairo_select_font_face (cr, wfont, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, fsize) text=(loadstring("return "..conkydata)()) extents=cairo_text_extents_t:create() cairo_text_extents(cr,text,extents) xb=extents.x_bearing yb=extents.y_bearing height=extents.height ybadj=-height-yb cairo_set_source_rgba (cr ,rgb_to_r_g_b(scale2)) cairo_move_to (cr,xpos-xb,ypos+ybadj) cairo_show_text (cr,text) conkydata="" end--wind font --######################## --####print weather font##### --######################## --weather font comes last as will match windfont and moonfont if string.find(conkydata,"font")~=nil then local function rgb_to_r_g_b(color) return ((color/0x10000) % 0x100)/255,((color/0x100) % 0x100)/255,(color % 0x100)/255,1 end wfont="ConkyWeather" fsize=scale1 cairo_select_font_face (cr, wfont, CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL); cairo_set_font_size (cr, fsize) text=(loadstring("return "..conkydata)()) extents=cairo_text_extents_t:create() cairo_text_extents(cr,text,extents) xb=extents.x_bearing yb=extents.y_bearing height=extents.height ybadj=-height-yb cairo_set_source_rgba (cr ,rgb_to_r_g_b(scale2)) cairo_move_to (cr,xpos-xb,ypos+ybadj) cairo_show_text (cr,text) conkydata="" end--weather font --weather image if string.find(conkydata,"image")~=nil then output="${image "..weathericons..(loadstring("return "..conkydata)())..".png -p "..xpos..","..ypos.." -s "..scale1.."x"..scale2.."}" conkydata="" elseif loadstring("return " .. conkydata)()==nil then output="" else output=(loadstring("return " .. conkydata)()) end --########################################## cairo_destroy(cr) cairo_surface_destroy(cs) cr=nil return output end--main function