Conky, Omat asetukset

Fecfactor pyysi minua eilen julkaisemaan alla olevassa kuvakaappauksessa näytettävän conkin kokoonpanon

Kuten näette, on 3 konkia, jotka suoritetaan komentosarjan avulla, sen kokoonpano perustuu tämä viesti lähettänyt käyttäjä Bruce M. foorumeilla Ubuntu-Ar joitakin muutoksia postilaatikossa, joka on minun tapauksessani Gmailia varten.

Viitetekstissä Bruce on selittänyt sen hyvin, mutta kopioin myös seuraavat vaiheet ja koodini kullekin, jolla on se, muistina minulle.

No, tietysti meidän on oltava asennettu conky, curl ja python, joten kirjoitamme konsoliin:

sudo apt-get asenna conky curl python

Lähde weather.ttf ja nuolet.ttf on täällä. Kuun lähde on täällä Kun olet ladannut, sinun on kopioitava ne tiedostoon / usr / share / fonts

Luodaan nyt komentosarja nimeltä ~. / Startconky

gksudo gedit ~ / .startconky

tyhjän tiedoston sisälle liitämme seuraavat

#! / Bin / bash
nuku 0 & # 0 hyvä Xfcelle - käytä 20-30 Gnomeen
conky -c ~ / Conky / conkymain &
#sleep 0 & # 0 hyvä Xfcelle - käytä 1 Gnomeen
conky -c ~ / Conky / conkyforecast &
#sleep 0 & # 0 hyvä Xfcelle - käytä 1 Gnomeen
conky -c ~ / Conky / conkymail &

Nyt luomme conkymain-tiedoston ~ / Conky-kansioon, jos meillä ei ole Conky-kansiota, meidän on luotava se.

gedit ~ / Conky / conkymain

Käytän Calibri-fonttia, jos sinulla ei ole sitä, korvaa se millä haluat.

Pidämme kiinni seuraavasta

taustanumero
oma ikkuna kyllä
oma_ikkunan läpinäkyvä kyllä
own_window_hints koristamaton, alla, tahmea, skip_taskbar, skip_pager
oma_ikkunan_väri musta
double_buffer kyllä
use_spacer vasemmalle
use_xft kyllä
fontin kalibri: koko = 9
xftfont calibri: koko = 9
xftalpha 0.5
päivitysväli 5.0
isojen kirjainten nro # arvoksi on asetettu Kyllä, jos haluat, että kaikki teksti on isoja
määrätyt_rajat 3
reunamarginaali 9
reunan_leveys 10
oletusväri valkoinen
default_outline_color musta
default_shade_color musta
väri0 syaani
väri1 vaaleansininen
väri2 oranssi
väri3 keltainen
väri 4 vehnää
väri5 valkoinen
väri6 valkoinen
väri7 valkoinen
väri8 valkoinen
väri9 valkoinen
tasaus ylhäällä oikealla tai ylhäällä, vasemmalla, alemmalla, oikealla
aukko_x 10
aukko_y 35
text_buffer_size 128 # käytä ennustetta varten 1024
no_buffers yes # Vähennetäänkö tiedostojärjestelmäpuskurit käytetystä muistista?
piirtorajat nro
draw_outline yes # vahvistaa tekstiä, jos kyllä
draw_shades yes # shadecolor musta

TEKSTI
$ {font calibri: size = 12} $ {alignc} $ {color1} $ sysname $ kernel $ machine} $ color $ font
$ {font calibri: size = 12} $ {alignc} $ {color2} $ {exec whoami} @ $ nodename $ color $ font
$ {color0} $ {hr 1} $ väriä
$ {font calibri: size = 20} $ {alignc} $ {time% H:% M} $ fontti
$ {font calibri: size = 12} $ {color1} $ {alignc} $ {time% A,% d% b. % Y} $ color $ fontti
$ {color3} UpTime: $ {alignr 2} $ uptime $ color
$ {color0} $ {hr 1} $ väriä
$ {voffset 5} $ {color2} CPU: $ {alignc} $ color $ running_processes $ {color1} / $ color $ käsittelee $ {alignr 2} $ {color2} $ {cpubar cpu0 14,80} $ color
$ {color1} $ {voffset -16} $ {alignr 5} $ cpu% $ color
$ {voffset 2} $ {color1} Lataa keskiarvo ($ {color3} Min $ {color1}): $ {alignr 2} $ {color3} 1: $ color $ {loadavg 1} $ {color3} 5: $ color $ {loadavg 2} $ {color3} 15: $ color $ {loadavg 3}
$ {voffset 5} $ {color2} RAM: $ color $ mem $ {color2} / $ color $ memmax $ {alignr 2} $ {color2} $ {membar 14,80} $ color
$ {color1} $ {voffset -16} $ {alignr 5} $ memperc% $ color
$ {voffset 2} $ {color1} Puskuroitu: $ color $ {buffers} $ {alignr 2} $ {color1} Välimuisti: $ color $ {cached}
$ {voffset 5} $ {color2} VAIHTO: $ color $ swap $ {color2} / $ color $ {swapmax} $ {alignr 2} $ {color2} $ {swapbar 14,80} $ color
$ {color1} $ {voffset -16} $ {alignr 5} $ swapperc%
$ {color0} $ {hr 1} $ väriä
$ {voffset 5} $ {color2} HD-tiedot $ {color1} - $ color Free $ {color1} - Käytetty - $ {color2} Yhteensä
$ {voffset 5} $ {color1} Root: $ color $ {fs_free_perc /}% $ {alignr 2} $ {fs_free /} $ {color2} / $ {color1} $ {fs_used /} $ color / $ {color2} $ {fs_size /} $ väriä
$ {color1} Koti: $ color $ {fs_free_perc / home / user}% $ {alignr 2} $ {fs_free / home / user} $ {color2} / $ {color1} $ {fs_used / home / user} $ color / $ {color2} $ {fs_size / home / user} $ väriä
$ {color0} $ {hr 1} $ väriä
$ {color1} Lähettäjä: $ color Buenos Aires, Argentiina
$ {color1} Lev.: $ {color2} 34 ° 35'S $ {color1} Pitkä: $ {color2} 58 ° 21'W $ {color1} Alt: $ {color2} 25 m $ väriä
$ {voffset 5} $ {color2} $ {font calibri: size = 12} tänään: $ font $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = CC} $ väri $ {alignr 2} $ {color1} ST: $ {color2} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = LT}
$ {color3} $ {font Weather: size = 50} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = WF} $ font $ color
$ {alignr 50} $ {voffset -55} $ {font calibri: size = 25} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = HT} $ font
$ {alignc 20} $ {voffset -30} $ {fontin nuolet: size = 20} $ {color4} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = BF} $ color $ fontti
$ {alignc 10} $ {voffset 5} $ {color4} Tuuli: $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = WS} $ color
$ {color1} Kosteus: $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = HM} $ {alignr 2} $ {color1} Sademäärä: $ {color3} $ { execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = PC} $ väri
$ {alignc} $ {color1} Paine: $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = BR} - $ {color3} $ {execi 3600 python ~ / Conky /scripts/conkyForecast.py –location = ARBA0009 –datatype = BD} $ väri
$ {color4} $ {hr} $ väriä
$ {color1} Auringonnousu: $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = SR} $ {alignr 2} $ {color1} Auringonlasku: $ {color3} $ { execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = SS} $ väri
$ {voffset 15} $ {color1} Kuu: $ {color4} $ {alignr 2} $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = MP} $ color
$ {voffset -20} $ {offset 80} $ {color4} $ {font moon vaiheet: size = 20} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = MF} $ font $ väri
$ {color0} $ {hr} $ väriä
$ {voffset 5} $ {color2} IP: $ {alignc} $ color $ {addr eth0}
$ {color1} alas: $ color $ {downspeed eth0} k / s $ {alignr 2} $ {color1} ylös: $ color $ {upspeed eth0} k / s
$ {color1} Yhteensä: $ color $ {totaldown eth0} $ {alignr 2} $ {color1} Yhteensä: $ color $ {totalup eth0}
$ {color1} Saapuva: $ color $ {tcp_portmon 1 32767 count} $ {color1} Lähtevä: $ color $ {tcp_portmon 32768 61000 count} $ {alignr 2} $ {color1} Yhteensä: $ color $ {tcp_portmon 1 65535 count}
$ {voffset 5} $ {color2} Yhteydet: $ color $ {tcp_portmon 32768 61000 count} $ {alignr 2} $ {color2} Palvelu / Portti $ color
$ {voffset 5} $ {tcp_portmon 32768 61000 rhost 0} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 0}
$ {tcp_portmon 32768 61000 rhost 1} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 1}
$ {tcp_portmon 32768 61000 rhost 2} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 2}
$ {tcp_portmon 32768 61000 rhost 3} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 3}
$ {tcp_portmon 32768 61000 rhost 4} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 4}
$ {tcp_portmon 32768 61000 rhost 5} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 5} $ color

luomme tiedoston ~ / Conky / conkyforecast

gedit ~ / Conky / conkyforecast

ja liitämme seuraavat sisälle

taustanumero
oma ikkuna kyllä
oma_ikkunan läpinäkyvä kyllä
own_window_hints koristamaton, alla, tahmea, skip_taskbar, skip_pager
oma_ikkunan_väri musta
double_buffer kyllä
use_spacer vasemmalle
use_xft kyllä
fontin kalibri: koko = 8
xftfont calibri: koko = 8
xftalpha 0.5
päivitysväli 5.0
isojen kirjainten nro # arvoksi on asetettu Kyllä, jos haluat, että kaikki teksti on isoja
määrätyt_rajat 3
reunamarginaali 9
reunan_leveys 10
oletusväri valkoinen
default_outline_color musta
default_shade_color musta
väri0 syaani
väri1 vaaleansininen
väri2 oranssi
väri3 keltainen
väri 4 vehnää
väri5 valkoinen
väri6 valkoinen
väri7 valkoinen
väri8 valkoinen
väri9 valkoinen
suuntaus ala-vasen # tai ylä-vasen, ala-vasen, ala-oikea
aukko_x 10
aukko_y 35
text_buffer_size 1024 # käytä ennustetta varten 1024
no_buffers yes # Vähennetäänkö tiedostojärjestelmäpuskurit käytetystä muistista?
piirtorajat nro
draw_outline yes # vahvistaa tekstiä, jos kyllä
draw_shades yes # shadecolor musta

TEKSTI
$ {color4} $ {font calibri: size = 11} Laajennettu ennuste $ font $ color
$ {color0} $ {hr} $ väriä
$ {color4} $ {font calibri: size = 9} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –template = / home / user / Conky / scripts / myweather.template} $ font $ väri

luomme tiedoston ~ / Conky / conkymail

gedit ~ / Conky / conkymail

liitämme seuraavat tiedostoon

taustanumero
oma ikkuna kyllä
oma_ikkunan läpinäkyvä kyllä
own_window_hints koristamaton, alla, tahmea, skip_taskbar, skip_pager
oma_ikkunan_väri musta
double_buffer kyllä
use_spacer vasemmalle
use_xft kyllä
fontin kalibri: koko = 8
xftfont calibri: koko = 8
xftalpha 0.5
päivitysväli 5.0
isojen kirjainten nro # arvoksi on asetettu Kyllä, jos haluat, että kaikki teksti on isoja
määrätyt_rajat 3
reunamarginaali 9
reunan_leveys 10
oletusväri valkoinen
default_outline_color musta
default_shade_color musta
väri0 syaani
väri1 vaaleansininen
väri2 oranssi
väri3 keltainen
väri 4 vehnää
väri5 valkoinen
väri6 valkoinen
väri7 valkoinen
väri8 valkoinen
väri9 valkoinen
suuntaus ala-vasen # tai ylä-vasen, ala-vasen, ala-oikea
aukko_x 565
aukko_y 35
text_buffer_size 128 # käytä ennustetta varten 1024
no_buffers yes # Vähennetäänkö tiedostojärjestelmäpuskurit käytetystä muistista?
piirtorajat nro
draw_outline yes # vahvistaa tekstiä, jos kyllä
draw_shades yes # shadecolor musta

TEKSTI
$ {font calibri: size = 11} $ {alignc} $ {color4} Gmail
$ {color0} $ {hr} $ väriä
$ {font calibri: size = 11} $ {color4} Meillä on $ {color3} $ {execi 300 python ~ / Conky / scripts / mail / conkyEmail.py} $ {color4} sähköpostiosoitetta $ font

Luomme tiedoston hakemistoon ~ / Conky / scripts / conkyForecast.py (meidän on luotava komentosarjakansio)

gedit ~ / Conky / scripts / conkyForecast.py

#! / usr / bin / python
# - * - koodaus: utf-8 - * -
######################################################### ################################
# conkyForecast.py on (ei enää) yksinkertainen (enää) python-komentosarja kerättäväksi
# yksityiskohdat nykyisestä säästä käytettäväksi conky.
#
# Kirjoittaja: Kaivalagi
# Luotu: 13
# Muutokset:
# 14/04/2008 Salli ennustetietojen päivät
# 14/04/2008 Tarkista yhteys xoap-palveluun
# 18/04/2008 Salli etäisyyksien asettaminen etäisyydelle
# 18/04/2008 Salli yön ja päivän ennuste
# 18/04/2008 Tukee ehtokooditeksti «CC» -vaihtoehtoa, odottaa espanjankielistä käännöstä
# 18/04/2008 Käytä peittausta luokan tiedoissa sen sijaan, että avaisit xml: n, tämä ohittaa välimuistitiedon kyselyn tarpeen
# 19/04/2008 Lisätty espanjankielinen teksti - kiitos Bruce M
# 19/04/2008 Lisätty isnumerinen tarkistus kaikille numeerisille lähdöille yksikköpääteellä
# 19/04/2008 Suolakurkkutiedoston nimeämistä muutettiin sisällyttämään sijaintikoodi
# 19/04/2008 Lisätty espanjalaisten viikonpäivien muunnos aluekohtaisesti
# 20/04/2008 Lisätty kunnollinen komentoargumentin jäsennin
# 20/04/2008 Lisätty – lyhytviikkopäivä -vaihtoehto, jos viikonpäivä tietotyyppi lyhennetään 3 merkkiin
# 21/04/2008 Kiinteät kielivaihtoehdot ennustetuotokselle
# 21/04/2008 Lisätty –template -vaihtoehto sallia mukautetun lähdön käyttämällä yhtä exec-puhelua 🙂
# 21/04/2008 Lisätty -hideunits vaihtoehto poistaa esimerkiksi mph ja C tuotoksesta
# 23/04/2008 Poistettu - olennainen vaihtoehto mallista, tämä PITÄÄ asettaa vakiovaihtoehtona komentosarjapuhelussa eikä sitä käytetä mallitiedostossa.
# 23/04/2008 Luettu - olennainen vaihtoehto malliin, joka sallii metri- tai imperiaaliarvot tietotyyppiä kohti. Huomaa, että kun käytetään malleja, komentorivivaihtoehto ei toimi.
# 23/04/2008 Lisätty lähtö, joka ilmoittaa käyttäjälle, jos annettu sijainti on huono
# 24/04/2008 Lisätty käsittely ilman yhteyksiä, palaa välimuistitietoihin nyt (virhe, jos välimuistia ei ole). Testaa avaamalla xoap.weather.com
# 24/04/2008 Kiinteä celsius-fahrenheit-muunnos
# 06/05/2008 Päivitetty URL-osoite, jota käytettiin verkkopalvelun päivityksen jälkeen
# 09/05/2008 Yhdistetty nykytila ​​ja ennustetiedot haetaan yhdeksi puheluksi
# 09/05/2008 Lisätty auringonnousu ja -lasku tietotyyppeihin, jotka koskevat sekä nykyisiä olosuhteita että ennustetietoja
# 09/05/2008 Lisättiin kuun vaihe, barometrin lukema ja barometrin kuvaus tietotyyppeihin, nämä ovat vain nykyisiä olosuhteita ja niin myös ennustetussa tuotoksessa ei ole
# 09/05/2008 Lisätty barometrin yksikkömuunnokset megatavuista tuumiin (imperial)
# 09/05/2008 Päivitetty espanjankielinen teksti - kiitos Bruce M
# 10/05/2008 Lisätty ranskankieliset tiedot - kiitos benpaka
# 12/05/2008 Lisättiin uusi BF-tietotyyppi (joissa on fontti) antamaan nuolimerkki (käytä Arrow.ttf-fontin kanssa) NSD-lähdön sijaan WD: stä (tuulen suunta)
# 12/05/2008 Päivitetty WD-lähdekielikohtainen, tukee tällä hetkellä oletusta englanniksi ja espanjaksi - kiitos Bruce M
# 18/05/2008 Lisättiin uusi MF (moon font) -tietotyyppi kuun fontin merkin antamiseksi (merkit ovat virheellisiä ja ei vielä omistettua kirjasinta).
# 21/05/2008 Nykyisissä olosuhteissa vaihtoehto –datatype = LT näyttää nyt lämpötilan tuntuu nykyisen lämpötilan sijasta
#
# KAIKKI:
# Yhdistä pkl-tiedostot yhteen tiedostoon / luokkaan
# Lisää sää fontti, joka perustuu kuun vaiheen tulokseen kuun kuvaketietojen perusteella
# ??? Onko siellä vielä vaatimuksia?

tuo sys, os, socket, urllib2, päivämäärä, aika
osoitteesta xml.dom tuoda minidom
tilatuonnista *
optparse-tuonnista OptionParser
tuo kieli
tuo gettext
tuoda suolakurkkua
matematiikan tuonnista *

APP = »conkyForecast.py»
DIR = os.path.dirname (__tiedosto__) + '/ locale'
gettext.bindtextdomain (APP, DIR)
gettext.textdomain (APP)
_ = gettext.gettext

luokka CommandLineParser:

jäsennin = Ei mitään

def __init __ (itse):

self.parser = OptionParser ()
self.parser.add_option («- l», »- sijainti», dest = »sijainti», oletus = »UKXX0103 ″, type =» string », metavar =» CODE », help = u» säätietojen sijaintikoodi [ oletus:% default], määritä sijaintikoodisi kaupungin nimen mukaan seuraavalla URL-osoitteella: http://xoap.weather.com/search/search?where=Norwich »)
self.parser.add_option ("- d", "- tietotyyppi", dest = "tietotyyppi", oletus = "HT", tyyppi = "merkkijono", metavar = "DATATYYPPI", help = u "[oletus:% oletus] Tietotyyppivaihtoehdot ovat: DW (viikonpäivä), WF (sääfonttilähtö), LT (ennuste: matala lämpötila, nykyinen: tuntuu kuin lämpötila), HT (ennuste: korkea lämpötila, nykyinen: nykyinen lämpötila), CC (nykyinen Olosuhteet), CT (olosuheteksti), PC (sateen mahdollisuus), HM (kosteus), WD (tuulen suunta), WS (tuulen nopeus), WG (tuulen puuskat), CN (kaupungin nimi), SR (auringonnousu), SS (auringonlasku), MP (kuun vaihe), MF (kuun fontti), BR (barometrin lukema), BD (barometrin kuvaus). Ei käytettävissä komentorivillä, kun käytetään malleja. »)
self.parser.add_option («- s», »- startday», dest = »startday», type = »int», metavar = »NUMBER», help = u »määritä aloituspäivän numero, jos nykyiset ehdot jätetään pois . Ei käytettävissä komentorivillä, kun käytetään malleja. »)
self.parser.add_option ("- e", "- loppupäivä", dest = "loppupäivä", type = "int", metavar = "NUMBER", help = u "määritä lopetuspäivän numero, jos se jätetään pois vain alkupäivän tiedot on lähtö. Ei käytettävissä komentorivillä, kun käytetään malleja. »)
self.parser.add_option («- S», »- välilyönnit, dest =» välilyönnit, type = »int», oletus = 1, metavar = »NUMERO», help = u »[oletus:% oletus] Määrittää välilyönnin välinen ulostulo. Ei käytettävissä komentorivillä, kun käytetään malleja. »)
self.parser.add_option («- t», »- malli», dest = »malli», type = »merkkijono», metavar = »TIEDOSTO», help = u »määritä mallitiedosto, jolla tuotetaan tulos yhdellä puhelulla. A tiedoston näkyvä kohde on muodossa {–datatype = HT –startday = 1}. Seuraavat ovat mahdollisia vaihtoehtoja kunkin kohteen sisällä: –datatyyppi, –startday, –endday, –night, –shortweekday, –perperial, –hideunits, –Spaces. Huomaa, että vaihtoehtojen lyhyitä muotoja ei tällä hetkellä tueta! Mitään näistä vaihtoehdoista ei voida käyttää komentorivillä, kun käytetään malleja. »)
self.parser.add_option («- L», »- locale», dest = »locale», type = »string», help = u »ohittaa järjestelmän kielen tulostuksen kielen (en = englanti, es = espanja, fr = ranska, lisää tulossa) »)
self.parser.add_option ("- i", "- imperial", dest = "imperial", oletus = False, action = "store_true", help = u "pyydä imperiaalisia yksiköitä, jos jätetty tulos on metrinen. Ei sovellettavissa komentorivillä, kun käytetään malleja. »)
self.parser.add_option («- n», »- yö», dest = »yö», oletus = False, action = »store_true», help = u »vaihtaa lähdön yötiedoksi, jos päivätulosteet jätetään pois. Ei käytettävissä komentorivillä, kun käytetään malleja. »)
self.parser.add_option («- w», »- shortweekday», dest = »shortweekday», default = False, action = »store_true», help = u »Lyhennä viikonpäivän tietotyyppi 3 merkkiin. Ei käytettävissä komentorivillä, kun käytetään malleja. »)
self.parser.add_option («- u», »- piiloyksiköt», dest = »piiloyksiköt», oletus = False, action = »myymälä_tosi», help = u »Piilota yksiköt, kuten mph tai C, asteen symbolit (°) ovat näkyy edelleen. Ei käytettävissä komentorivillä, kun käytetään malleja. »)
self.parser.add_option ("- v", "- verbose", dest = "verbose", oletus = False, action = "store_true", help = u "pyytää tarkkoja tuloksia, ei ole hyvä idea, kun suoritetaan conky!" )
self.parser.add_option ("- r", "- noutaa", dest = "noutaa", oletus = epätosi, action = "myymälä_tosi", help = u "noutaa tietoja tietojen vanhentumisesta riippumatta")

def parse_args (itse):
(vaihtoehdot, argumentit) = self.parser.parse_args ()
tuotto (optiot, argumentit)

def print_help (itse):
palauta self.parser.print_help ()

luokka WeatherData:
def __init __ (itse, viikon_viikko, matala, korkea, kunnon_koodi, tilan_teksti, sadekosteus, tuulen_suunta, tuulen nopeus, tuulen_joukot, kaupunki, auringonnousu, auringonlasku, kuun vaihe, kuun_kuvake, palkinluku, bar_desc)
self.day_of_week = u »» + day_of_week
itse.low = u »» + matala
itse.korkea = u »» + korkea
self.condition_code = u »» + condition_code
self.condition_text = u »» + condition_text
itsesäätö = u »» + saost
itsekosteus = u »» + kosteus
self.wind_dir = u »» + wind_dir
self.wind_speed = u »» + tuulenopeus
self.wind_gusts = u »» + wind_gusts
itse.kaupunki = u »» + kaupunki
itse. auringonnousu = u »» + auringonnousu
itse. auringonlasku = u »» + auringonlasku
itse.kuukauden vaihe = u »» + kuun vaihe
self.moon_icon = u »» + moon_icon
self.bar_read = u »» + bar_read
self.bar_desc = u »» + bar_desc

luokka WeatherText:

ehdot_teksti = {
«0»: _ (u »Tornado»),
«1»: _ (u »Trooppinen myrsky»),
«2»: _ (u »hurrikaani»),
«3»: _ (u »Kovaa ukkosta»),
«4»: _ (u »Ukkosmyrskyjä»),
«5»: _ (u »Sade- ja lumisadetta»),
«6»: _ (u »Sekoitettu sade ja laivasto»),
«7»: _ (u »Sekoitetut sademäärät»),
«8»: _ (u »Jäätyvää tihkua»),
«9»: _ (u »tihkusade»),
«10»: _ (u »Pakkasesade»),
«11»: _ (u »Suihkut»),
«12»: _ (u »Suihkut»),
«13»: _ (u »Lumisadetta»),
«14»: _ (u »Lumisadetta»),
«15»: _ (u »puhaltaa lunta»),
«16»: _ (u »Lumi»),
«17»: _ (u »Hail»),
«18»: _ (u »laivasto»),
«19»: _ (u »Pöly»),
«20»: _ (u »Sumu»),
«21»: _ (u »Haze»),
«22»: _ (u »savu»),
«23»: _ (u »Blustery»),
«24»: _ (u »Tuulinen»),
«25»: _ (u »kylmä»),
«26»: _ (u »Pilvistä»),
«27»: _ (u »Enimmäkseen pilvistä»),
«28»: _ (u »Enimmäkseen pilvistä»),
«29»: _ (u »Osittain pilvistä»),
«30»: _ (u »Osittain pilvistä»),
«31»: _ (u »Tyhjennä»),
«32»: _ (u »Tyhjennä»),
«33»: _ (u »Messut»),
«34»: _ (u »Messut»),
«35»: _ (u »Sadetta ja rakeita sekoitettuna»),
«36»: _ (u »kuuma»),
«37»: _ (u »Yksittäisiä ukkosmyrskyjä»),
«38»: _ (u »Hajanaisia ​​ukkosmyrskyjä»),
«39»: _ (u »Hajanaisia ​​ukkosmyrskyjä»),
«40»: _ (u »Sadekuuroja»),
«41»: _ (u »raskas lumi»),
«42»: _ (u »Lumisadetta»),
«43»: _ (u »raskas lumi»),
«44»: _ (u »Osittain pilvistä»),
«45»: _ (u »Ukkosmyrskyjä»),
«46»: _ (u »Lumisadetta»),
«47»: _ (u »Yksittäisiä ukkosmyrskyjä»),
«Na»: _ (u »N / A»),
"-": _ (a ")
}

ehdot_teksti_es = {
«0»: _ (u »Tornado»),
«1»: _ (u »Trooppinen myrsky»),
«2»: _ (u »Huracá¡n»),
«3»: _ (u »Voimakkaat myrskyt»),
«4»: _ (u »Myrskyt»),
«5»: _ (u »Sade- ja lumisadetta»),
«6»: _ (u »Sekoitettu sade ja laivasto»),
«7»: _ (u »Laivasto»),
«8»: _ (u »Jäätyvää tihkua»),
«9»: _ (u »tihkusade»),
«10»: _ (u »Pakkasesade»), # tai jäädyttävä sade
«11»: _ (u »Sadekuuroja»),
«12»: _ (u »Sadekuuroja»),
«13»: _ (u »Kevyt lumi»),
«14»: _ (u »Kevyt lumi»),
«15»: _ (u »Lumimyrsky»),
«16»: _ (u »Lumi»),
«17»: _ (u »Hail»),
«18»: _ (u »Laivasto»),
«19»: _ (u »jauhe»),
«20»: _ (u »Sumu»),
«21»: _ (u »Haze»),
«22»: _ (u »savu»),
«23»: _ (u »Tempest»),
«24»: _ (u »Tuulinen»),
«25»: _ (u »Fráo»),
«26»: _ (u »Erittäin pilvistä»),
«27»: _ (u »Enimmäkseen pilvistä»),
«28»: _ (u »Enimmäkseen pilvistä»),
«29»: _ (u »Osittain pilvistä»),
«30»: _ (u »Osittain pilvistä»),
«31»: _ (u »Tyhjennä»),
«32»: _ (u »Tyhjennä»),
«33»: _ (u »Pilvistä»),
«34»: _ (u »Pilvistä»),
«35»: _ (u »Sadetta ja rakeita»),
«36»: _ (u »Lämpö»),
«37»: _ (u »Yksittäiset myrskyt»),
«38»: _ (u »Hajanaisia ​​myrskyjä»),
«39»: _ (u »Hajanaisia ​​myrskyjä»),
«40»: _ (u »Sadekuuroja»),
«41»: _ (u »raskas lumi»),
«42»: _ (u »Heikkoja ja hajanaisia ​​lumisateita»),
«43»: _ (u »Voimakas Nevada»),
«44»: _ (u »Hajanaisia ​​pilviä»),
«45»: _ (u »Myrskyt»),
«46»: _ (u »Hajanaisia ​​lumisateita»),
«47»: _ (u »Yksittäiset myrskyt»),
«Na»: _ (u »N / A»),
"-": _ (a ")
}

ehdot_teksti_fr = {
«0»: _ (u »Tornade»),
«1»: _ (u »Tempête Tropicale»),
«2»: _ (tai »Ouragan»),
«3»: _ (tai »järjestää väkivaltaa»),
«4»: _ (tai »Orageux»),
«5»: _ (u »Pluie et Neige»),
«6»: _ (u »Pluie et Neige Mouillée»),
«7»: _ (u »Muuttuva keskiarvo»),
«8»: _ (u »Bruine Givrante»),
«9»: _ (u »Bruine»),
«10»: _ (u »Pluie Glacante»),
«11»: _ (u »Averses»),
«12»: _ (u »Averses»),
«13»: _ (u »Légère Neige»),
«14»: _ (u »Forte Neige»),
«15»: _ (u »Tempête de Neige»),
«16»: _ (u »Neige»),
«17»: _ (u »Grêle»),
«18»: _ (u »Pluie / Neige»),
«19»: _ (u »Nuage de poussière»),
«20»: _ (u »Brouillard»),
«21»: _ (u »Brume»),
«22»: _ (u »Fumée»),
«23»: _ (u »Tres Venteux»),
«24»: _ (u »Venteux»),
«25»: _ (u »Froid»),
«26»: _ (u »Nuageux»),
«27»: _ (u »Tres Nuageux»),
«28»: _ (u »Tres Nuageux»),
«29»: _ (u »Nuages ​​Disséminés»),
«30»: _ (u »Nuages ​​Disséminés»),
«31»: _ (u »Beau»),
«32»: _ (u »Beau»),
«33»: _ (u »Belles Éclaircies»),
«34»: _ (u »Belles Éclaircies»),
«35»: _ (u »Pluie avec Grêle»),
«36»: _ (u »Chaleur»),
«37»: _ (tai »Orages Isolés»),
«38»: _ (tai »Orages Localisés»),
«39»: _ (tai »Orages Localisés»),
«40»: _ (u »Averses Localisées»),
«41»: _ (u »Neige Lourde»),
«42»: _ (u »Tempête de Neige Localisées»),
«43»: _ (u »Neige Lourde»),
«44»: _ (u »Nuages ​​Disséminés»),
«45»: _ (tai »Orages»),
«46»: _ (u »Tempête de Neige»),
«47»: _ (tai »Orages Isolés»),
«Na»: _ (u »N / A»),
"-": _ (a ")
}

ehdot_sää_fontti = {
«0»: _ (u »W»),
«1»: _ (u »V»),
«2»: _ (u »W»),
«3»: _ (u »s»),
«4»: _ (u »p»),
«5»: _ (u »k»),
«6»: _ (u »k»),
«7»: _ (u »g»),
«8»: _ (u »g»),
«9»: _ (u »g»),
«10»: _ (u »h»),
«11»: _ (u »g»),
«12»: _ (u »g»),
«13»: _ (u »k»),
«14»: _ (u »k»),
«15»: _ (u »k»),
«16»: _ (u »k»),
«17»: _ (u »k»),
«18»: _ (u »k»),
«19»: _ (u »e»),
«20»: _ (u »e»),
«21»: _ (u »a»),
«22»: _ (u »d»),
«23»: _ (u »d»),
«24»: _ (u »d»),
«25»: _ (u »d»),
«26»: _ (u »e»),
«27»: _ (u »e»),
«28»: _ (u »e»),
«29»: _ (u »c»),
«30»: _ (u »c»),
«31»: _ (u »a»),
«32»: _ (u »a»),
«33»: _ (u »b»),
«34»: _ (u »b»),
«35»: _ (u »k»),
«36»: _ (u »a»),
«37»: _ (u »f»),
«38»: _ (u »f»),
«39»: _ (u »f»),
«40»: _ (u »g»),
«41»: _ (u »k»),
«42»: _ (u »k»),
«43»: _ (u »k»),
«44»: _ (u »b»),
«45»: _ (u »g»),
«46»: _ (u »k»),
«47»: _ (u »f»),
«Na»: _ (u »»),
"-": _ (tai "")
}

ehdot_kuukauden_fontti = {
«0»: _ (u »1 ″),
«1»: _ (u »N»),
«2»: _ (u »O»),
«3»: _ (u »P»),
«4»: _ (u »Q»),
«5»: _ (u »R»),
«6»: _ (u »S»),
«7»: _ (u »T»),
«8»: _ (u »U»),
«9»: _ (u »V»),
«10»: _ (u »W»),
«11»: _ (u »X»),
«12»: _ (u »Y»),
«13»: _ (u »Z»),
«14»: _ (u »0 ″),
«15»: _ (u »0 ″),
«16»: _ (u »A»),
«17»: _ (u »B»),
«18»: _ (u »C»),
«19»: _ (u »D»),
«20»: _ (u »E»),
«21»: _ (u »F»),
«22»: _ (u »G»),
«23»: _ (u »H»),
«24»: _ (u »I»),
«25»: _ (u »J»),
«26»: _ (u »K»),
«27»: _ (u »L»),
«28»: _ (u »M»),
«29»: _ (u »1 ″),
«Na»: _ (u »»),
"-": _ (tai "")
}

viikon_päivä = {
"Tänään": _ (tai "Tänään"),
«Maanantai»: _ (u »maanantai»),
«Tiistai»: _ (u »tiistai»),
«Keskiviikko»: _ (u »keskiviikko»),
«Torstai»: _ (u »torstai»),
"Perjantai": _ (u "perjantai"),
"Lauantai": _ (u "lauantai"),
"Sunnuntai": _ (u "Sunnuntai")
}

day_of_week_short = {
"Tänään": _ (u "Nyt"),
«Maanantai»: _ (u »ma»),
«Tiistai»: _ (u »ti»),
«Keskiviikko»: _ (u »ke»),
«Torstai»: _ (u »to»),
«Perjantai»: _ (u »pe»),
"Lauantai": _ (u "la"),
"Sunnuntai": _ (u "Aurinko")
}

viikon_viikonpäivä = {
"Tänään": _ (u "tänään"),
«Maanantai»: _ (u »maanantai»),
«Tiistai»: _ (tai »tiistai»),
«Keskiviikko»: _ (u »keskiviikko»),
«Torstai»: _ (u »torstai»),
«Perjantai»: _ (u »perjantai»),
"Lauantai": _ (u "lauantai"),
"Sunnuntai": _ (u "Sunnuntai")
}

day_of_week_short_fi = {
"Tänään": _ (u "tänään"),
"Maanantai": _ (u "ma"),
«Tiistai»: _ (u »meri»),
«Keskiviikko»: _ (u »ke»),
«Torstai»: _ (u »torstai),
«Perjantai»: _ (u »pe»),
"Lauantai": _ (u "sat"),
"Sunnuntai": _ (u "dom")
}

viikon_viikon_päivä = {
«Tänään»: _ (u »Aujourd'hui»),
«Maanantai»: _ (u »Lundi»),
«Tiistai»: _ (u »Mardi»),
«Keskiviikko»: _ (u »Mercredi»),
«Torstai»: _ (u »Jeudi»),
«Perjantai»: _ (u »Vendredi»),
"Lauantai": _ (u "Samedi"),
"Sunnuntai": _ (u "Dimanche")
}

day_of_week_short_fr = {
«Tänään»: _ (u »Auj»),
"Maanantai": _ (u "ma"),
«Tiistai»: _ (u »maalis»),
"Keskiviikko": _ (u "mer"),
«Torstai»: _ (u »Jeu»),
«Perjantai»: _ (u »Tule»),
"Lauantai": _ (u "Sam"),
"Sunnuntai": _ (u "Hämärä")
}

laakerin_nuoli_font = {
«N»: _ (u »i»),
«EI UUTTA»: _ (u »j»),
«NE»: _ (u »k»),
«ENE»: _ (u »l»),
«E»: _ (u »m»),
«ESE»: _ (u »n»),
"SE": _ (u "o"),
«SSE»: _ (u »p»),
«S»: _ (u »a»),
«SSW»: _ (u »b»),
«SW»: _ (u »c»),
"WSW": _ (u "d"),
«W»: _ (u »e»),
"WNW": _ (u "f"),
«NW»: _ (u »g»),
«NNW»: _ (u »h»),
«N / A»: _ (u »«)
}

suuntima_teksti_es = {
«N»: _ (u »N»),
«NNE»: _ (u »NNE»),
«NE»: _ (u »NE»),
«ENE»: _ (u »ENE»),
«E»: _ (u »E»),
«ESE»: _ (u »ESE»),
«SE»: _ (u »SE»),
"SSE": _ (u "SSE"),
"Heidän"),
"SSW": _ (u "SSO"),
«SW»: _ (u »SO»),
"WSW": _ (u "WOW"),
«W»: _ (u »O»),
«WNW»: _ (u »ONO»),
«NW»: _ (u »EI»),
«NNW»: _ (u »NNO»),
«N / A»: _ (u »N \ A»)
}

suuntima_teksti_fr = {
«N»: _ (u »N»),
«NNE»: _ (u »NNE»),
«NE»: _ (u »NE»),
«ENE»: _ (u »ENE»),
«E»: _ (u »E»),
«ESE»: _ (u »ESE»),
«SE»: _ (u »SE»),
"SSE": _ (u "SSE"),
"Heidän"),
"SSW": _ (u "SSO"),
«SW»: _ (u »SO»),
"WSW": _ (u "WOW"),
«W»: _ (u »O»),
«WNW»: _ (u »ONO»),
«NW»: _ (u »EI»),
«NNW»: _ (u »NNO»),
«N / A»: _ (u »N \ A»)
}

luokka GlobalWeather:

nykyiset ehdot = []
päiväennuste = []
yöennuste = []

locale = "sisään"

Vaihtoehdot = Ei mitään
weatherxmldoc = ""

TEMP_FILEPATH_CURRENT = "/tmp/conkyForecast-c-LOCATION.pkl"
TEMP_FILEPATH_DAYFORECAST = "/tmp/conkyForecast-df-LOCATION.pkl"
TEMP_FILEPATH_NIGHTFORECAST = "/tmp/conkyForecast-nf-LOCATION.pkl"
EXPIRY_MINUTES = 30
DEFAULT_SPACING = u »«

def __init __ (itse, vaihtoehdot):

self.options = vaihtoehdot

jos self.options.locale == Ei mitään:
yrittää:
# self.locale = locale.getdefaultlocale () [0] [0: 2]
self.locale = «es» # poista tämä rivi pakottaaksesi espanjan kielen
# self.locale = "fr" # merkitse tämä rivi pakottaaksesi ranskan kielen
paitsi:
tulosta "aluetta ei ole asetettu"
else:
# self.locale = itse.options.locale
self.locale = «es» # poista tämä rivi pakottaaksesi espanjan kielen
# self.locale = "fr" # merkitse tämä rivi pakottaaksesi ranskan kielen

jos self.options.verbose == Tosi:
tulosta >> sys.stdout, "locale asetettu", self.locale

def getText (itse, solmuja):
rc = ""
solmulle solmujen luettelossa:
jos solmu.solmuTyyppi == solmu.TEXT_NODE:
rc = rc + solmu. tiedot
paluu rc

def getSpaces (itse, välilyönnit):
merkkijono = u »»
jos välilyönnit == Ei mitään:
merkkijono = itse. DEFAULT_SPACING
else:
i: lle alueella (0, välilyönti + 1):
merkkijono = merkkijono + u »«
palautusmerkkijono

def isNumeric (itse, merkkijono):
yrittää:
nukke = kelluva (merkkijono)
palaa True
paitsi:
palauta False

def isConnectionAvailable (itse):
# varmista, että voimme käyttää weather.com-palvelinta avaamalla URL-osoitteen
yrittää:
Usock = urllib2.urlopen ('http://xoap.weather.com')
Usock.close ()
palaa True
paitsi:
palauta False

def getBearingText (itse, laakeri):
laakeri = kelluva (laakeri)
jos laakeri <11.25:
paluu u »N»
elif-laakeri <33.75:
palaa u »EET»
elif-laakeri <56.25:
paluu u »NE»
elif-laakeri <78.75:
palaa u »JAN»
elif-laakeri <101.25:
palaa u »E»
elif-laakeri <123.75:
palaa u »ESE»
elif-laakeri <146.25:
palaa u »SE»
elif-laakeri <168.75:
palaa u »SSE»
elif-laakeri <191.25:
palaa u »S»
elif-laakeri <213.75:
palaa u »SSW»
elif-laakeri <236.25:
palaa u »SW»
elif-laakeri <258.75:
palaa u »WSW»
elif-laakeri <281.25:
paluu u »W»
elif-laakeri <303.75:
paluu u »lounaaseen»
elif-laakeri <326.25:
paluu u »NW»
elif-laakeri <348.75:
paluu u »UUSI»
else:
paluu «N / A»

def convertCelsiusToFahrenheit (itse, lämpötila):
paluu str (int (lattia (((kelluva (lämpötila) * 9.0) /5.0) +32)))

def convertKilometresToMiles (itse, dist):
paluu str (int (lattia (kelluva (dist) * 0.621371192)))

def convertMillibarsToInches (itse, MB):
paluu str (int (lattia (kelluva (MB) /33.8582)))

def getTemplateList (itse, malli):

mallilista = []

mallin_osa mallille.split («{«):
if template_part! = «»:
mallin_osa mallille_osa.split ("}"):
if template_part! = «»:
templatelist.append (u »» + malli_osa)

palaa templatelist

def getOutputText (itse, tietotyyppi, alkamispäivä, loppupäivä, yö, lyhyt viikonpäivä, keisarillinen, piiloyksiköt, välilyönnit):
#yrittää:
lähtö = u »»

# määritä ulostulon nykyiset yksiköt
jos piiloyksiköt == Väärä:
jos imperial == Väärä:
tempunit = u »° C»
nopeusyksikkö = u »kph»
paineyksikkö = u »mb»
else:
tempunit = u »° F»
nopeusyksikkö = u »mph»
paineyksikkö = u »sisään»
else:
tempunit = u »°»
nopeusyksikkö = u »»
paineyksikkö = u »»

jos alkamispäivä == Ei mitään: # nykyiset ehdot

jos tietotyyppi == "DW":
jos self.locale == "on":
jos lyhytviikko == Tosi:
output = WeatherText.day_of_week_short_es [self.current_conditions [0] .day_of_week]
else:
lähtö = WeatherText.day_of_week_es [self.current_conditions [0] .day_of_week]
elif self.locale == "fr":
jos lyhytviikko == Tosi:
output = WeatherText.day_of_week_short_fr [self.current_conditions [0] .day_of_week]
else:
output = WeatherText.day_of_week_fr [self.current_conditions [0] .day_of_week]
else:
jos lyhytviikko == Tosi:
output = WeatherText.day_of_week_short [itse.virran_olosuhteet [0] .päivä_viikon]
else:
tuotos = WeatherText.day_of_week [self.current_conditions [0] .day_of_week]
elif-tietotyyppi == "WF": # sääfontti
lähtö = WeatherText.conditions_weather_font [self.current_conditions [0] .condition_code]
elif-tietotyyppi == "LT":
merkkijono = itse.virran_edellytykset [0] .hidas
jos self.isNumeric (merkkijono) == True:
jos keisarillinen == Tosi:
merkkijono = self.convertCelsiusToFahrenheit (merkkijono)
merkkijono = merkkijono + tempunit
output = merkkijono
elif-tietotyyppi == "HT":
merkkijono = itse.virran_edellytykset [0] .korkea
jos self.isNumeric (merkkijono) == True:
jos keisarillinen == Tosi:
merkkijono = self.convertCelsiusToFahrenheit (merkkijono)
merkkijono = merkkijono + tempunit
output = merkkijono
elif-tietotyyppi == "CC":
jos self.locale == "on":
lähtö = WeatherText.conditions_text_es [self.current_conditions [0] .condition_code]
elif self.locale == "fr":
lähtö = WeatherText.conditions_text_fr [self.current_conditions [0] .condition_code]
else:
lähtö = WeatherText.conditions_text [self.current_conditions [0] .condition_code]
elif-tietotyyppi == "CT":
lähtö = itse.virran_edellytykset [0] .ehto_teksti
elif-tietotyyppi == "PC":
merkkijono = itse.virran_edellytykset [0] .ennuste
jos self.isNumeric (merkkijono) == True:
merkkijono = merkkijono + u »%»
output = merkkijono
elif-tietotyyppi == "HM":
merkkijono = itse.virran_edellytykset [0] .kosteus
jos self.isNumeric (merkkijono) == True:
merkkijono = merkkijono + u »%»
output = merkkijono
elif-tietotyyppi == "WD":
merkkijono = itse.virran_edellytykset [0] .tuulen_hakemisto
jos self.isNumeric (merkkijono) == True:
merkkijono = self.getBearingText (merkkijono)

jos self.locale == "on":
output = WeatherText.bearing_text_es [merkkijono]
elif self.locale == "fr":
output = WeatherText.bearing_text_fr [merkkijono]
else:
output = merkkijono

elif-tietotyyppi == "BF":
merkkijono = itse.virran_edellytykset [0] .tuulen_hakemisto
jos self.isNumeric (merkkijono) == True:
merkkijono = WeatherText.bearing_arrow_font [self.getBearingText (merkkijono)]
output = merkkijono
elif-tietotyyppi == "WS":
merkkijono = itse.virran_edellytykset [0] .tuulin_nopeus
jos self.isNumeric (merkkijono) == True:
jos keisarillinen == Tosi:
merkkijono = self.convertKilometresToMiles (merkkijono)
merkkijono = merkkijono + nopeusyksikkö
output = merkkijono
elif-tietotyyppi == "WG":
merkkijono = itse.virran_edellytykset [0] .tuuli_hämärät
jos self.isNumeric (merkkijono) == True:
jos keisarillinen == Tosi:
merkkijono = self.convertKilometresToMiles (merkkijono)
merkkijono = merkkijono + nopeusyksikkö
output = merkkijono
elif-tietotyyppi == "CN":
lähtö = itse.virran_edellytykset [0] .kaupunki
elif-tietotyyppi == "SR":
lähtö = itse.virran_edellytykset [0]. auringonnousu
elif-tietotyyppi == "SS":
lähtö = itse.virran_edellytykset [0]. auringonlasku
elif-tietotyyppi == "MP":
lähtö = itse.virran_edellytykset [0] .kuukauden vaihe
elif-tietotyyppi == "MF":
lähtö = WeatherText.conditions_moon_font [self.current_conditions [0] .moon_icon]
elif-tietotyyppi == "BR":
merkkijono = itse.virran_edellytykset [0] .palkin_luku
jos self.isNumeric (merkkijono) == True:
jos keisarillinen == Tosi:
merkkijono = self.convertMillibarsToInches (merkkijono)
merkkijono = merkkijono + painoyksikkö
output = merkkijono
elif-tietotyyppi == "BD":
lähtö = itse.virran_edellytykset [0]. palkki_desc
else:
output = "\ nVIRHE: Tuntematon tietotyyppi pyydetty"

else: # ennustetiedot

if endday == Ei mitään: # jos loppupäivää ei ole asetettu, käytä aloituspäivää
loppupäivä = alkamispäivä

jos yö == Tosi: # yön ennuste vaaditaan

päivän_numerolle alueella (alkamispäivä, loppupäivä + 1):

jos tietotyyppi == "DW":
jos self.locale == "on":
jos lyhytviikko == Tosi:
output = output + self.getSpaces (välilyönnit) + WeatherText.day_of_week_short_es [self.night_forecast [day_number] .day_of_week]
else:
output = output + self.getSpaces (välilyönnit) + WeatherText.day_of_week_es [self.night_forecast [day_number] .day_of_week]
elif self.locale == "fr":
jos lyhytviikko == Tosi:
output = output + self.getSpaces (välilyönnit) + WeatherText.day_of_week_short_fr [self.night_forecast [day_number] .day_of_week]
else:
output = output + self.getSpaces (välilyönnit) + WeatherText.day_of_week_fr [self.night_forecast [day_number] .day_of_week]
else:
jos lyhytviikko == Tosi:
output = output + self.getSpaces (välilyönnit) + WeatherText.day_of_week_short [self.night_forecast [day_number] .day_of_week]
else:
output = output + self.getSpaces (välilyönnit) + WeatherText.day_of_week [self.night_forecast [day_number] .day_of_week]
elif-tietotyyppi == "WF": # sääfontti
output = output + self.getSpaces (välilyönnit) + WeatherText.conditions_weather_font [self.night_forecast [day_number] .condition_code]
elif-tietotyyppi == "LT":
merkkijono = itse.yön ennuste [päivä_numero]. matala
jos self.isNumeric (merkkijono) == True:
jos keisarillinen == Tosi:
merkkijono = self.convertCelsiusToFahrenheit (merkkijono)
merkkijono = merkkijono + tempunit
output = output + self.getSpaces (välilyönnit) + merkkijono

elif-tietotyyppi == "HT":
merkkijono = itse.yön ennuste [päivä_numero]. korkea
jos self.isNumeric (merkkijono) == True:
jos keisarillinen == Tosi:
merkkijono = self.convertCelsiusToFahrenheit (merkkijono)
merkkijono = merkkijono + tempunit
output = output + self.getSpaces (välilyönnit) + merkkijono
elif-tietotyyppi == "CC":
jos self.locale == "on":
output = output + self.getSpaces (välilyönnit) + WeatherText.conditions_text_es [self.night_forecast [day_number]. condition_code]
elif self.locale == "fr":
output = output + self.getSpaces (välilyönnit) + WeatherText.conditions_text_fr [self.night_forecast [day_number]. condition_code]
else:
output = output + self.getSpaces (välilyönnit) + WeatherText.conditions_text [self.night_forecast [day_number]. condition_code]
elif-tietotyyppi == "CT":
output = output + self.getSpaces (välilyönnit) + self.night_forecast [day_number]. condition_text
elif-tietotyyppi == "PC":
merkkijono = itse.yö_ennuste [päivä_numero] .precip
jos self.isNumeric (merkkijono) == True:
merkkijono = merkkijono + u »%»
output = output + self.getSpaces (välilyönnit) + merkkijono
elif-tietotyyppi == "HM":
merkkijono = itse.yön ennuste [päivä_numero]. kosteus
jos self.isNumeric (merkkijono) == True:
merkkijono = merkkijono + u »%»
output = output + self.getSpaces (välilyönnit) + merkkijono
elif-tietotyyppi == "WD":
merkkijono = itse.yö_ennuste [päivä_numero] .tuuli_hakemisto
jos self.locale == "on":
output = output + self.getSpaces (välilyönnit) + WeatherText.bearing_text_es [merkkijono]
elif self.locale == "fr":
output = output + self.getSpaces (välilyönnit) + WeatherText.bearing_text_fr [merkkijono]
else:
output = output + self.getSpaces (välilyönnit) + merkkijono

elif-tietotyyppi == "BF":
output = output + self.getSpaces (välilyönnit) + WeatherText.bearing_arrow_font [self.night_forecast [day_number] .wind_dir]
elif-tietotyyppi == "WS":
merkkijono = oma.yönennuste [päivä_numero] .tuulin_nopeus
jos self.isNumeric (merkkijono) == True:
jos keisarillinen == Tosi:
merkkijono = self.convertKilometresToMiles (merkkijono)
merkkijono = merkkijono + nopeusyksikkö
output = output + self.getSpaces (välilyönnit) + merkkijono
elif-tietotyyppi == "WG":
merkkijono = oma.yönennuste [päivä_numero] .tuulen_hämärät
jos self.isNumeric (merkkijono) == True:
jos keisarillinen == Tosi:
merkkijono = self.convertKilometresToMiles (merkkijono)
merkkijono = merkkijono + nopeusyksikkö
output = output + self.getSpaces (välilyönnit) + merkkijono
elif-tietotyyppi == "CN":
output = output + self.getSpaces (välilyönnit) + self.night_forecast [päivä_numero] .city
elif-tietotyyppi == "SR":
output = output + self.getSpaces (välilyönnit) + self.night_forecast [day_number]. auringonnousu
elif-tietotyyppi == "SS":
output = output + self.getSpaces (välilyönnit) + self.night_forecast [day_number]. auringonlasku
elif-tietotyyppi == "MP":
output = output + self.getSpaces (välilyönnit) + self.night_forecast [päivä_numero] .moon_phase
elif-tietotyyppi == "MF":
output = output + self.getSpaces (välilyönnit) + WeatherText.conditions_moon_font [self.night_forecast [day_number] .moon_icon]
elif-tietotyyppi == "BR":
output = output + self.getSpaces (välilyönnit) + self.night_forecast [day_number]. bar_read
elif-tietotyyppi == "BD":
output = output + self.getSpaces (välilyönnit) + self.night_forecast [day_number]. bar_desc
else:
output = "\ nVIRHE: Tuntematon tietotyyppi pyydetty"
rikkoa

else: # päivän ennuste halutaan

päivän_numerolle alueella (alkamispäivä, loppupäivä + 1):

jos tietotyyppi == "DW":
jos self.locale == "on":
jos lyhytviikko == Tosi:
output = output + self.getSpaces (välilyönnit) + WeatherText.day_of_week_short_es [self.day_forecast [day_number] .day_of_week]
else:
output = output + self.getSpaces (välilyönnit) + WeatherText.day_of_week_es [self.day_forecast [day_number] .day_of_week]
elif self.locale == "fr":
jos lyhytviikko == Tosi:
output = output + self.getSpaces (välilyönnit) + WeatherText.day_of_week_short_fr [self.day_forecast [day_number] .day_of_week]
else:
output = output + self.getSpaces (välilyönnit) + WeatherText.day_of_week_fr [self.day_forecast [day_number] .day_of_week]
else:
jos lyhytviikko == Tosi:
output = output + self.getSpaces (välilyönnit) + WeatherText.day_of_week_short [self.day_forecast [day_number] .day_of_week]
else:
output = output + self.getSpaces (välilyönnit) + WeatherText.day_of_week [self.day_forecast [day_number] .day_of_week]
elif-tietotyyppi == "WF": # sääfontti
output = output + self.getSpaces (välilyönnit) + WeatherText.conditions_weather_font [self.day_forecast [day_number] .condition_code]
elif-tietotyyppi == "LT":
merkkijono = itsepäiväpäiväennuste [päivä_numero] .hidas
jos self.isNumeric (merkkijono) == True:
jos keisarillinen == Tosi:
merkkijono = self.convertCelsiusToFahrenheit (merkkijono)
merkkijono = merkkijono + tempunit
output = output + self.getSpaces (välilyönnit) + merkkijono
elif-tietotyyppi == "HT":
merkkijono = itsepäivän ennuste [päivä_numero]. korkea
jos self.isNumeric (merkkijono) == True:
jos keisarillinen == Tosi:
merkkijono = self.convertCelsiusToFahrenheit (merkkijono)
merkkijono = merkkijono + tempunit
output = output + self.getSpaces (välilyönnit) + merkkijono
elif-tietotyyppi == "CC":
jos self.locale == "on":
output = output + self.getSpaces (välilyönnit) + WeatherText.conditions_text_es [self.day_forecast [day_number]. condition_code]
elif self.locale == "fr":
output = output + self.getSpaces (välilyönnit) + WeatherText.conditions_text_fr [self.day_forecast [day_number]. condition_code]
else:
output = output + self.getSpaces (välilyönnit) + WeatherText.conditions_text [self.day_forecast [day_number]. condition_code]
elif-tietotyyppi == "CT":
output = output + self.getSpaces (välilyönnit) + self.day_forecast [day_number]. condition_text
elif-tietotyyppi == "PC":
merkkijono = itsepäivän_ennuste [päivä_numero] .precip
jos self.isNumeric (merkkijono) == True:
merkkijono = merkkijono + u »%»
output = output + self.getSpaces (välilyönnit) + merkkijono
elif-tietotyyppi == "HM":
merkkijono = itsepäivän ennuste [päivä_numero]. kosteus
jos self.isNumeric (merkkijono) == True:
merkkijono = merkkijono + u »%»
output = output + self.getSpaces (välilyönnit) + merkkijono
elif-tietotyyppi == "WD":
merkkijono = itsepäiväpäiväennuste [päivä_numero] .tuulen_hakemisto

jos self.locale == "on":
output = output + self.getSpaces (välilyönnit) + WeatherText.bearing_text_es [merkkijono]
elif self.locale == "fr":
output = output + self.getSpaces (välilyönnit) + WeatherText.bearing_text_fr [merkkijono]
else:
output = output + self.getSpaces (välilyönnit) + merkkijono

elif-tietotyyppi == "BF":
output = output + self.getSpaces (välilyönnit) + WeatherText.bearing_arrow_font [self.day_forecast [day_number] .wind_dir]
elif-tietotyyppi == "WS":
merkkijono = itse.päivä_ennuste [päivä_numero]. tuulen nopeus
jos self.isNumeric (merkkijono) == True:
jos keisarillinen == Tosi:
merkkijono = self.convertKilometresToMiles (merkkijono)
merkkijono = merkkijono + nopeusyksikkö
output = output + self.getSpaces (välilyönnit) + merkkijono
elif-tietotyyppi == "WG":
merkkijono = itse.päivä_ennuste [päivä_numero] .tuuli_joukkoja
jos self.isNumeric (merkkijono) == True:
jos keisarillinen == Tosi:
merkkijono = self.convertKilometresToMiles (merkkijono)
merkkijono = merkkijono + nopeusyksikkö
output = output + self.getSpaces (välilyönnit) + merkkijono
elif-tietotyyppi == "CN":
output = output + self.getSpaces (välilyönnit) + self.day_forecast [day_number]. kaupunki
elif-tietotyyppi == "SR":
output = output + self.getSpaces (välilyönnit) + self.day_forecast [day_number]. auringonnousu
elif-tietotyyppi == "SS":
output = output + self.getSpaces (välilyönnit) + self.day_forecast [day_number]. auringonlasku
elif-tietotyyppi == "MP":
output = output + self.getSpaces (välilyönnit) + self.day_forecast [päivä_numero] .moon_phase
elif-tietotyyppi == "MF":
output = output + self.getSpaces (välilyönnit) + WeatherText.conditions_moon_font [self.day_forecast [day_number] .moon_icon]
elif-tietotyyppi == "BR":
output = output + self.getSpaces (välilyönnit) + self.day_forecast [day_number]. bar_read
elif-tietotyyppi == "BD":
output = output + self.getSpaces (välilyönnit) + self.day_forecast [day_number]. bar_desc
else:
output = u »\ nVIRHE: Tuntematon tietotyyppi pyydetty»
rikkoa

output = u »» + output.strip (u »«) # menettävät etu- / loppuosan
paluulähtö

#paitsi:
#print "getOutputText: Odottamaton virhe:", sys.exc_info () [0]

def getOutputTextFromTemplate (itse, malli):
#yrittää:

# avainta mallipohjan tiedoille
DATATYPE_KEY = "–datatype ="
STARTDAY_KEY = "–startday ="
ENDDAY_KEY = "–endday ="
NIGHT_KEY = "- yö"
SHORTWEEKDAY_KEY = "- lyhytviikkopäivä"
IMPERIAL_KEY = "-periaate"
HIDEUNITS_KEY = "–piiloyksiköt"
SPACES_KEY = "–spaces ="

lähtö = u »»

optionfound = väärä

#lata tiedosto
yrittää:
fileinput = avoin (self.options.template)
malli = fileinput.read ()
fileinput.close ()
paitsi:
output = u »Mallitiedostoa ei löydy!»

templatelist = self.getTemplateList (malli)

# antaa käydä läpi malliluettelon ja määrittää tuloksen jokaiselle löydetylle kohteelle
i: lle alueella (0, len (templatelist) -1):

pos = templatelist [i] .find (DATATYPE_KEY)
jos pos! = -1:
löydetty option = True
pos = pos + len (DATATYPE_KEY)
tietotyyppi = templatelist [i] [pos: pos + 4] .kaistale («}»). nauha («{«). nauha («-«). nauha (»«)
else:
tietotyyppi = Ei mitään

pos = templatelist [i] .find (STARTDAY_KEY)
jos pos! = -1:
löydetty option = True
pos = pos + len (STARTDAY_KEY)
aloituspäivä = int (templatelist [i] [pos: pos + 4] .strip ("}"). strip ("{"). strip ("-"). strip (""))
else:
alkamispäivä = Ei mitään

pos = templatelist [i] .find (ENDDAY_KEY)
jos pos! = -1:
löydetty option = True
pos = pos + len (ENDDAY_KEY)
loppupäivä = int (templatelist [i] [pos: pos + 4] .strip ("}"). strip ("{"). strip ("-"). strip (""))
else:
loppupäivä = Ei mitään

pos = templatelist [i] .find (NIGHT_KEY)
jos pos! = -1:
löydetty option = True
yö = totta
else:
yö = väärä

pos = templatelist [i] .find (SHORTWEEKDAY_KEY)
jos pos! = -1:
löydetty option = True
lyhytviikko = totta
else:
lyhytviikko = väärä

pos = templatelist [i] .find (IMPERIAL_KEY)
jos pos! = -1:
löydetty option = True
imperial = tosi
else:
imperial = väärä

pos = templatelist [i] .find (HIDEUNITS_KEY)
jos pos! = -1:
löydetty option = True
piiloyksiköt = Tosi
else:
piiloyksiköt = väärä

pos = templatelist [i] .find (SPACES_KEY)
jos pos! = -1:
löydetty option = True
pos = pos + len (SPACES_KEY)
välilyönnit = int (templatelist [i] [pos: pos + 4] .kaistale («}»). nauha («{«). nauha («-«). nauha (»«))
else:
välilyönnit = 1

jos optionfound == Tosi:
templatelist [i] = self.getOutputText (tietotyyppi, alkamispäivä, loppupäivä, yö, lyhyt viikonpäivä, imperial, piiloyksiköt, välilyönnit)
optionfound = väärä

# käy läpi luettelo, joka yhdistää tuloksen nyt, kun se on täytetty
templatelist-tuotteelle:
lähtö = tuotos + kohde

paluulähtö

#paitsi:
#print "getOutputTextFromTemplate: Odottamaton virhe:", sys.exc_info () [0]

def fetchData (itse):

# hae aina tietoja, käytä keskustelutoimintoja näissä tiedoissa
file_path_current = self.TEMP_FILEPATH_CURRENT.replace ("LOCATION", self.options.location)
file_path_dayforecast = self.TEMP_FILEPATH_DAYFORECAST.replace ("LOCATION", self.options.location)
file_path_nightforecast = self.TEMP_FILEPATH_NIGHTFORECAST.replace ("LOCATION", self.options.location)

if self.isConnectionAvailable () == Väärä:
jos os.path.exists on olemassa (file_path_current):
RefetchData = väärä
muuten: # ei yhteyttä, ei välimuistia, bang!
print "Internet-yhteyttä ei ole käytettävissä eikä välimuistissa olevia säätietoja ole."
elif self.options.refetch == Tosi:
RefetchData = Tosi
else:
# tarvitseeko tietoja hakea uudelleen?
jos os.path.exists on olemassa (file_path_current):
lastmodDate = time.localtime (os.stat (file_path_current) [ST_MTIME])
expiryDate = (päivämäärä.datetime.today () - datetime.timedelta (minuuttia = itse.LOPPU_MINUTIT)). timetuple ()

jos viimeinen voimassaolopäivä> lastmodDate:
RefetchData = Tosi
else:
RefetchData = väärä
else:
RefetchData = Tosi

# hae nykyisten olosuhteiden tiedot joko verkkosivustolta tai 'poimimalla'
jos RefetchData == Tosi:

# hanki nykyisten olosuhteiden tiedot xoap-palvelusta
yrittää:

# http://xoap.weather.com/weather/local/UKXX0103?cc=*&dayf=5&link=xoap∏=xoap&par=1061785028&key=e374effbfd74930b

url = 'http://xoap.weather.com/weather/local/' + self.options.location + '? cc = * & dayf = 8 & link = xoap∏ = xoap & par = 1061785028 & key = e374effbfd74930b & yksikkö = m '
jos self.options.verbose == Tosi:
tulosta >> sys.stdout, «haetaan säätietoja«, url

Usock = urllib2.urlopen (url)
xml = usock.read ()
Usock.close ()
self.weatherxmldoc = minidom.parseString (xml)
paitsi:
tulosta "fetchData: Odottamaton virhe:", sys.exc_info () [0]
tulosta "Säänlähteeseen ei saada yhteyttä tämänhetkisten olosuhteiden vuoksi"

# kerro käyttäjälle, jos sijainti on huono ...
found = xml.find ("Virheellinen sijainti annettu")
jos löytyy! = -1:
tulosta "Virheellinen sijainti annettu"

# kysy säätietoja, lataa luokan rakenteeseen ja peitä se
yrittää:

# valmistele säätietoluettelot
self.current_conditions = []
self.day_forecast = []
self.night_forecast = []

# kerää yleisiä tietoja
weather_n = self.weatherxmldoc.documentElement
location_n = weather_n.getElementsByTagName ('loc') [0]
city_n = sijainti_n.getElementsByTagName ('dnam') [0]
kaupunki = self.getText (city_n.childNodes)

# kerää nykyisten olosuhteiden tiedot
day_of_week = u »tänään»
sad = u »Ei sovellu»
sunrise_n = location_n.getElementsByTagName ('sunr') [0]
sunrise = self.getText (sunrise_n.childNodes)
sunset_n = location_n.getElementsByTagName ('aurinko') [0]
sunset = self.getText (sunset_n.childNodes)
current_condition_n = weather_n.getElementsByTagName ('cc') [0]
current_desc_n = current_condition_n.getElementsByTagName ('t') [0]
current_desc = self.getText (current_desc_n.childNodes)
current_code_n = current_condition_n.getElementsByTagName ('kuvake') [0]
current_code = self.getText (current_code_n.childNodes)
current_temp_n = current_condition_n.getElementsByTagName ('tmp') [0]
current_temp = self.getText (current_temp_n.childNodes)
current_temp_feels_n = current_condition_n.getElementsByTagName ('flik') [0]
current_temp_feels = self.getText (current_temp_feels_n.childNodes)
bar_n = current_condition_n.getElementsByTagName ('baari') [0]
bar_read_n = bar_n.getElementsByTagName ('r') [0]
bar_read = self.getText (bar_read_n.childNodes)
bar_desc_n = bar_n.getElementsByTagName ('d') [0]
bar_desc = self.getText (bar_desc_n.childNodes)
wind_n = current_condition_n.getElementsByTagName ('tuuli') [0]
wind_speed_n = wind_n.getElementsByTagName ('s') [0]
wind_speed = self.getText (tuulen_nopeus_n.childNodes)
wind_gust_n = wind_n.getElementsByTagName ('puuska') [0]
wind_gusts = self.getText (wind_gust_n.childNodes)
wind_dir_n = wind_n.getElementsByTagName ('d') [0]
wind_direction = self.getText (tuulen_dir_n.lapsen solmut)
kosteus_n = nykyinen_olosuhde_n.getElementsByTagName ('hmid') [0]
kosteus = self.getText (kosteuden_n.lapsen solmut)
moon_n = current_condition_n.getElementsByTagName ('kuu') [0]
moon_icon_n = moon_n.getElementsByTagName ('kuvake') [0]
moon_icon = self.getText (moon_icon_n.childNodes)
moon_phase_n = moon_n.getElementsByTagName ('t') [0]
moon_phase = self.getText (moon_phase_n.childNodes)
current_conditions_data = WeatherData (viikon_viikko, nykyinen_lämpötila, nykyinen_lämpötila, nykyinen_koodi, nykyinen_desc, sadekosteus, tuulen_suunta, tuulen nopeus, tuulen_joukot, kaupunki, auringonnousu, auringonlasku, kuun vaihe, kuun_kuvake, palkin_luku, bar_desc)
self.current_conditions.append (current_conditions_data)

# kerää ennustetietoja
bar_read = u »Ei sovellu»
bar_desc = u »Ei sovellu»
kuu_vaihe = u »Ei sovellu»
moon_icon = u »na»
ennuste_n = sää_n.getElementsByTagName ('dayf') [0]
day_nodes = ennuste_n.getElementsByTagName ('päivä')

päivä varten day_nodes:
day_of_week = day.getAttribute ('t')
day_of_year = day.getAttribute ('dt')
high_temp_n = day.getElementsByTagName ('hei') [0]
high_temp = self.getText (korkea_temp_n.childNodes)
low_temp_n = day.getElementsByTagName ('matala') [0]
low_temp = self.getText (low_temp_n.childNodes)

sunrise_n = day.getElementsByTagName ('sunr') [0]
sunrise = self.getText (sunrise_n.childNodes)
sunset_n = day.getElementsByTagName ('aurinko') [0]
sunset = self.getText (sunset_n.childNodes)

# päivän ennustekohtaiset tiedot
daytime_n = day.getElementsByTagName ('osa') [0] # päivä
condition_code_n = daytime_n.getElementsByTagName ('kuvake') [0]
condition_code = self.getText (condition_code_n.childNodes)
condition_n = daytime_n.getElementsByTagName ('t') [0]
ehto = self.getText (ehto_n.lapsen solmut)
rain_n = daytime_n.getElementsByTagName ('ppcp') [0]
sad = itse.getText (saden_n.lapsen solmut)
kosteus_n = päivällä_n.getElementsByTagName ('hmid') [0]
kosteus = self.getText (kosteuden_n.lapsen solmut)
wind_n = daytime_n.getElementsByTagName ('tuuli') [0]
wind_speed_n = wind_n.getElementsByTagName ('s') [0]
wind_speed = self.getText (tuulen_nopeus_n.childNodes)
wind_direction_n = wind_n.getElementsByTagName ('t') [0]
wind_direction = self.getText (tuulen_suunta_n.lapsen solmut)
wind_gusts_n = wind_n.getElementsByTagName ('puuska') [0]
wind_gusts = self.getText (wind_gusts_n.childNodes)
day_forecast_data = WeatherData (viikon_viikon, matalan lämpötilan, korkean lämpötilan, kunnon_koodi, kunto, sadetila, kosteus, tuulen suunta, tuulen nopeus, tuulen_joukot, kaupunki, auringonnousu, auringonlasku, kuun vaihe, kuun_kuvake, palkinluku, bar_desc)
self.day_forecast.append (day_forecast_data)

# yön ennusteita koskevat tiedot
daytime_n = day.getElementsByTagName ('osa') [1] # yö
condition_code_n = daytime_n.getElementsByTagName ('kuvake') [0]
condition_code = self.getText (condition_code_n.childNodes)
condition_n = daytime_n.getElementsByTagName ('t') [0]
ehto = self.getText (ehto_n.lapsen solmut)
rain_n = daytime_n.getElementsByTagName ('ppcp') [0]
sad = itse.getText (saden_n.lapsen solmut)
kosteus_n = päivällä_n.getElementsByTagName ('hmid') [0]
kosteus = self.getText (kosteuden_n.lapsen solmut)
wind_n = daytime_n.getElementsByTagName ('tuuli') [0]
wind_speed_n = wind_n.getElementsByTagName ('s') [0]
wind_speed = self.getText (tuulen_nopeus_n.childNodes)
wind_direction_n = wind_n.getElementsByTagName ('t') [0]
wind_direction = self.getText (tuulen_suunta_n.lapsen solmut)
wind_gusts_n = wind_n.getElementsByTagName ('puuska') [0]
wind_gusts = self.getText (wind_gusts_n.childNodes)
night_forecast_data = WeatherData (viikon_viikon, matalan lämpötilan, korkean lämpötilan, kunnon_koodi, kunto, sademäärä, kosteus, tuulen suunta, tuulen nopeus, tuulen_joukot, kaupunki, auringonnousu, auringonlasku, kuun vaihe, kuun_kuvake, palkin_luku, bar_desc)
self.night_forecast.append (night_forecast_data)

# suolakurkkua seuraavan kerran!
fileoutput = auki (file_path_current, 'w')
suolakurkku.dump (self.current_conditions, fileoutput)
fileoutput.close ()

fileoutput = avoin (file_path_dayforecast, 'w')
suolakurkku.dump (self.day_forecast, fileoutput)
fileoutput.close ()

fileoutput = avoin (file_path_nightforecast, 'w')
suolakurkku.dump (self.night_forecast, fileoutput)
fileoutput.close ()

paitsi:
tulosta "fetchData: Odottamaton virhe:", sys.exc_info () [0]
tulosta "Säätietoja ei voi kysyä"

else: # hae säätiedot marinoiduista luokkatiedostoista
jos self.options.verbose == Tosi:
tulosta >> sys.stdout, «noutaa säätietoja tiedostosta:«, file_path_current

fileinput = auki (file_path_current, 'r')
self.current_conditions = suolakurkku.load (tiedoston syöttö)
fileinput.close ()

jos self.options.verbose == Tosi:
tulosta >> sys.stdout, "haetaan päiväennusteita tiedostoista:", file_path_dayforecast, file_path_nightforecast

fileinput = auki (file_path_dayforecast, 'r')
self.day_forecast = suolakurkku.load (tiedoston syöttö)
fileinput.close ()

jos self.options.verbose == Tosi:
tulosta >> sys.stdout, «haetaan päivän ennustetiedostoja tiedostoista:«, file_path_nightforecast, file_path_nightforecast

fileinput = avoin (file_path_nightforecast, 'r')
self.night_forecast = suolakurkku.load (tiedoston syöttö)
fileinput.close ()

def outputData (itse):
#yrittää:

if self.options.template! = Ei mitään:

output = itse.getOutputTextFromTemplate (self.options.template)

else:

output = self.getOutputText (self.options.datatype, self.options.startday, self.options.endday, self.options.night, self.options.shortweekday, self.options.perperial, self.options.hideunits, self. vaihtoehdot. välit)

tuloste.encode ("utf-8")

#paitsi:
#print «outputData: Odottamaton virhe:«, sys.exc_info () [0]

jos __nimi__ == "__main__":

jäsennin = CommandLineParser ()
(vaihtoehdot, argumentit) = parser.parse_args ()

jos options.verbose == Tosi:
tulosta >> sys.stdout, "location:", options.location
tulosta >> sys.stdout, "imperial:", options.imperial
tulosta >> sys.stdout, "datatyyppi:", options.datatype
tulosta >> sys.stdout, "yö:", vaihtoehdot.yö
tulosta >> sys.stdout, "aloituspäivä:", options.startday
tulosta >> sys.stdout, "end day:", options.endday
tulosta >> sys.stdout, "välilyönnit", options.spaces
tulosta >> sys.stdout, "verbose:", options.verbose
tulosta >> sys.stdout, "refetch:", options.refetch

# luo uusi globaali sääobjekti
sää = GlobalWeather (vaihtoehdot)
weather.fetchData ()
weather.outputData ()

Luomme tiedoston ~ / Conky / scripts / myweather.template

gedit ~ / Conky / scripts / myweather.template

liitämme seuraavat sisälle:

{–Datatype = DW –startday = 1}: {–datatype = CC –startday = 1}
{–Datatype = HT –startday = 1} / {–datatype = LT –startday = 1} Tuuli {–datatype = WD –startday = 1} - {–datatype = WS –startday = 1}
Kosteus: {–datatype = HM –startday = 1} Sademäärä: {–datatype = PC –startday = 1}
Auringonnousu: {–datatype = SR –startday = 1} Auringonlasku: {–datatype = SS –startday = 1}
----------------
{–Datatype = DW –startday = 2}: {–datatype = CC –startday = 2}
{–Datatype = HT –startday = 2} / {–datatype = LT –startday = 2} Tuuli {–datatype = WD –startday = 2} - {–datatype = WS –startday = 2}
Kosteus: {–datatype = HM –startday = 2} Sademäärä: {–datatype = PC –startday = 2}
Auringonnousu: {–datatype = SR –startday = 2} Auringonlasku: {–datatype = SS –startday = 2}
----------------
{–Datatype = DW –startday = 3}: {–datatype = CC –startday = 3}
{–Datatype = HT –startday = 3} / {–datatype = LT –startday = 3} Tuuli {–datatype = WD –startday = 3} - {–datatype = WS –startday = 3}
Kosteus: {–datatype = HM –startday = 3} Sademäärä: {–datatype = PC –startday = 3}
Auringonnousu: {–datatype = SR –startday = 3} Auringonlasku: {–datatype = SS –startday = 3}
----------------
{–Datatype = DW –startday = 4}: {–datatype = CC –startday = 4}
{–Datatype = HT –startday = 4} / {–datatype = LT –startday = 4} Tuuli {–datatype = WD –startday = 4} - {–datatype = WS –startday = 4}
Kosteus: {–datatype = HM –startday = 4} Sademäärä: {–datatype = PC –startday = 4}
Auringonnousu: {–datatype = SR –startday = 4} Auringonlasku: {–datatype = SS –startday = 4}

Luomme tiedoston ~ / Conky / scripts / mail / conkyEmail.py (meidän on luotava postikansio)

gedit ~ / Conky / scripts / mail / conkyEmail.py

ja liitämme seuraavat sisälle:

tuonti os
tuo merkkijono

# Kirjoita käyttäjänimesi ja salasanasi alla olevaan lainausmerkkeihin
# esimerkiksi. käyttäjätunnus = »käyttäjänimi» ja salasana = »salasana»
käyttäjänimi = »YOUR_USUARIO_SINARROBA«
salasana = »SINUN AVAIN«

com = »wget -O - https: //» + käyttäjänimi + »:» + salasana + »@ mail.google.com / mail / feed / atom –no-check-sertifikaatti»

temp = os. avaa (com)
msg = temp.read ()
index = string.find (msg, » »)
index2 = merkkijono.find (msg, » »)
fc = int (msg [indeksi + 11: indeksi2])

jos fc == 0:
tulosta "0 uutta"
else:
tulosta str (fc) + »uusi»

Joten nyt sinulla on 7 tiedostoa:

Kansiossa: ~
-> .stconconky << - tee suoritettava

Kansiossa: ~ / Conky
-> conkymain
-> ennuste
-> saalistaja

ja kansiossa: ~ / Conky / scripts
-> conkyForecast.py << - tee suoritettava
-> myweather.template

ja kansiossa: ~ / Conky / scripts / mail
conkyEmail.py << - tee suoritettava

Ja siinä kaikki, selvennykset, missä sanotaan / home / user / ... käyttäjänimesi menee ja siinä osassa, johon Gmail-tiedot menevät, korostin väreillä, joihin sinun on laitettava tietosi.

tappaa taivaallinen prosessi kirjoita konsoliin

killall conky

suorittaa conky-kirjoitus konsolille

./.startconky

kun olet säätänyt kaiken, jos haluat, että conky aloittaa jokaisen istunnon

Järjestelmä -> Asetukset -> Istunnot ja käynnistysohjelmissa lisäämme sen

Nimeä voimme kirjoittaa Conky, järjestyksessä ./.startconky, että se alkaa joka kerta, kun käynnistät tietokoneen.

Siinä se, toivottavasti se auttaa sinua.


Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

*

  1. Vastuussa tiedoista: Miguel Ángel Gatón
  2. Tietojen tarkoitus: Roskapostin hallinta, kommenttien hallinta.
  3. Laillistaminen: Suostumuksesi
  4. Tietojen välittäminen: Tietoja ei luovuteta kolmansille osapuolille muutoin kuin lain nojalla.
  5. Tietojen varastointi: Occentus Networks (EU) isännöi tietokantaa
  6. Oikeudet: Voit milloin tahansa rajoittaa, palauttaa ja poistaa tietojasi.