Conky, moje nastavení

Fecfactor mě včera požádal, abych zveřejnil konfiguraci conky, kterou zobrazuji na následujícím obrázku

Jak vidíte, existují 3 conkys, které jsou prováděny pomocí skriptu, konfigurace je založena na tento příspěvek zveřejnil uživatel Bruce M. na fórech webu Ubuntu-Ar s některými úpravami v poštovním conky, což je v mém případě pro Gmail.

V referenčním příspěvku to Bruce velmi dobře vysvětluje, ale také jako paměťovou pomůcku pro mě zkopíruji kroky, které je třeba dodržet, a kód mých conkys pro kohokoliv.

Samozřejmě musíme mít nainstalovaný conky, curl a python, abychom zadali konzolu:

sudo apt-get nainstalovat conky curl python

Zdroj počasí.ttf a arrows.ttf Je zde. Zdroj moon.ttf Je zde po stažení je musíte zkopírovat do / usr / share / fonts

Nyní vytvořme náš skript s názvem ~. / Startconky

gksudo gedit ~ / .startconky

do prázdného souboru vložíme následující

#! / bin / bash
sleep 0 & # 0 good for Xfce - use 20 to 30 for Gnome
conky -c ~ / Conky / conkymain &
#sleep 0 & # 0 good for Xfce - use 1 for Gnome
conky -c ~ / Conky / conkyforecast &
#sleep 0 & # 0 good for Xfce - use 1 for Gnome
conky -c ~ / Conky / conkymail &

Nyní vytvoříme soubor conkymain ve složce ~ / Conky, pokud složku Conky nemáme, budeme ji muset vytvořit.

gedit ~ / Conky / conkymain

Používám písmo Calibri, pokud ho nemáte, nahraďte ho čímkoli chcete.

Držíme se toho, co následuje

pozadí č
own_window ano
own_window_transparent ano
own_window_hints undecorated, below, sticky, skip_taskbar, skip_pager
vlastní_sklo_barva černá
double_buffer ano
use_spacer vlevo
use_xft ano
kalibrace písma: velikost = 9
xftfont calibri: size = 9
xftalpha 0.5
interval_aktualizace 5.0
velká písmena č. # nastavena na ano, pokud chcete, aby byl veškerý text psán velkými písmeny
tečkované_hranice 3
okraj_okraj 9
šířka_ohraničení 10
default_color bílá
default_outline_color černá
default_shade_color černá
barva0 azurová
barva 1 světle modrá
barva2 oranžová
barva 3 žlutá
barva 4 pšenice
color5 bílá
color6 bílá
color7 bílá
color8 bílá
color9 bílá
zarovnání top_right # nebo top_left, bottom_left, bottom_right
mezera_x 10
mezera 35
text_buffer_size 128 # pro prognózu použijte 1024
no_buffers ano # Odečíst vyrovnávací paměť systému souborů z použité paměti?
draw_borders č
draw_outline yes # zesiluje text, pokud ano
draw_shades ano # odstín barva černá

TEXT
$ {font calibri: size = 12} $ {alignc} $ {color1} $ sysname $ kernel na $ machine} $ color $ font
$ {font calibri: size = 12} $ {alignc} $ {color2} $ {exec whoami} @ $ nodename $ color $ font
$ {color0} $ {hr 1} $ color
$ {font calibri: size = 20} $ {alignc} $ {time% H:% M} $ písmo
$ {font calibri: size = 12} $ {color1} $ {alignc} $ {time% A,% d% b. % Y} $ barva $ písmo
$ {color3} UpTime: $ {alignr 2} $ uptime $ color
$ {color0} $ {hr 1} $ color
$ {voffset 5} $ {color2} CPU: $ {alignc} $ color $ running_processes $ {color1} / $ color $ processes $ {alignr 2} $ {color2} $ {cpubar cpu0 14,80} $ color
$ {color1} $ {voffset -16} $ {alignr 5} $ cpu% $ color
$ {voffset 2} $ {color1} Načíst průměr ($ {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} ve vyrovnávací paměti: $ color $ {buffers} $ {alignr 2} $ {color1} v mezipaměti: $ color $ {cached}
$ {voffset 5} $ {color2} SWAP: $ color $ swap $ {color2} / $ color $ {swapmax} $ {alignr 2} $ {color2} $ {swapbar 14,80} $ color
$ {color1} $ {voffset -16} $ {alignr 5} $ swapperc%
$ {color0} $ {hr 1} $ color
$ {voffset 5} $ {color2} HD Info $ {color1} - $ color Zdarma $ {color1} - Použité - $ {color2} Celkem
$ {voffset 5} $ {color1} Kořen: $ color $ {fs_free_perc /}% $ {alignr 2} $ {fs_free /} $ {color2} / $ {color1} $ {fs_used /} $ color / $ {color2} $ {fs_size /} $ barva
$ {color1} Domov: $ color $ {fs_free_perc / home / user}% $ {alignr 2} $ {fs_free / home / user} $ {color2} / $ {color1} $ {fs_used / home / user} $ color / $ {color2} $ {fs_size / home / user} $ color
$ {color0} $ {hr 1} $ color
$ {color1} Od: $ color Buenos Aires, Argentina
$ {color1} Šířka: $ {color2} 34 ° 35'S $ {color1} Dlouhá: $ {color2} 58 ° 21'W $ {color1} Alt: $ {color2} 25 m $ barva
$ {voffset 5} $ {color2} $ {font kalibri: size = 12} dnes: $ font $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = CC} $ color $ {alignr 2} $ {color1} ST: $ {color2} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = LT}
$ {color3} $ {font Počasí: 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} $ písmo
$ {alignc 20} $ {voffset -30} $ {font Arrows: size = 20} $ {color4} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = BF} $ color $ písmo
$ {alignc 10} $ {voffset 5} $ {color4} Vítr: $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = WS} $ color
$ {color1} Vlhkost: $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = HM} $ {alignr 2} $ {color1} Srážky: $ {color3} $ { execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = PC} $ color
$ {alignc} $ {color1} Tlak: $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = BR} - $ {color3} $ {execi 3600 python ~ / Conky /scripts/conkyForecast.py –location = ARBA0009 –datatype = BD} $ color
$ {color4} $ {hr} $ barva
$ {color1} Východ slunce: $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = SR} $ {alignr 2} $ {color1} Západ slunce: $ {color3} $ { execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = SS} $ color
$ {voffset 15} $ {color1} Měsíc: $ {color4} $ {alignr 2} $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = MP} $ color
$ {voffset -20} $ {offset 80} $ {color4} $ {písma měsíční fáze: size = 20} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = MF} $ písmo $ barva
$ {color0} $ {hr} $ barva
$ {voffset 5} $ {color2} IP: $ {alignc} $ color $ {addr eth0}
$ {color1} Dolů: $ color $ {downspeed eth0} k / s $ {alignr 2} $ {color1} Nahoru: $ color $ {upspeed eth0} k / s
$ {color1} Celkem: $ color $ {totaldown eth0} $ {alignr 2} $ {color1} Celkem: $ color $ {totalup eth0}
$ {color1} Příchozí: $ color $ {tcp_portmon 1 32767 count} $ {color1} Odchozí: $ color $ {tcp_portmon 32768 61000 count} $ {alignr 2} $ {color1} Celkem: $ color $ {tcp_portmon 1 65535 count}
$ {voffset 5} $ {color2} Připojení: $ color $ {tcp_portmon 32768 61000 count} $ {alignr 2} $ {color2} služba / port $ barva
$ {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} $ barva

vytvoříme soubor ~ / Conky / conkyforecast

gedit ~ / Conky / conkyforecast

a vložíme následující dovnitř

pozadí č
own_window ano
own_window_transparent ano
own_window_hints undecorated, below, sticky, skip_taskbar, skip_pager
vlastní_sklo_barva černá
double_buffer ano
use_spacer vlevo
use_xft ano
kalibrace písma: velikost = 8
xftfont calibri: size = 8
xftalpha 0.5
interval_aktualizace 5.0
velká písmena č. # nastavena na ano, pokud chcete, aby byl veškerý text psán velkými písmeny
tečkované_hranice 3
okraj_okraj 9
šířka_ohraničení 10
default_color bílá
default_outline_color černá
default_shade_color černá
barva0 azurová
barva 1 světle modrá
barva2 oranžová
barva 3 žlutá
barva 4 pšenice
color5 bílá
color6 bílá
color7 bílá
color8 bílá
color9 bílá
zarovnání bottom_left # nebo top_left, bottom_left, bottom_right
mezera_x 10
mezera 35
text_buffer_size 1024 # pro prognózu použijte 1024
no_buffers ano # Odečíst vyrovnávací paměť systému souborů z použité paměti?
draw_borders č
draw_outline yes # zesiluje text, pokud ano
draw_shades ano # odstín barva černá

TEXT
$ {color4} $ {font calibri: size = 11} Rozšířená předpověď $ font $ color
$ {color0} $ {hr} $ barva
$ {color4} $ {font calibri: size = 9} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –template = / home / user / Conky / scripts / myweather.template} $ font $ barva

vytvoříme soubor ~ / Conky / conkymail

gedit ~ / Conky / conkymail

vložíme do souboru následující

pozadí č
own_window ano
own_window_transparent ano
own_window_hints undecorated, below, sticky, skip_taskbar, skip_pager
vlastní_sklo_barva černá
double_buffer ano
use_spacer vlevo
use_xft ano
kalibrace písma: velikost = 8
xftfont calibri: size = 8
xftalpha 0.5
interval_aktualizace 5.0
velká písmena č. # nastavena na ano, pokud chcete, aby byl veškerý text psán velkými písmeny
tečkované_hranice 3
okraj_okraj 9
šířka_ohraničení 10
default_color bílá
default_outline_color černá
default_shade_color černá
barva0 azurová
barva 1 světle modrá
barva2 oranžová
barva 3 žlutá
barva 4 pšenice
color5 bílá
color6 bílá
color7 bílá
color8 bílá
color9 bílá
zarovnání bottom_left # nebo top_left, bottom_left, bottom_right
mezera_x 565
mezera 35
text_buffer_size 128 # pro prognózu použijte 1024
no_buffers ano # Odečíst vyrovnávací paměť systému souborů z použité paměti?
draw_borders č
draw_outline yes # zesiluje text, pokud ano
draw_shades ano # odstín barva černá

TEXT
$ {font calibri: size = 11} $ {alignc} $ {color4} Gmail
$ {color0} $ {hr} $ barva
$ {font calibri: size = 11} $ {color4} Máme $ {color3} $ {execi 300 python ~ / Conky / scripts / mail / conkyEmail.py} $ {color4} e-mail $ $

Vytvoříme soubor v ~ / Conky / scripts / conkyForecast.py (musíme vytvořit složku skriptů)

gedit ~ / Conky / scripts / conkyForecast.py

#! / usr / bin / python
# - * - kódování: utf-8 - * -
###################################################### ################################
# conkyForecast.py je (už ne) jednoduchý (již) pythonovský skript, který se má shromáždit
# podrobnosti aktuálního počasí pro použití v conky.
#
# Autor: Kaivalagi
# Vytvořeno: 13/04/2008
# Úpravy:
# 14/04/2008 Povolit rozsahy dnů pro data předpovědi
# 14/04/2008 Zkontrolujte připojení ke službě xoap
# 18/04/2008 Povolit nastavení mezer pro výstup na dálku
# 18/04/2008 Povolit výstup předpovědi noci a dne
# 18/04/2008 Podpora národního prostředí pro možnost textového kódu podmínky „CC“, čeká na překlad do španělského jazyka
# 18/04/2008 Použijte moření pro data třídy, spíše než otevírání XML, to obchází potřebu dotazovat se na data v mezipaměti
# 19/04/2008 Přidán text španělské podmínky - Díky Bruce M.
# 19/04/2008 Přidána isnumerická kontrola všech číselných výstupů s příponou jednotek
# 19/04/2008 Změněno pojmenování souboru okurky tak, aby zahrnovalo kód umístění
# 19/04/2008 Přidána konverze dní ve španělském týdnu pomocí národního prostředí
# 20/04/2008 Přidán analyzátor argumentů slušného příkazu
# 20/04/2008 Přidáno - možnost krátký týden, je-li uveden, je datový typ den v týdnu zkrácen na 3 znaky
# 21/04/2008 Opravené možnosti národního prostředí pro výstup prognózy
# 21/04/2008 Přidáno - možnost šablony umožňující vlastní výstup pomocí jediného volání exec 🙂
# 21/04/2008 Přidáno - možnost skrýt jednotky k odebrání například mph a C z výstupu
# 23/04/2008 Odstraněno - imperiální volba ze šablony, toto MUSÍ být nastaveno jako standardní volba při volání skriptu a nepoužívá se v souboru šablony.
# 23/04/2008 Readded - imperiální možnost šablony, umožňující metrické nebo imperiální hodnoty na datový typ. Poznámka při použití šablony příkazového řádku volba nebude fungovat.
# 23/04/2008 Přidán výstup upozorňující uživatele, pokud je dané umístění špatné
# 24/04/2008 Přidáno zpracování bez připojení, nyní se vrátí k datům v mezipaměti (chyba, pokud neexistuje žádná mezipaměť). Testuje se pokusem otevřít xoap.weather.com
# 24/04/2008 Opraven převod Celsia na Fahrenheita
# 06/05/2008 Aktualizovaná adresa URL použitá po aktualizaci webové služby
# 09/05/2008 Konsolidovaný aktuální stav a data prognózy se načtou do jednoho hovoru
# 09/05/2008 Přidáno východ a západ slunce k datovým typům, ty jsou specifické jak pro aktuální podmínky, tak pro předpovědní data
# 09/05/2008 Přidána k datovým typům fáze měsíce, čtení barometru a popis barometru, ty jsou specifické pouze pro aktuální podmínky a stejně tak N / A v prognózovaném výstupu
# 09/05/2008 Přidány převody jednotek pro barometr z MB na palce (imperiální)
# 09/05/2008 Aktualizovaný text španělské podmínky - Díky Bruce M.
# 10/05/2008 Přidáno francouzské národní údaje - díky benpaka
# 12/05/2008 Přidán nový datový typ BF (ložiskové písmo), který poskytuje znak šipky (použijte s písmem Arrow.ttf) namísto výstupu NSEW z WD (směr větru)
# 12/05/2008 Aktualizovaný výstup WD, aby byl specifický pro národní prostředí, aktuálně podporuje výchozí angličtinu a španělštinu - díky Bruce M.
# 18/05/2008 Přidán nový datový typ MF (měsíční písmo), který poskytuje znak měsíčního písma (nesprávné znaky a zatím žádné vyhrazené písmo).
# 21/05/2008 Pro aktuální podmínky volba –datatype = LT nyní zobrazuje teplotu „cítí se jako“ místo aktuální teploty
#
# VŠE:
# Konsolidujte soubory pkl do jednoho souboru / třídy
# Přidejte meteorologické písmo založené na výstupu fáze měsíce na základě dat ikony měsíce
# ??? Nějaké další požadavky?

import sys, os, socket, urllib2, datetime, čas
z xml.dom import minidom
z importu statu *
z optparse importovat OptionParser
importovat národní prostředí
importovat gettext
importovat nálev
z matematického importu *

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

třída CommandLineParser:

analyzátor = žádný

def __init __ (vlastní):

self.parser = OptionParser ()
self.parser.add_option («- l», »- umístění», dest = »umístění», výchozí = »UKXX0103 ″, typ =» řetězec », metavar =» KÓD », help = u» kód umístění pro údaje o počasí [ default:% default], použijte následující adresu URL k určení kódu vaší polohy podle názvu města: http://xoap.weather.com/search/search?where=Norwich »)
self.parser.add_option ("- d", "- datový typ", dest = "datový typ", výchozí = "HT", typ = "řetězec", metavar = "DATATYPE", help = u "[výchozí:% výchozí]] Možnosti datových typů jsou: DW (den v týdnu), WF (výstup písma počasí), LT (předpověď: nízká teplota, aktuální: cítí se jako teplota), HT (předpověď: vysoká teplota, aktuální: aktuální teplota), CC (aktuální Podmínky), CT (text podmínek), PC (šance na srážky), HM (vlhkost), WD (směr větru), WS (rychlost větru), WG (poryvy větru), CN (název města), SR (východ slunce), SS (západ slunce), MP (měsíční fáze), MF (měsíční písmo), BR (čtení barometru), BD (popis barometru). Nelze použít na příkazovém řádku při použití šablon. »)
self.parser.add_option («- s», »- startday», dest = »startday», type = »int», metavar = »NUMBER», help = u »definuje číslo počátečního dne, pokud jsou vypuštěny aktuální podmínky . Nelze použít na příkazovém řádku při použití šablon. »)
self.parser.add_option ("- e", "- endday", dest = "endday", type = "int", metavar = "NUMBER", help = u "definuje číslo koncového dne, pokud je vynecháno, pouze data počátečního dne je na výstupu. Nelze použít na příkazovém řádku při použití šablon. »)
self.parser.add_option («- S», »- mezery», dest = »mezery», typ = »int», výchozí = 1, metavar = »ČÍSLO», help = u »[výchozí:% výchozí] Definuje počet mezer mezi výstupem na dálku. Nelze použít na příkazovém řádku při použití šablon. »)
self.parser.add_option («- t», »- template», dest = »template», type = »string», metavar = »FILE», help = u »definuje soubor šablony pro generování výstupu v jednom hovoru. zobrazitelná položka v souboru je ve tvaru {–datatype = HT –startday = 1}. U každé položky jsou možné možnosti: –datatype, –startday, –endday, –night, –shortweekday, –imperial, –hideunits, –Prostory. Pamatujte, že krátké formy voleb nejsou aktuálně podporovány! Žádná z těchto možností není při použití šablon použitelná na příkazovém řádku. »)
self.parser.add_option («- L», »- locale», dest = »locale», type = »string», help = u »přepsat národní prostředí systému pro jazykový výstup (en = anglicky, es = španělsky, fr = francouzština, další) »)
self.parser.add_option ("- i", "- imperiální", dest = "imperiální", výchozí = False, action = "store_true", help = u "požádat o imperiální jednotky, pokud je vynechaný výstup v metrice. příkazový řádek při použití šablon. »)
self.parser.add_option («- n», »- noc», dest = »noc», výchozí = False, akce = »store_true», help = u »přepnout výstup na noční data, pokud bude vynechán, bude výstup na den. Nelze použít na příkazovém řádku při použití šablon. »)
self.parser.add_option («- w», »- shortweekday», dest = »shortweekday», default = False, action = »store_true», help = u »Zkrátit datový typ den v týdnu na 3 znaky. příkazový řádek při použití šablon. »)
self.parser.add_option («- u», »- hideunits», dest = »hideunits», default = False, action = »store_true», help = u »Skrýt jednotky jako mph nebo C, symboly stupňů (°) jsou stále zobrazeno. Nelze použít na příkazovém řádku při použití šablon. »)
self.parser.add_option ("- v", "- verbose", dest = "verbose", default = False, action = "store_true", help = u "požadovat podrobný výstup, není to dobrý nápad při běhu přes conky!" )
self.parser.add_option ("- r", "- refetch", dest = "refetch", default = False, action = "store_true", help = u "načíst data bez ohledu na jejich platnost")

def parse_args (self):
(options, args) = self.parser.parse_args ()
návrat (možnosti, args)

def print_help (self):
vrátit self.parser.print_help ()

třída WeatherData:
def __init __ (self, day_of_week, low, high, condition_code, condition_text, precip, vlhkost, wind_dir, wind_speed, wind_gusts, město, východ slunce, západ slunce, moon_phase, moon_icon, bar_read, bar_desc):
self.day_of_week = u »» + day_of_week
self.low = u »» + nízká
self.high = u »» + vysoká
self.condition_code = u »» + podmínka_kód
self.condition_text = u »» + podmínka_text
self.precip = u »» + srážka
self.humidity = u »» + vlhkost
self.wind_dir = u »» + wind_dir
self.wind_speed = u »» + wind_speed
self.wind_gusts = u »» + wind_gusts
self.city = u »» + město
self.sunrise = u »» + východ slunce
self.sunset = u »» + západ slunce
self.moon_phase = u »» + moon_phase
self.moon_icon = u »» + moon_icon
self.bar_read = u »» + bar_read
self.bar_desc = u »» + bar_desc

třída WeatherText:

podmínky_text = {
«0»: _ (u »Tornado»),
«1»: _ (u »Tropická bouře»),
«2»: _ (u »Hurikán»),
«3»: _ (u »Silné bouřky»),
«4»: _ (u »Bouřky»),
«5»: _ (u »smíšený déšť a sníh»),
«6»: _ (u »Smíšený déšť a déšť se sněhem»),
«7»: _ (u »Smíšené srážky»),
«8»: _ (u »Mrznoucí mrholení»),
«9»: _ (u »Mrholení»),
«10»: _ (u »Mrznoucí déšť»),
«11»: _ (u »Sprchy»),
«12»: _ (u »Sprchy»),
«13»: _ (u »Snow Flurries»),
«14»: _ (u »Slabé sněhové přeháňky»),
«15»: _ (u »Fouká sníh»),
«16»: _ (u »Sníh»),
«17»: _ (u »Zdravas»),
«18»: _ (u »Déšť»),
«19»: _ (u »Prach»),
«20»: _ (u »Mlha»),
«21»: _ (u »Haze»),
«22»: _ (u »Kouř»),
«23»: _ (u »Blustery»),
«24»: _ (u »Větrno»),
«25»: _ (u »studené»),
«26»: _ (u »Zataženo»),
«27»: _ (u »Skoro zataženo»),
«28»: _ (u »Skoro zataženo»),
«29»: _ (u »Částečně oblačno»),
«30»: _ (u »Částečně oblačno»),
«31»: _ (u »Vymazat»),
«32»: _ (u »Vymazat»),
«33»: _ (u »Fair»),
«34»: _ (u »Fair»),
«35»: _ (u »Smíšený déšť a krupobití»),
«36»: _ (u »horké»),
«37»: _ (u »Izolované bouřky»),
«38»: _ (u »Rozptýlené bouřky»),
«39»: _ (u »Rozptýlené bouřky»),
«40»: _ (u »Rozptýlené sprchy»),
«41»: _ (u »Silné sněžení»),
«42»: _ (u »Rozptýlené sněhové přeháňky»),
«43»: _ (u »Silné sněžení»),
«44»: _ (u »Částečně oblačno»),
«45»: _ (u »Bouřky»),
«46»: _ (u »Sněhové přeháňky»),
«47»: _ (u »Izolované bouřky»),
«Na»: _ (u »N / A»),
"-": _ (a ")
}

podmínky_text_es = {
«0»: _ (u »Tornado»),
«1»: _ (u »Tropická bouře»),
«2»: _ (u »Huracá¡n»),
«3»: _ (u »Silné bouře»),
«4»: _ (u »Bouře»),
«5»: _ (u »smíšený déšť a sníh»),
«6»: _ (u »Smíšený déšť a déšť se sněhem»),
«7»: _ (u »Sleet»),
«8»: _ (u »Mrznoucí mrholení»),
«9»: _ (u »Mrholení»),
«10»: _ (u »Mrznoucí déšť»), # nebo mrznoucí déšť
«11»: _ (u »Sprchy»),
«12»: _ (u »Sprchy»),
«13»: _ (u »Slabý sníh»),
«14»: _ (u »Slabý sníh»),
«15»: _ (u »Snow Blizzard»),
«16»: _ (u »Sníh»),
«17»: _ (u »Zdravas»),
«18»: _ (u »Sleet»),
«19»: _ (u »Prášek»),
«20»: _ (u »Mlha»),
«21»: _ (u »Haze»),
«22»: _ (u »Kouř»),
«23»: _ (u »Bouře»),
«24»: _ (u »Větrno»),
«25»: _ (u »Fráo»),
«26»: _ (u »Velmi zataženo»),
«27»: _ (u »Skoro zataženo»),
«28»: _ (u »Skoro zataženo»),
«29»: _ (u »Částečně oblačno»),
«30»: _ (u »Částečně oblačno»),
«31»: _ (u »Vymazat»),
«32»: _ (u »Vymazat»),
«33»: _ (u »Něco zataženo»),
«34»: _ (u »Něco zataženo»),
«35»: _ (u »Déšť s krupobitím»),
«36»: _ (u »Teplo»),
«37»: _ (u »Izolované bouře»),
«38»: _ (u »Rozptýlené bouře»),
«39»: _ (u »Rozptýlené bouře»),
«40»: _ (u »Rozptýlené sprchy»),
«41»: _ (u »Silné sněžení»),
«42»: _ (u »Slabé a rozptýlené sněžení»),
«43»: _ (u »Intense Nevada»),
«44»: _ (u »Rozptýlené mraky»),
«45»: _ (u »Bouře»),
«46»: _ (u »Rozptýlené sněžení»),
«47»: _ (u »Izolované bouře»),
«Na»: _ (u »N / A»),
"-": _ (a ")
}

podmínky_text_fr = {
«0»: _ (u »Tornade»),
«1»: _ (u »Tempête Tropicale»),
«2»: _ (nebo »Ouragan»),
«3»: _ (nebo »Orages Violents»),
«4»: _ (nebo »Orageux»),
«5»: _ (u »Pluie et Neige»),
«6»: _ (u »Pluie et Neige Mouillée»),
«7»: _ (u »Variabilní avec averze»),
«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»: _ (nebo »Orages Isolés»),
«38»: _ (nebo »Orages Localisés»),
«39»: _ (nebo »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»: _ (nebo »Orages»),
«46»: _ (u »Tempête de Neige»),
«47»: _ (nebo »Orages Isolés»),
«Na»: _ (u »N / A»),
"-": _ (a ")
}

conditions_weather_font = {
«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 »»),
„-“: _ (nebo „“)
}

conditions_moon_font = {
«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 »»),
„-“: _ (nebo „“)
}

day_of_week = {
„Today“: _ (nebo „Today“),
«Pondělí»: _ (u »Pondělí»),
«Úterý»: _ (u »Úterý»),
«Středa»: _ (u »Středa»),
«Čtvrtek»: _ (u »čtvrtek»),
«Pátek»: _ (u »Pátek»),
"Sobota": _ (u "Sobota"),
"Sunday": _ (u "Sunday")
}

day_of_week_short = {
"Today": _ (u "Now"),
«Pondělí»: _ (u »Po»),
«Úterý»: _ (u »Út»),
«Středa»: _ (u »st»),
«Čtvrtek»: _ (u »čt»),
«Pátek»: _ (u »pá»),
"Sobota": _ (u "So"),
"Sunday": _ (u "Sun")
}

day_of_week_en = {
"Today": _ (u "today"),
«Pondělí»: _ (u »Pondělí»),
«Úterý»: _ (u »Úterý»),
«Středa»: _ (u »Středa»),
«Čtvrtek»: _ (u »čtvrtek»),
«Pátek»: _ (u »Pátek»),
"Sobota": _ (u "Sobota"),
"Sunday": _ (u "Sunday")
}

day_of_week_short_en = {
"Today": _ (u "today"),
"Monday": _ (u "mon"),
«Úterý»: _ (u »moře»),
«Středa»: _ (u »st»),
«Čtvrtek»: _ (u »čtvrtek»),
«Pátek»: _ (u »pá»),
"Sobota": _ (u "so"),
"Sunday": _ (u "dom")
}

day_of_week_fr = {
«Dnes»: _ (u »Aujourd'hui»),
«Pondělí»: _ (u »Lundi»),
«Úterý»: _ (u »Mardi»),
«Středa»: _ (u »Mercredi»),
«Čtvrtek»: _ (u »Jeudi»),
«Pátek»: _ (u »Vendredi»),
"Saturday": _ (u "Samedi"),
"Sunday": _ (u "Dimanche")
}

day_of_week_short_fr = {
«Dnes»: _ (u »Auj»),
"Monday": _ (u "Po"),
«Úterý»: _ (u »Mar»),
"Wednesday": _ (u "Mer"),
«Čtvrtek»: _ (u »Jeu»),
«Pátek»: _ (u »Přijďte»),
"Sobota": _ (u "Sam"),
"Sunday": _ (u "Dim")
}

bear_arrow_font = {
«N»: _ (u »i»),
«NNE»: _ (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 »«)
}

bear_text_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"),
"Jejich"),
"SSW": _ (u "SSO"),
«SW»: _ (u »SO»),
"WSW": _ (u "WOW"),
«W»: _ (u »O»),
«WNW»: _ (u »ONO»),
«NW»: _ (u »NE»),
«NNW»: _ (u »NNO»),
«N / A»: _ (u »N \ A»)
}

bear_text_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"),
"Jejich"),
"SSW": _ (u "SSO"),
«SW»: _ (u »SO»),
"WSW": _ (u "WOW"),
«W»: _ (u »O»),
«WNW»: _ (u »ONO»),
«NW»: _ (u »NE»),
«NNW»: _ (u »NNO»),
«N / A»: _ (u »N \ A»)
}

třída GlobalWeather:

aktuální_podmínky = []
day_forecast = []
night_forecast = []

locale = "in"

options = Žádný
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 __ (self, options):

self.options = možnosti

if self.options.locale == Žádný:
vyzkoušejte následující postup:
# self.locale = locale.getdefaultlocale () [0] [0: 2]
self.locale = «es» # uncomment tento řádek vynutit španělské národní prostředí
# self.locale = "fr" #uncomment this line to force French locale
až na:
tisk "národní prostředí není nastaveno"
jiný:
# self.locale = self.options.locale
self.locale = «es» # uncomment tento řádek vynutit španělské národní prostředí
# self.locale = "fr" #uncomment this line to force French locale

if self.options.verbose == Pravda:
print >> sys.stdout, "locale set to", self.locale

def getText (self, nodelist):
rc = ""
pro uzel v seznamu uzlů:
pokud node.nodeType == node.TEXT_NODE:
rc = rc + uzel.data
návrat rc

def getSpaces (self, spaces):
řetězec = u »»
pokud mezery == Žádné:
řetězec = self.DEFAULT_SPACING
jiný:
pro i v rozsahu (0, mezery + 1):
řetězec = řetězec + u »«
návratový řetězec

def isNumeric (self, string):
vyzkoušejte následující postup:
dummy = float (řetězec)
vrátit True
až na:
vrátit False

def isConnectionAvailable (vlastní):
# zajistěte, abychom měli přístup na server weather.com otevřením adresy URL
vyzkoušejte následující postup:
Usock = urllib2.urlopen ('http://xoap.weather.com')
Usock.close ()
vrátit True
až na:
vrátit False

def getBearingText (vlastní, nesoucí):
ložisko = plovák (ložisko)
pokud je ložisko <11.25:
vrátit se »N»
ložisko elif <33.75:
vrátit se »NNE»
ložisko elif <56.25:
vrátit se »NE»
ložisko elif <78.75:
vrátit se »JAN»
ložisko elif <101.25:
vrátit se »E»
ložisko elif <123.75:
vrátit se »ESE»
ložisko elif <146.25:
vrátit se »SE»
ložisko elif <168.75:
vrátit se »SSE»
ložisko elif <191.25:
vrátit se »S»
ložisko elif <213.75:
vrátit se »SSW»
ložisko elif <236.25:
vrátit se »SW»
ložisko elif <258.75:
vrátit se »WSW»
ložisko elif <281.25:
vrátit se »W»
ložisko elif <303.75:
vrátit se »WNW»
ložisko elif <326.25:
zpět »SZ»
ložisko elif <348.75:
vrátit se »NNW»
jiný:
zpět «N / A»

def convertCelsiusToFahrenheit (self, temp):
návrat str (int (floor (((float (temp) * 9.0) /5.0) +32)))

def convertKilometresToMiles (self, dist):
návrat str (int (floor (float (dist) * 0.621371192)))

def convertMillibarsToInches (self, mb):
return str (int (floor (float (mb) /33.8582))))

def getTemplateList (self, template):

seznam šablon = []

pro template_part v template.split («{«):
if template_part! = «»:
pro template_part v template_part.split ("}"):
if template_part! = «»:
templatelist.append (u »» + template_part)

vrátit templatelistu

def getOutputText (vlastní, datový typ, začátek, konec, noc, krátký týden, imperiální, skryté jednotky, mezery):
#Snaž se:
výstup = u »»

# definuje aktuální jednotky pro výstup
if hideunits == False:
pokud imperiální == False:
tempunit = u »° C»
speedunit = u »kph»
pressureunit = u »mb»
jiný:
tempunit = u »° F»
speedunit = u »mph»
pressureunit = u »in»
jiný:
tempunit = u »°»
speedunit = u »»
pressureunit = u »»

if startday == None: # aktuální podmínky

pokud datový typ == "DW":
pokud self.locale == "je":
pokud shortweekday == True:
output = WeatherText.day_of_week_short_es [self.current_conditions [0] .day_of_week]
jiný:
output = WeatherText.day_of_week_es [self.current_conditions [0] .day_of_week]
elif self.locale == "fr":
pokud shortweekday == True:
output = WeatherText.day_of_week_short_fr [self.current_conditions [0] .day_of_week]
jiný:
output = WeatherText.day_of_week_fr [self.current_conditions [0] .day_of_week]
jiný:
pokud shortweekday == True:
output = WeatherText.day_of_week_short [self.current_conditions [0] .day_of_week]
jiný:
output = WeatherText.day_of_week [self.current_conditions [0] .day_of_week]
elif datatype == "WF": # písmo počasí
output = WeatherText.conditions_weather_font [self.current_conditions [0] .condition_code]
elif datatype == "LT":
string = self.current_conditions [0] .low
if self.isNumeric (string) == True:
pokud imperiální == True:
string = self.convertCelsiusToFahrenheit (řetězec)
řetězec = řetězec + tempunit
výstup = řetězec
elif datatype == "HT":
string = self.current_conditions [0] .vysoká
if self.isNumeric (string) == True:
pokud imperiální == True:
string = self.convertCelsiusToFahrenheit (řetězec)
řetězec = řetězec + tempunit
výstup = řetězec
elif datatype == "CC":
pokud self.locale == "je":
output = WeatherText.conditions_text_es [self.current_conditions [0] .condition_code]
elif self.locale == "fr":
output = WeatherText.conditions_text_fr [self.current_conditions [0] .condition_code]
jiný:
output = WeatherText.conditions_text [self.current_conditions [0] .condition_code]
elif datatype == "CT":
output = self.current_conditions [0] .condition_text
elif datatype == "PC":
string = self.current_conditions [0] .precip
if self.isNumeric (string) == True:
řetězec = řetězec + u »%»
výstup = řetězec
elif datatype == "HM":
string = self.current_conditions [0] .vlhkost
if self.isNumeric (string) == True:
řetězec = řetězec + u »%»
výstup = řetězec
elif datatype == "WD":
string = self.current_conditions [0] .wind_dir
if self.isNumeric (string) == True:
string = self.getBearingText (řetězec)

pokud self.locale == "je":
output = WeatherText.bearing_text_es [řetězec]
elif self.locale == "fr":
output = WeatherText.bearing_text_fr [řetězec]
jiný:
výstup = řetězec

elif datatype == "BF":
string = self.current_conditions [0] .wind_dir
if self.isNumeric (string) == True:
string = WeatherText.bearing_arrow_font [self.getBearingText (řetězec)]
výstup = řetězec
elif datatype == "WS":
string = self.current_conditions [0] .wind_speed
if self.isNumeric (string) == True:
pokud imperiální == True:
string = self.convertKilometresToMiles (řetězec)
řetězec = řetězec + rychlostní jednotka
výstup = řetězec
elif datatype == "WG":
string = self.current_conditions [0]. wind_gusts
if self.isNumeric (string) == True:
pokud imperiální == True:
string = self.convertKilometresToMiles (řetězec)
řetězec = řetězec + rychlostní jednotka
výstup = řetězec
elif datatype == "CN":
output = self.current_conditions [0] .city
elif datatype == "SR":
output = self.current_conditions [0] .sunrise
elif datatype == "SS":
output = self.current_conditions [0] .sunset
elif datatype == "MP":
output = self.current_conditions [0] .moon_phase
elif datatype == "MF":
output = WeatherText.conditions_moon_font [self.current_conditions [0] .moon_icon]
elif datatype == "BR":
string = self.current_conditions [0] .bar_read
if self.isNumeric (string) == True:
pokud imperiální == True:
string = self.convertMillibarsToInches (řetězec)
řetězec = řetězec + tlaková jednotka
výstup = řetězec
elif datatype == "BD":
output = self.current_conditions [0] .bar_desc
jiný:
output = "\ n CHYBA: Je požadován neznámý datový typ"

else: # data předpovědi

if endday == None: # pokud nebyl nastaven žádný endday, použijte startday
endday = počáteční den

if night == True: Je požadována # noční předpověď

pro číslo dne v rozsahu (začátek, den + 1):

pokud datový typ == "DW":
pokud self.locale == "je":
pokud shortweekday == True:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_short_es [self.night_forecast [day_number] .day_of_week]
jiný:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_es [self.night_forecast [day_number] .day_of_week]
elif self.locale == "fr":
pokud shortweekday == True:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_short_fr [self.night_forecast [day_number] .day_of_week]
jiný:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_fr [self.night_forecast [day_number] .day_of_week]
jiný:
pokud shortweekday == True:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_short [self.night_forecast [day_number] .day_of_week]
jiný:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week [self.night_forecast [day_number] .day_of_week]
elif datatype == "WF": # písmo počasí
output = output + self.getSpaces (spaces) + WeatherText.conditions_weather_font [self.night_forecast [day_number] .cond__code]
elif datatype == "LT":
string = self.night_forecast [day_number] .low
if self.isNumeric (string) == True:
pokud imperiální == True:
string = self.convertCelsiusToFahrenheit (řetězec)
řetězec = řetězec + tempunit
output = output + self.getSpaces (spaces) + string

elif datatype == "HT":
string = self.night_forecast [day_number] .vysoká
if self.isNumeric (string) == True:
pokud imperiální == True:
string = self.convertCelsiusToFahrenheit (řetězec)
řetězec = řetězec + tempunit
output = output + self.getSpaces (spaces) + string
elif datatype == "CC":
pokud self.locale == "je":
output = output + self.getSpaces (spaces) + WeatherText.conditions_text_es [self.night_forecast [day_number] .condition_code]
elif self.locale == "fr":
output = output + self.getSpaces (spaces) + WeatherText.conditions_text_fr [self.night_forecast [day_number] .condition_code]
jiný:
output = output + self.getSpaces (spaces) + WeatherText.conditions_text [self.night_forecast [day_number] .condition_code]
elif datatype == "CT":
output = output + self.getSpaces (spaces) + self.night_forecast [day_number] .cond_text
elif datatype == "PC":
string = self.night_forecast [day_number] .precip
if self.isNumeric (string) == True:
řetězec = řetězec + u »%»
output = output + self.getSpaces (spaces) + string
elif datatype == "HM":
string = self.night_forecast [day_number] .vlhkost
if self.isNumeric (string) == True:
řetězec = řetězec + u »%»
output = output + self.getSpaces (spaces) + string
elif datatype == "WD":
string = self.night_forecast [day_number]. wind_dir
pokud self.locale == "je":
output = output + self.getSpaces (spaces) + WeatherText.bearing_text_es [řetězec]
elif self.locale == "fr":
output = output + self.getSpaces (spaces) + WeatherText.bearing_text_fr [řetězec]
jiný:
output = output + self.getSpaces (spaces) + string

elif datatype == "BF":
output = output + self.getSpaces (spaces) + WeatherText.bearing_arrow_font [self.night_forecast [day_number] .wind_dir]
elif datatype == "WS":
string = self.night_forecast [day_number]. wind_speed
if self.isNumeric (string) == True:
pokud imperiální == True:
string = self.convertKilometresToMiles (řetězec)
řetězec = řetězec + rychlostní jednotka
output = output + self.getSpaces (spaces) + string
elif datatype == "WG":
string = self.night_forecast [day_number]. wind_gusts
if self.isNumeric (string) == True:
pokud imperiální == True:
string = self.convertKilometresToMiles (řetězec)
řetězec = řetězec + rychlostní jednotka
output = output + self.getSpaces (spaces) + string
elif datatype == "CN":
output = output + self.getSpaces (spaces) + self.night_forecast [day_number] .city
elif datatype == "SR":
output = output + self.getSpaces (spaces) + self.night_forecast [day_number] .sunrise
elif datatype == "SS":
output = output + self.getSpaces (spaces) + self.night_forecast [day_number] .sunset
elif datatype == "MP":
output = output + self.getSpaces (spaces) + self.night_forecast [day_number] .moon_phase
elif datatype == "MF":
output = output + self.getSpaces (spaces) + WeatherText.conditions_moon_font [self.night_forecast [day_number] .moon_icon]
elif datatype == "BR":
output = output + self.getSpaces (spaces) + self.night_forecast [day_number] .bar_read
elif datatype == "BD":
output = output + self.getSpaces (spaces) + self.night_forecast [day_number] .bar_desc
jiný:
output = "\ n CHYBA: Je požadován neznámý datový typ"
rozbít

else: Je požadována # denní předpověď

pro číslo dne v rozsahu (začátek, den + 1):

pokud datový typ == "DW":
pokud self.locale == "je":
pokud shortweekday == True:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_short_es [self.day_forecast [day_number] .day_of_week]
jiný:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_es [self.day_forecast [day_number] .day_of_week]
elif self.locale == "fr":
pokud shortweekday == True:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_short_fr [self.day_forecast [day_number] .day_of_week]
jiný:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_fr [self.day_forecast [day_number] .day_of_week]
jiný:
pokud shortweekday == True:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_short [self.day_forecast [day_number] .day_of_week]
jiný:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week [self.day_forecast [day_number] .day_of_week]
elif datatype == "WF": # písmo počasí
output = output + self.getSpaces (spaces) + WeatherText.conditions_weather_font [self.day_forecast [day_number] .cond__code]
elif datatype == "LT":
string = self.day_forecast [day_number] .low
if self.isNumeric (string) == True:
pokud imperiální == True:
string = self.convertCelsiusToFahrenheit (řetězec)
řetězec = řetězec + tempunit
output = output + self.getSpaces (spaces) + string
elif datatype == "HT":
string = self.day_forecast [day_number] .vysoká
if self.isNumeric (string) == True:
pokud imperiální == True:
string = self.convertCelsiusToFahrenheit (řetězec)
řetězec = řetězec + tempunit
output = output + self.getSpaces (spaces) + string
elif datatype == "CC":
pokud self.locale == "je":
output = output + self.getSpaces (spaces) + WeatherText.conditions_text_es [self.day_forecast [day_number] .condition_code]
elif self.locale == "fr":
output = output + self.getSpaces (spaces) + WeatherText.conditions_text_fr [self.day_forecast [day_number] .condition_code]
jiný:
output = output + self.getSpaces (spaces) + WeatherText.conditions_text [self.day_forecast [day_number] .condition_code]
elif datatype == "CT":
output = output + self.getSpaces (spaces) + self.day_forecast [day_number] .cond_text
elif datatype == "PC":
string = self.day_forecast [day_number] .precip
if self.isNumeric (string) == True:
řetězec = řetězec + u »%»
output = output + self.getSpaces (spaces) + string
elif datatype == "HM":
string = self.day_forecast [day_number] .vlhkost
if self.isNumeric (string) == True:
řetězec = řetězec + u »%»
output = output + self.getSpaces (spaces) + string
elif datatype == "WD":
string = self.day_forecast [day_number]. wind_dir

pokud self.locale == "je":
output = output + self.getSpaces (spaces) + WeatherText.bearing_text_es [řetězec]
elif self.locale == "fr":
output = output + self.getSpaces (spaces) + WeatherText.bearing_text_fr [řetězec]
jiný:
output = output + self.getSpaces (spaces) + string

elif datatype == "BF":
output = output + self.getSpaces (spaces) + WeatherText.bearing_arrow_font [self.day_forecast [day_number] .wind_dir]
elif datatype == "WS":
string = self.day_forecast [day_number]. wind_speed
if self.isNumeric (string) == True:
pokud imperiální == True:
string = self.convertKilometresToMiles (řetězec)
řetězec = řetězec + rychlostní jednotka
output = output + self.getSpaces (spaces) + string
elif datatype == "WG":
string = self.day_forecast [day_number]. wind_gusts
if self.isNumeric (string) == True:
pokud imperiální == True:
string = self.convertKilometresToMiles (řetězec)
řetězec = řetězec + rychlostní jednotka
output = output + self.getSpaces (spaces) + string
elif datatype == "CN":
output = output + self.getSpaces (spaces) + self.day_forecast [day_number] .city
elif datatype == "SR":
output = output + self.getSpaces (spaces) + self.day_forecast [day_number] .sunrise
elif datatype == "SS":
output = output + self.getSpaces (spaces) + self.day_forecast [day_number] .sunset
elif datatype == "MP":
output = output + self.getSpaces (spaces) + self.day_forecast [day_number] .moon_phase
elif datatype == "MF":
output = output + self.getSpaces (spaces) + WeatherText.conditions_moon_font [self.day_forecast [day_number] .moon_icon]
elif datatype == "BR":
output = output + self.getSpaces (spaces) + self.day_forecast [day_number] .bar_read
elif datatype == "BD":
output = output + self.getSpaces (spaces) + self.day_forecast [day_number] .bar_desc
jiný:
output = u »\ n CHYBA: Je požadován neznámý datový typ»
rozbít

output = u »» + output.strip (u »«) # ztratit úvodní / koncové mezery
zpětný výstup

#až na:
#print "getOutputText: Neočekávaná chyba:", sys.exc_info () [0]

def getOutputTextFromTemplate (self, template):
#Snaž se:

# klíče pro data šablony
DATATYPE_KEY = "–datatype ="
STARTDAY_KEY = "–startday ="
ENDDAY_KEY = "–endday ="
NIGHT_KEY = "–noc"
SHORTWEEKDAY_KEY = "–shortweekday"
IMPERIAL_KEY = "–imperial"
HIDEUNITS_KEY = "–skryté jednotky"
SPACES_KEY = "–spaces ="

výstup = u »»

možnost nalezena = False

# načtěte soubor
vyzkoušejte následující postup:
fileinput = open (self.options.template)
template = fileinput.read ()
fileinput.close ()
až na:
output = u »Soubor šablony nebyl nalezen!»

templatelist = self.getTemplateList (šablona)

# umožňuje procházet seznamem šablon a určit výstup pro každou nalezenou položku
pro i v rozsahu (0, len (templatelist) -1):

pos = templatelist [i] .find (DATATYPE_KEY)
pokud pos! = -1:
možnost nalezena = Pravda
pos = pos + len (DATATYPE_KEY)
datový typ = templatelist [i] [pos: pos + 4]. strip («}»). strip («{«). strip («-«). strip (»«)
jiný:
datatype = Žádný

pos = templatelist [i] .find (STARTDAY_KEY)
pokud pos! = -1:
možnost nalezena = Pravda
pos = pos + len (STARTDAY_KEY)
startday = int (templatelist [i] [pos: pos + 4] .strip ("}"). strip ("{"). strip ("-"). strip (""))
jiný:
startday = Žádný

pos = templatelist [i] .find (ENDDAY_KEY)
pokud pos! = -1:
možnost nalezena = Pravda
pos = pos + len (ENDDAY_KEY)
endday = int (templatelist [i] [pos: pos + 4] .strip ("}"). strip ("{"). strip ("-"). strip (""))
jiný:
endday = Žádný

pos = templatelist [i] .find (NIGHT_KEY)
pokud pos! = -1:
možnost nalezena = Pravda
noc = pravda
jiný:
noc = nepravda

pos = templatelist [i] .find (SHORTWEEKDAY_KEY)
pokud pos! = -1:
možnost nalezena = Pravda
shortweekday = Pravda
jiný:
krátký pracovní den = nepravda

pos = templatelist [i] .find (IMPERIAL_KEY)
pokud pos! = -1:
možnost nalezena = Pravda
imperiální = pravda
jiný:
imperiální = nepravda

pos = templatelist [i] .find (HIDEUNITS_KEY)
pokud pos! = -1:
možnost nalezena = Pravda
hideunits = Pravda
jiný:
hideunits = Nepravda

pos = templatelist [i] .find (SPACES_KEY)
pokud pos! = -1:
možnost nalezena = Pravda
pos = pos + len (SPACES_KEY)
mezery = int (templatelist [i] [pos: pos + 4]. strip («}»). strip («{«). strip («-«). strip (»«))
jiný:
mezery = 1

if optionfound == True:
templatelist [i] = self.getOutputText (datový typ, začátek, den, noc, krátký týden, imperiální, skryté jednotky, mezery)
možnost nalezena = False

# projděte seznam zřetězení výstupu nyní, když je naplněn
pro položku v templatelistu:
výstup = výstup + položka

zpětný výstup

#až na:
#print "getOutputTextFromTemplate: Neočekávaná chyba:", sys.exc_info () [0]

def fetchData (self):

# vždy načtěte metrická data, použijte u těchto dat funkce konverzace
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 () == False:
pokud os.path.exists (file_path_current):
RefetchData = False
else: # žádné připojení, žádná mezipaměť, bum!
tisk "Není k dispozici žádné připojení k internetu a neexistují žádná data o počasí v mezipaměti."
elif self.options.refetch == Pravda:
RefetchData = Pravda
jiný:
# je třeba data znovu načíst?
pokud os.path.exists (file_path_current):
lastmodDate = time.localtime (os.stat (cesta_k_souboru) [ST_MTIME])
expiryDate = (datetime.datetime.today () - datetime.timedelta (minutes = self.EXPIRY_MINUTES)). timetuple ()

pokud expiryDate> lastmodDate:
RefetchData = Pravda
jiný:
RefetchData = False
jiný:
RefetchData = Pravda

# načíst data o aktuálních podmínkách, buď z webu, nebo „zrušením výběru“
pokud RefetchData == True:

# získat aktuální údaje o podmínkách ze služby xoap
vyzkoušejte následující postup:

# 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 & jednotka = m '
if self.options.verbose == Pravda:
tisk >> sys.stdout, «načítání dat o počasí z«, url

Usock = urllib2.urlopen (url)
xml = usock.read ()
Usock.close ()
self.weatherxmldoc = minidom.parseString (xml)
až na:
tisk "fetchData: Neočekávaná chyba:", sys.exc_info () [0]
tisk "Nelze kontaktovat zdroj počasí pro aktuální podmínky"

# řekněte uživateli, jestli je špatné umístění ...
found = xml.find ("Poskytnuto neplatné místo")
pokud je nalezeno! = -1:
tisk „Poskytnuto neplatné místo“

# vyslýchat údaje o počasí, načíst do struktury třídy a nakládat je
vyzkoušejte následující postup:

# připravit seznamy údajů o počasí
self.current_conditions = []
self.day_forecast = []
self.night_forecast = []

# shromažďovat obecná data
weather_n = self.weatherxmldoc.documentElement
location_n = weather_n.getElementsByTagName ('loc') [0]
city_n = location_n.getElementsByTagName ('dnam') [0]
city ​​= self.getText (city_n.childNodes)

# sbírat údaje o aktuálních podmínkách
day_of_week = u »Dnes»
precip = u »N / A»
sunrise_n = location_n.getElementsByTagName ('sunr') [0]
sunrise = self.getText (sunrise_n.childNodes)
sunset_n = location_n.getElementsByTagName ('suns') [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 ('ikona') [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 ('bar') [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 ('wind') [0]
wind_speed_n = wind_n.getElementsByTagName ('s') [0]
wind_speed = self.getText (wind_speed_n.childNodes)
wind_gust_n = wind_n.getElementsByTagName ('poryv') [0]
wind_gusts = self.getText (wind_gust_n.childNodes)
wind_dir_n = wind_n.getElementsByTagName ('d') [0]
wind_direction = self.getText (wind_dir_n.childNodes)
vlhkost_n = aktuální_podmínka_n.getElementsByTagName ('hmid') [0]
vlhkost = self.getText (vlhkost_n.childNodes)
moon_n = current_condition_n.getElementsByTagName ('moon') [0]
moon_icon_n = moon_n.getElementsByTagName ('ikona') [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 (day_of_week, current_temp_feels, current_temp, current_code, current_desc, srážka, vlhkost, směr větru, wind_speed, wind_gusts, město, východ slunce, západ slunce, moon_phase, moon_icon, bar_read, bar_desc)
self.current_conditions.append (current_conditions_data)

# shromažďovat data předpovědi
bar_read = u »N / A»
bar_desc = u »N / A»
moon_phase = u »N / A»
moon_icon = u »na»
forecast_n = weather_n.getElementsByTagName ('dayf') [0]
day_nodes = forecast_n.getElementsByTagName ('day')

pro den v day_nodes:
day_of_week = day.getAttribute ('t')
day_of_year = day.getAttribute ('dt')
high_temp_n = day.getElementsByTagName ('ahoj') [0]
high_temp = self.getText (high_temp_n.childNodes)
low_temp_n = day.getElementsByTagName ('low') [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 ('suns') [0]
sunset = self.getText (sunset_n.childNodes)

# denní předpověď konkrétní data
daytime_n = day.getElementsByTagName ('part') [0] # den
condition_code_n = daytime_n.getElementsByTagName ('ikona') [0]
condition_code = self.getText (condition_code_n.childNodes)
condition_n = daytime_n.getElementsByTagName ('t') [0]
condition = self.getText (condition_n.childNodes)
precip_n = daytime_n.getElementsByTagName ('ppcp') [0]
precip = self.getText (precip_n.childNodes)
vlhkost_n = denní_n.getElementsByTagName ('hmid') [0]
vlhkost = self.getText (vlhkost_n.childNodes)
wind_n = daytime_n.getElementsByTagName ('wind') [0]
wind_speed_n = wind_n.getElementsByTagName ('s') [0]
wind_speed = self.getText (wind_speed_n.childNodes)
wind_direction_n = wind_n.getElementsByTagName ('t') [0]
wind_direction = self.getText (wind_direction_n.childNodes)
wind_gusts_n = wind_n.getElementsByTagName ('poryv') [0]
wind_gusts = self.getText (wind_gusts_n.childNodes)
day_forecast_data = WeatherData (day_of_week, low_temp, high_temp, condition_code, condition, precip, vlhkost, wind_direction, wind_speed, wind_gusts, město, východ slunce, západ slunce, moon_phase, moon_icon, bar_read, bar_desc)
self.day_forecast.append (day_forecast_data)

# noční předpověď konkrétní data
daytime_n = day.getElementsByTagName ('part') [1] # noc
condition_code_n = daytime_n.getElementsByTagName ('ikona') [0]
condition_code = self.getText (condition_code_n.childNodes)
condition_n = daytime_n.getElementsByTagName ('t') [0]
condition = self.getText (condition_n.childNodes)
precip_n = daytime_n.getElementsByTagName ('ppcp') [0]
precip = self.getText (precip_n.childNodes)
vlhkost_n = denní_n.getElementsByTagName ('hmid') [0]
vlhkost = self.getText (vlhkost_n.childNodes)
wind_n = daytime_n.getElementsByTagName ('wind') [0]
wind_speed_n = wind_n.getElementsByTagName ('s') [0]
wind_speed = self.getText (wind_speed_n.childNodes)
wind_direction_n = wind_n.getElementsByTagName ('t') [0]
wind_direction = self.getText (wind_direction_n.childNodes)
wind_gusts_n = wind_n.getElementsByTagName ('poryv') [0]
wind_gusts = self.getText (wind_gusts_n.childNodes)
night_forecast_data = WeatherData (day_of_week, low_temp, high_temp, condition_code, condition, precip, vlhkost, wind_direction, wind_speed, wind_gusts, město, východ slunce, západ slunce, moon_phase, moon_icon, bar_read, bar_desc)
self.night_forecast.append (night_forecast_data)

# nakládejte data pro příště!
fileoutput = open (file_path_current, 'w')
pickle.dump (self.current_conditions, fileoutput)
fileoutput.close ()

fileoutput = open (file_path_dayforecast, 'w')
pickle.dump (self.day_forecast, výstup souboru)
fileoutput.close ()

fileoutput = open (file_path_nightforecast, 'w')
pickle.dump (self.night_forecast, fileoutput)
fileoutput.close ()

až na:
tisk "fetchData: Neočekávaná chyba:", sys.exc_info () [0]
tisk "Nelze zjistit data o počasí"

else: # načíst data o počasí ze souborů nakládaných tříd
if self.options.verbose == Pravda:
tisk >> sys.stdout, «načítání dat o počasí ze souboru:«, file_path_current

fileinput = open (file_path_current, 'r')
self.current_conditions = pickle.load (vstup souboru)
fileinput.close ()

if self.options.verbose == Pravda:
tisk >> sys.stdout, "načítání dat předpovědi dne ze souborů:", file_path_dayforecast, file_path_nightforecast

fileinput = open (file_path_dayforecast, 'r')
self.day_forecast = pickle.load (vstup souboru)
fileinput.close ()

if self.options.verbose == Pravda:
tisk >> sys.stdout, «načítání dat předpovědi dne ze souborů:«, file_path_nightforecast, file_path_nightforecast

fileinput = open (file_path_nightforecast, 'r')
self.night_forecast = pickle.load (vstup souboru)
fileinput.close ()

def outputData (self):
#Snaž se:

if self.options.template! = Žádný:

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

jiný:

output = self.getOutputText (self.options.datatype, self.options.startday, self.options.endday, self.options.night, self.options.shortweekday, self.options.imperial, self.options.hideunits, self. options.spaces)

print output.encode ("utf-8")

#až na:
#print "outputData: Neočekávaná chyba:", sys.exc_info () [0]

pokud __name__ == "__main__":

parser = CommandLineParser ()
(options, args) = parser.parse_args ()

if options.verbose == Pravda:
print >> sys.stdout, "location:", options.location
tisk >> sys.stdout, "imperiální:", options.imperial
print >> sys.stdout, "datatype:", options.datatype
print >> sys.stdout, "night:", options.night
print >> sys.stdout, "start day:", options.startday
print >> sys.stdout, "end day:", options.endday
tisk >> sys.stdout, "mezery:", options.spaces
print >> sys.stdout, "verbose:", options.verbose
print >> sys.stdout, "refetch:", options.refetch

# vytvořit nový globální objekt počasí
počasí = GlobalWeather (možnosti)
weather.fetchData ()
weather.outputData ()

Vytvoříme soubor ~ / Conky / scripts / myweather.template

gedit ~ / Conky / scripts / myweather.template

vložíme následující uvnitř:

{–Datatype = DW –startday = 1}: {–datatype = CC –startday = 1}
{–Datatype = HT –startday = 1} / {–datatype = LT –startday = 1} Vítr od {–datatype = WD –startday = 1} do {–datatype = WS –startday = 1}
Vlhkost: {–datatype = HM –startday = 1} Srážky: {–datatype = PC –startday = 1}
Východ slunce: {–datatype = SR –startday = 1} Západ slunce: {–datatype = SS –startday = 1}
----------------
{–Datatype = DW –startday = 2}: {–datatype = CC –startday = 2}
{–Datatype = HT –startday = 2} / {–datatype = LT –startday = 2} Vítr od {–datatype = WD –startday = 2} do {–datatype = WS –startday = 2}
Vlhkost: {–datatype = HM –startday = 2} Srážky: {–datatype = PC –startday = 2}
Východ slunce: {–datatype = SR –startday = 2} Západ slunce: {–datatype = SS –startday = 2}
----------------
{–Datatype = DW –startday = 3}: {–datatype = CC –startday = 3}
{–Datatype = HT –startday = 3} / {–datatype = LT –startday = 3} Vítr od {–datatype = WD –startday = 3} do {–datatype = WS –startday = 3}
Vlhkost: {–datatype = HM –startday = 3} Srážky: {–datatype = PC –startday = 3}
Východ slunce: {–datatype = SR –startday = 3} Západ slunce: {–datatype = SS –startday = 3}
----------------
{–Datatype = DW –startday = 4}: {–datatype = CC –startday = 4}
{–Datatype = HT –startday = 4} / {–datatype = LT –startday = 4} Vítr od {–datatype = WD –startday = 4} do {–datatype = WS –startday = 4}
Vlhkost: {–datatype = HM –startday = 4} Srážky: {–datatype = PC –startday = 4}
Východ slunce: {–datatype = SR –startday = 4} Západ slunce: {–datatype = SS –startday = 4}

Vytvoříme soubor ~ / Conky / scripts / mail / conkyEmail.py (musíme vytvořit poštovní složku)

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

a vložte následující dovnitř:

importovat vás
importovat řetězec

# Níže zadejte své uživatelské jméno a heslo v rámci uvozovek
# např. uživatelské jméno = »uživatelské jméno» a heslo = »heslo»
uživatelské jméno = »YOUR_USUARIO_SINARROBA«
heslo = »VAŠE KLÍČ«

com = »wget -O - https: //» + uživatelské jméno + »:» + heslo + »@ mail.google.com / mail / feed / atom –no-check-certificate»

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

pokud fc == 0:
tisknout „0 nových“
jiný:
tisk str (fc) + »nové»

Takže teď máte 7 souborů:

Ve složce: ~
-> .startconky << - provede spustitelný soubor

Ve složce: ~ / Conky
-> conkymain
-> conkyforecast
-> conkymail

a ve složce: ~ / Conky / scripts
-> conkyForecast.py << - provést spustitelný soubor
-> myweather.template

a ve složce: ~ / Conky / scripts / mail
conkyEmail.py << - provede spustitelný soubor

A je to, vysvětlení, kde je uvedeno / home / user / ... vaše uživatelské jméno jde a v části, kde jsou data Gmailu, jsem zvýraznil barevně, kam musíte dát svá data.

Chcete-li zabít proces conky, napište na konzolu

killall conky

spustit conky zápis do konzoly

./.startconky

jakmile máte vše nastaveno, pokud chcete, aby conky zahájil každou relaci

Systém—> Předvolby—> Relace a ve spouštěcích programech to přidáváme

Do Name můžeme napsat Conky, do Order ./.startconky s tím, že to začne pokaždé, když zapnete počítač.

To je vše, doufám, že vám to pomůže.


Zanechte svůj komentář

Vaše e-mailová adresa nebude zveřejněna. Povinné položky jsou označeny *

*

*

  1. Odpovědný za údaje: Miguel Ángel Gatón
  2. Účel údajů: Ovládací SPAM, správa komentářů.
  3. Legitimace: Váš souhlas
  4. Sdělování údajů: Údaje nebudou sděleny třetím osobám, s výjimkou zákonných povinností.
  5. Úložiště dat: Databáze hostovaná společností Occentus Networks (EU)
  6. Práva: Vaše údaje můžete kdykoli omezit, obnovit a odstranit.