Conky, moja konfiguracja

Fecfactor poprosił mnie wczoraj o opublikowanie konfiguracji conky, którą pokazuję na zrzucie ekranu poniżej

Jak widać, jest to około 3 conky, które są wykonywane za pomocą skryptu, konfiguracja tego samego opiera się na ten post opublikowane przez użytkownika Bruce M. na forach użytkownika Ubuntu-Ar z pewnymi modyfikacjami w mail conky, co w moim przypadku dotyczy Gmaila.

W poście referencyjnym jest to bardzo dobrze wyjaśnione przez Bruce'a, ale także jako pomoc w zapamiętywaniu dla mnie, skopiuję kroki do naśladowania i kod moich conkys dla każdego, kto go ma.

Cóż, oczywiście musimy mieć zainstalowane conky, curl i python, więc wpisujemy w konsoli:

sudo apt-get zainstaluj conky curl python

Źródło weather.ttf i arrows.ttf jest tutaj. Źródło moon.ttf jest tutaj po pobraniu musisz skopiować je do / usr / share / fonts

Stwórzmy teraz nasz skrypt o nazwie ~. / Startconky

gksudo gedit ~ / .startconky

wewnątrz pustego pliku wklejamy następujące

#! / bin / bash
sleep 0 & # 0 dobre dla Xfce - użyj 20 do 30 dla Gnome
conky -c ~ / Conky / conkymain &
#sleep 0 i # 0 dobre dla Xfce - użyj 1 dla Gnome
conky -c ~ / Conky / conkyforecast &
#sleep 0 i # 0 dobre dla Xfce - użyj 1 dla Gnome
conky -c ~ / Conky / conkymail &

Teraz tworzymy plik conkymain w folderze ~ / Conky, w przeciwnym razie będziemy mieć folder Conky, będziemy musieli go utworzyć.

gedit ~ / Conky / conkymain

Używam czcionki Calibri, jeśli jej nie masz, zastąp ją dowolną czcionką.

Trzymamy się tego, co następuje

nr tła
own_window tak
own_window_transparent tak
own_window_hints undecorated, below, sticky, skip_taskbar, skip_pager
own_window_colour czarny
double_buffer tak
use_spacer lewy
use_xft tak
czcionka calibri: rozmiar = 9
xftfont calibri: rozmiar = 9
xftalfa 0.5
interwał_aktualizacji 5.0
wielkie litery nie # ustaw na tak, jeśli chcesz, aby cały tekst był pisany wielkimi literami
stippled_border 3
granica_marginesu 9
szerokość_granicy 10
default_color biały
default_outline_color czarny
default_shade_color czarny
kolor0 cyjan
color1 jasnoniebieski
kolor2 pomarańczowy
kolor 3 żółty
color4 pszenicy
kolor 5 biały
kolor 6 biały
kolor 7 biały
kolor 8 biały
kolor 9 biały
wyrównanie top_right # lub top_left, bottom_left, bottom_right
przerwa_x 10
przerwa_y 35
text_buffer_size 128 # użyj 1024 do prognozy
no_buffers yes # Odjąć bufory systemu plików od używanej pamięci?
Draw_borders nie
draw_outline yes # wzmacnia tekst, jeśli tak
draw_shades yes # shadecolor czarny

TEKST
$ {font calibri: size = 12} $ {alignc} $ {color1} $ sysname $ jądro na $ machine} $ color $ font
$ {font calibri: size = 12} $ {alignc} $ {color2} $ {exec whoami} @ $ nodename $ color $ font
$ {color0} $ {hr 1} $ kolor
$ {font calibri: size = 20} $ {alignc} $ {time% H:% M} $ font
$ {font calibri: size = 12} $ {color1} $ {alignc} $ {czas% A,% d% b. % Y} $ kolor $ czcionka
$ {color3} UpTime: $ {alignr 2} $ uptime $ color
$ {color0} $ {hr 1} $ kolor
$ {voffset 5} $ {color2} CPU: $ {alignc} $ color $ running_processes $ {kolor1} / $ kolor $ procesy $ {alignr 2} $ {kolor2} $ {cpubar cpu0 14,80} $ kolor
$ {color1} $ {voffset -16} $ {alignr 5} $ cpu% $ kolor
$ {voffset 2} $ {color1} Śr. wczytywania ($ {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} Buforowany: $ color $ {buffers} $ {alignr 2} $ {color1} Buforowany: $ color $ {cached}
$ {voffset 5} $ {color2} SWAP: $ color $ swap $ {color2} / $ color $ {swapmax} $ {alignr 2} $ {color2} $ {swapbar 14,80} $ kolor
$ {color1} $ {voffset -16} $ {alignr 5} $ swapperc%
$ {color0} $ {hr 1} $ kolor
$ {voffset 5} $ {color2} Informacje HD $ {color1} - $ kolor Darmowe $ {color1} - Używane - $ {color2} Razem
$ {voffset 5} $ {color1} Root: $ color $ {fs_free_perc /}% $ {alignr 2} $ {fs_free /} $ {color2} / $ {color1} $ {fs_used /} $ color / $ {color2} $ {fs_size /} $ kolor
$ {color1} Home: $ color $ {fs_free_perc / home / user}% $ {alignr 2} $ {fs_free / home / user} $ {color2} / $ {color1} $ {fs_used / home / user} $ color / $ {color2} $ {fs_size / home / user} $ kolor
$ {color0} $ {hr 1} $ kolor
$ {color1} Od: $ color Buenos Aires, Argentyna
$ {color1} Szer .: $ {color2} 34 ° 35'S $ {color1} Długi: $ {color2} 58 ° 21'W $ {color1} Alt: $ {color2} 25 m $ kolor
$ {voffset 5} $ {color2} $ {font calibri: size = 12} dzisiaj: $ font $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = CC} $ kolor $ {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 $ kolor
$ {alignr 50} $ {voffset -55} $ {font calibri: size = 25} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = HT} $ font
$ {alignc 20} $ {voffset -30} $ {font Arrows: size = 20} $ {color4} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = BF} $ kolor $ czcionka
$ {alignc 10} $ {voffset 5} $ {color4} Wiatr: $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = WS} $ color
$ {color1} Wilgotność: $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = HM} $ {alignr 2} $ {color1} Opady: $ {color3} $ { execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = PC} $ kolor
$ {alignc} $ {color1} Nacisk: $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = BR} - $ {color3} $ {execi 3600 python ~ / Conky /scripts/conkyForecast.py –location = ARBA0009 –datatype = BD} $ kolor
$ {color4} $ {hr} $ kolor
$ {color1} Wschód słońca: $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = SR} $ {alignr 2} $ {color1} Zachód słońca: $ {color3} $ { execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = SS} $ kolor
$ {voffset 15} $ {color1} Księżyc: $ {color4} $ {alignr 2} $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = MP} $ color
$ {voffset -20} $ {offset 80} $ {color4} $ {font moon phases: size = 20} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = MF} $ font $ kolor
$ {color0} $ {hr} $ kolor
$ {voffset 5} $ {color2} IP: $ {alignc} $ color $ {addr eth0}
$ {color1} Down: $ color $ {downspeed eth0} k / s $ {alignr 2} $ {color1} W górę: $ color $ {upspeed eth0} k / s
$ {color1} Suma: $ color $ {totaldown eth0} $ {alignr 2} $ {color1} Suma: $ color $ {totalup eth0}
$ {color1} Przychodzące: $ color $ {tcp_portmon 1 32767 count} $ {color1} Wychodzące: $ color $ {tcp_portmon 32768 61000 count} $ {alignr 2} $ {color1} Razem: $ color $ {tcp_portmon 1 65535 count}
$ {voffset 5} $ {color2} Połączenia: $ color $ {tcp_portmon 32768 61000 count} $ {alignr 2} $ {color2} Usługa / Port $ kolor
$ {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} $ kolor

tworzymy plik ~ / Conky / conkyforecast

gedit ~ / Conky / conkyforecast

i wklejamy następujące wewnątrz

nr tła
own_window tak
own_window_transparent tak
own_window_hints undecorated, below, sticky, skip_taskbar, skip_pager
own_window_colour czarny
double_buffer tak
use_spacer lewy
use_xft tak
czcionka calibri: rozmiar = 8
xftfont calibri: rozmiar = 8
xftalfa 0.5
interwał_aktualizacji 5.0
wielkie litery nie # ustaw na tak, jeśli chcesz, aby cały tekst był pisany wielkimi literami
stippled_border 3
granica_marginesu 9
szerokość_granicy 10
default_color biały
default_outline_color czarny
default_shade_color czarny
kolor0 cyjan
color1 jasnoniebieski
kolor2 pomarańczowy
kolor 3 żółty
color4 pszenicy
kolor 5 biały
kolor 6 biały
kolor 7 biały
kolor 8 biały
kolor 9 biały
wyrównanie bottom_left # lub top_left, bottom_left, bottom_right
przerwa_x 10
przerwa_y 35
text_buffer_size 1024 # użyj 1024 do prognozy
no_buffers yes # Odjąć bufory systemu plików od używanej pamięci?
Draw_borders nie
draw_outline yes # wzmacnia tekst, jeśli tak
draw_shades yes # shadecolor czarny

TEKST
$ {color4} $ {font calibri: size = 11} Rozszerzona prognoza $ czcionka $ kolor
$ {color0} $ {hr} $ kolor
$ {color4} $ {font calibri: size = 9} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –template = / home / user / Conky / scripts / myweather.template} $ font $ kolor

tworzymy plik ~ / Conky / conkymail

gedit ~ / Conky / conkymail

wklejamy do pliku następujące informacje

nr tła
own_window tak
own_window_transparent tak
own_window_hints undecorated, below, sticky, skip_taskbar, skip_pager
own_window_colour czarny
double_buffer tak
use_spacer lewy
use_xft tak
czcionka calibri: rozmiar = 8
xftfont calibri: rozmiar = 8
xftalfa 0.5
interwał_aktualizacji 5.0
wielkie litery nie # ustaw na tak, jeśli chcesz, aby cały tekst był pisany wielkimi literami
stippled_border 3
granica_marginesu 9
szerokość_granicy 10
default_color biały
default_outline_color czarny
default_shade_color czarny
kolor0 cyjan
color1 jasnoniebieski
kolor2 pomarańczowy
kolor 3 żółty
color4 pszenicy
kolor 5 biały
kolor 6 biały
kolor 7 biały
kolor 8 biały
kolor 9 biały
wyrównanie bottom_left # lub top_left, bottom_left, bottom_right
przerwa_x 565
przerwa_y 35
text_buffer_size 128 # użyj 1024 do prognozy
no_buffers yes # Odjąć bufory systemu plików od używanej pamięci?
Draw_borders nie
draw_outline yes # wzmacnia tekst, jeśli tak
draw_shades yes # shadecolor czarny

TEKST
$ {font calibri: size = 11} $ {alignc} $ {color4} Gmail
$ {color0} $ {hr} $ kolor
$ {font calibri: size = 11} $ {color4} Mamy $ {color3} $ {execi 300 python ~ / Conky / scripts / mail / conkyEmail.py} $ {color4} email (e) $ font

Tworzymy plik w ~ / Conky / scripts / conkyForecast.py (musimy stworzyć folder scripts)

gedit ~ / Conky / scripts / conkyForecast.py

#! / usr / bin / python
# - * - kodowanie: utf-8 - * -
######################################################################## #############################
# conkyForecast.py to (już nie) prosty (już) skrypt Pythona do zebrania
# szczegóły aktualnej pogody do użytku w Conky.
#
# Autor: Kaivalagi
# Utworzono: 13
# Modyfikacje:
# 14/04/2008 Zezwalaj na zakresy dni dla danych prognozy
# 14 Sprawdź łączność z usługą xoap
# 18/04/2008 Zezwalaj na ustawienie spacji dla danych wyjściowych z zakresu
# 18/04/2008 Zezwalaj na wyjście prognozy nocnej i dziennej
# 18/04/2008 Obsługa ustawień regionalnych dla opcji tekstu kodu warunku «CC», oczekuje na tłumaczenie na język hiszpański
# 18/04/2008 Używaj wytrawiania danych klas zamiast otwierania pliku XML, co pozwala na uniknięcie odpytywania danych z pamięci podręcznej
# 19/04/2008 Dodano tekst warunku w języku hiszpańskim - Dzięki Bruce M
# 19/04/2008 Dodano kontrolę isnumeryczną wszystkich wyjść numerycznych z sufiksem jednostek
# 19/04/2008 Zmieniono nazewnictwo plików marynat w celu uwzględnienia kodu lokalizacji
# 19 Dodano konwersję hiszpańskich dni tygodnia przez locale
# 20/04/2008 Dodano przyzwoity parser argumentów poleceń
# 20/04/2008 Dodano opcję –shortweekday, jeśli podany jest dzień tygodnia typ danych jest skracany do 3 znaków
# 21/04/2008 Naprawiono opcje ustawień regionalnych dla wyników prognozy
# 21/04/2008 Dodano opcję szablonu, aby umożliwić niestandardowe wyjście przy użyciu pojedynczego wywołania exec 🙂
# 21/04/2008 Dodano opcję –hideunits do usuwania, na przykład, mph i C z wyjścia
# 23/04/2008 Usunięta - opcja imperialna z szablonu, MUSI być ustawiona jako standardowa opcja w wywołaniu skryptu i nie może być używana w pliku szablonu.
# 23/04/2008 Readded - niezrównana opcja szablonu, umożliwiająca stosowanie wartości metrycznych lub imperialnych dla każdego typu danych. Uwaga podczas korzystania z szablonów opcja wiersza poleceń nie będzie działać.
# 23/04/2008 Dodano wyjście powiadamiające użytkownika, jeśli podana lokalizacja jest zła
# 24/04/2008 Dodano obsługę braku łączności, teraz przywróci dane z pamięci podręcznej (błąd, jeśli nie ma pamięci podręcznej). Testy, próbując otworzyć xoap.weather.com
# 24/04/2008 Naprawiono konwersję stopni Celsjusza na Fahrenheita
# 06/05/2008 Zaktualizowany adres URL używany po aktualizacji usługi internetowej
# 09/05/2008 Skonsolidowane dane o stanie bieżącym i prognozach w jednym wywołaniu
# 09/05/2008 Dodano wschód i zachód słońca do typów danych, są one specyficzne zarówno dla aktualnych warunków, jak i danych prognozowanych
# 09/05/2008 Dodano fazę księżyca, odczyt barometru i opis barometru do typów danych, są one specyficzne tylko dla aktualnych warunków, a więc nie dotyczy prognozowanych danych wyjściowych
# 09/05/2008 Dodano konwersję jednostek barometru z mb na cale (imperialne)
# 09/05/2008 Zaktualizowany tekst warunków w języku hiszpańskim - Dzięki Bruce M
# 10/05/2008 Dodano francuskie dane regionalne - Dzięki benpaka
# 12/05/2008 Dodano nowy typ danych BF (czcionka łożyskowa), aby zapewnić znak strzałki (używaj z czcionką Arrow.ttf) zamiast wyjścia NSEW z WD (kierunek wiatru)
# 12/05/2008 Zaktualizowano dane wyjściowe WD, aby były specyficzne dla lokalizacji, obecnie obsługuje domyślny angielski i hiszpański - dzięki Bruce M
# 18/05/2008 Dodano nowy typ danych MF (czcionka księżycowa), aby zapewnić znak czcionki księżycowej (znaki są nieprawidłowe i nie ma jeszcze dedykowanej czcionki).
# 21/05/2008 Dla bieżących warunków opcja –datatype = LT wyświetla teraz temperaturę „odczuwaną jak” zamiast bieżącej
#
# WSZYSTKO:
# Konsoliduj pliki pkl w jeden plik / klasę
# Dodaj czcionkę pogody opartą na wyjściu faz księżyca na podstawie danych ikony księżyca
# ??? Czy są jakieś dodatkowe wymagania?

importuj sys, os, socket, urllib2, datetime, time
z xml.dom importuj minidom
z importu statystyk *
z optparse import OptionParser
importuj ustawienia regionalne
importuj gettext
import marynaty
z importu matematyki *

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

klasa CommandLineParser:

parser = brak

def __init __ (self):

self.parser = OptionParser ()
self.parser.add_option («- l», »- location», dest = »location», default = »UKXX0103 ″, type =» string », metavar =» CODE », help = u» kod lokalizacji dla danych pogodowych [ domyślnie:% default], Użyj następującego adresu URL, aby określić kod lokalizacji według nazwy miasta: http://xoap.weather.com/search/search?where=Norwich »)
self.parser.add_option ("- d", "- typ danych", dest = "typ danych", default = "HT", type = "string", metavar = "DATATYPE", help = u "[domyślnie:% default] Dostępne opcje typu danych to: DW (dzień tygodnia), WF (dane wyjściowe czcionki pogodowej), LT (prognoza: niska temperatura, prąd: odczuwalna temperatura), HT (prognoza: wysoka temperatura, prąd: bieżąca temperatura), CC (bieżąca Warunki), CT (tekst warunków), PC (prawdopodobieństwo opadów), HM (wilgotność), WD (kierunek wiatru), WS (prędkość wiatru), WG (porywy wiatru), CN (nazwa miasta), SR (wschód słońca), SS (zachód słońca), MP (faza księżyca), MF (czcionka księżyca), BR (odczyt barometru), BD (opis barometru). Nie dotyczy wiersza poleceń podczas korzystania z szablonów. »)
self.parser.add_option («- s», »- startday», dest = »startday», type = »int», metavar = »NUMBER», help = u »określ numer dnia początkowego, jeśli pominięte aktualne warunki są wyprowadzane . Nie dotyczy wiersza poleceń podczas korzystania z szablonów. »)
self.parser.add_option ("- e", "- endday", dest = "endday", type = "int", metavar = "NUMBER", help = u "określ numer dnia końcowego, jeśli zostanie pominięty, tylko dane dnia początkowego jest wyjściem. Nie ma zastosowania w wierszu poleceń podczas korzystania z szablonów. »)
self.parser.add_option («- S», »- spacje», dest = »spacje», type = »int», default = 1, metavar = »NUMBER», help = u »[default:% default] Definiuje liczba spacji między wyjściami z zakresu. Nie ma zastosowania w wierszu poleceń podczas korzystania z szablonów. »)
self.parser.add_option («- t», »- template», dest = »template», type = »string», metavar = »FILE», help = u »definiuje plik szablonu do generowania danych wyjściowych w jednym wywołaniu. wyświetlany element w pliku ma postać {–datatype = HT –startday = 1}. W ramach każdego elementu możliwe są następujące opcje: –datatype, –startday, –endday, –night, –shortweekday, –imperial, –hideunits, –Space. Zwróć uwagę, że krótkie formy opcji nie są obecnie obsługiwane! Żadna z tych opcji nie ma zastosowania w wierszu poleceń podczas korzystania z szablonów. »)
self.parser.add_option («- L», »- locale», dest = »locale», type = »string», help = u »zastępuje ustawienia systemowe dla języka wyjściowego (en = angielski, es = hiszpański, fr = francuski, więcej w przyszłości) »)
self.parser.add_option ("- i", "- imperial", dest = "imperial", default = False, action = "store_true", help = u "żądaj jednostek imperialnych, jeśli pominięte dane wyjściowe są metryczne. Nie dotyczy wiersz poleceń podczas korzystania z szablonów. »)
self.parser.add_option («- n», »- night», dest = »night», default = False, action = »store_true», help = u »przełącz wyjście na dane nocne, jeśli pominięte zostaną wyprowadzone dane dzienne. Nie dotyczy wiersza poleceń podczas korzystania z szablonów. »)
self.parser.add_option («- w», »- shortweekday», dest = »shortweekday», default = False, action = »store_true», help = u »Skróć typ danych dnia tygodnia do 3 znaków. Nie dotyczy wiersz poleceń podczas korzystania z szablonów. »)
self.parser.add_option («- u», »- hideunits», dest = »hideunits», default = False, action = »store_true», help = u »Ukryj jednostki, takie jak mph lub C, symbole stopni (°) to nadal wyświetlane. Nie dotyczy wiersza poleceń podczas korzystania z szablonów. »)
self.parser.add_option ("- v", "- verbose", dest = "verbose", default = False, action = "store_true", help = u "żądaj szczegółowych danych wyjściowych, brak dobrego pomysłu podczas przeglądania conky!" )
self.parser.add_option ("- r", "- refetch", dest = "refetch", default = False, action = "store_true", help = u "pobierz dane niezależnie od wygaśnięcia danych")

def parse_args (self):
(opcje, argumenty) = self.parser.parse_args ()
return (opcje, argumenty)

def print_help (self):
return self.parser.print_help ()

klasa WeatherData:
def __init __ (self, day_of_week, low, high, condition_code, condition_text, const, wilgotność, wind_dir, wind_speed, wind_gusts, city, sunrise, sunset, moon_phase, moon_icon, bar_read, bar_desc):
self.day_of_week = u »» + day_of_week
self.low = u »» + low
self.high = u »» + high
self.condition_code = u »» + kod_warunku
self.condition_text = u »» + tekst_warunku
self.precip = u »» + str
self.humidity = u »» + wilgotność
self.wind_dir = u »» + wind_dir
self.wind_speed = u »» + wind_speed
self.wind_gusts = u »» + wind_gusts
self.city = u »» + city
self.sunrise = u »» + wschód słońca
self.sunset = u »» + zachód słońca
self.moon_phase = u »» + moon_phase
self.moon_icon = u »» + moon_icon
self.bar_read = u »» + bar_read
self.bar_desc = u »» + bar_desc

klasa WeatherText:

warunki_tekst = {
«0»: _ (u »Tornado»),
«1»: _ (u »Tropical Storm»),
«2»: _ (u »Hurricane»),
«3»: _ (u »Poważne burze»),
«4»: _ (u »burze»),
«5»: _ (u »Mieszany deszcz i śnieg»),
«6»: _ (u »Mieszany deszcz i deszcz ze śniegiem»),
«7»: _ (u »opady mieszane»),
«8»: _ (u »marznąca mżawka»),
«9»: _ (u »Mżawka»),
«10»: _ (u »marznący deszcz»),
«11»: _ (u »Prysznice»),
«12»: _ (u »Prysznice»),
«13»: _ (u »Snow Flurries»),
«14»: _ (u »przelotne opady śniegu»),
«15»: _ (u »zamieć śnieżna»),
«16»: _ (u »Śnieg»),
«17»: _ (u »Grad»),
«18»: _ (u »deszcz ze śniegiem»),
«19»: _ (u »Pył»),
«20»: _ (u »Mgła»),
«21»: _ (u »Haze»),
«22»: _ (u »Smoke»),
«23»: _ (u »Blustery»),
«24»: _ (u »Windy»),
«25»: _ (u »Zimno»),
«26»: _ (u »Pochmurno»),
«27»: _ (u »Przeważnie zachmurzenie»),
«28»: _ (u »Przeważnie zachmurzenie»),
«29»: _ (u »Częściowe zachmurzenie»),
«30»: _ (u »Częściowe zachmurzenie»),
«31»: _ (u »Wyczyść»),
«32»: _ (u »Wyczyść»),
«33»: _ (u »W porządku»),
«34»: _ (u »W porządku»),
«35»: _ (u »Mieszany deszcz i grad»),
«36»: _ (u »Hot»),
«37»: _ (u »Izolowane burze»),
«38»: _ (u »Rozproszone burze»),
«39»: _ (u »Rozproszone burze»),
«40»: _ (u »przelotne opady»),
«41»: _ (u »Ciężki śnieg»),
«42»: _ (u »przelotne opady śniegu»),
«43»: _ (u »Ciężki śnieg»),
«44»: _ (u »Częściowe zachmurzenie»),
«45»: _ (u »Piorunowe deszcze»),
«46»: _ (u »przelotne opady śniegu»),
«47»: _ (u »Izolowane burze»),
„Na”: _ (u »N / A»),
„-”: _ (a ”)
}

warunki_text_es = {
«0»: _ (u »Tornado»),
«1»: _ (u »Tropical Storm»),
«2»: _ (u »Huracá¡n»),
«3»: _ (u »Silne burze»),
«4»: _ (u »Burze»),
«5»: _ (u »Mieszany deszcz i śnieg»),
«6»: _ (u »Mieszany deszcz i deszcz ze śniegiem»),
«7»: _ (u »deszcz ze śniegiem»),
«8»: _ (u »marznąca mżawka»),
«9»: _ (u »Mżawka»),
«10»: _ (u »marznący deszcz»), # lub marznący deszcz
«11»: _ (u »Prysznice»),
«12»: _ (u »Prysznice»),
«13»: _ (u »Lekki śnieg»),
«14»: _ (u »Lekki śnieg»),
«15»: _ (u »Śnieżna zamieć»),
«16»: _ (u »Śnieg»),
«17»: _ (u »Grad»),
«18»: _ (u »deszcz ze śniegiem»),
«19»: _ (u »Proszek»),
«20»: _ (u »Mgła»),
«21»: _ (u »Haze»),
«22»: _ (u »Smoke»),
«23»: _ (u »Tempest»),
«24»: _ (u »Windy»),
«25»: _ (u »Fráo»),
«26»: _ (u »Bardzo zachmurzenie»),
«27»: _ (u »Przeważnie zachmurzenie»),
«28»: _ (u »Przeważnie zachmurzenie»),
«29»: _ (u »Częściowe zachmurzenie»),
«30»: _ (u »Częściowe zachmurzenie»),
«31»: _ (u »Wyczyść»),
«32»: _ (u »Wyczyść»),
«33»: _ (u »Coś pochmurno»),
«34»: _ (u »Coś pochmurno»),
«35»: _ (u »Deszcz z gradem»),
«36»: _ (u »Ciepło»),
«37»: _ (u »Pojedyncze burze»),
«38»: _ (u »Rozproszone burze»),
«39»: _ (u »Rozproszone burze»),
«40»: _ (u »przelotne opady»),
«41»: _ (u »Ciężki śnieg»),
«42»: _ (u »Słabe i rozproszone opady śniegu»),
«43»: _ (u »Intense Nevada»),
«44»: _ (u »Rozproszone chmury»),
«45»: _ (u »Burze»),
«46»: _ (u »Rozproszone opady śniegu»),
«47»: _ (u »Pojedyncze burze»),
„Na”: _ (u »N / A»),
„-”: _ (a ”)
}

warunki_text_fr = {
«0»: _ (u »Tornade»),
„1”: _ (u »Tempête Tropicale»),
«2»: _ (lub »Ouragan»),
«3»: _ (lub »Orages Violents»),
«4»: _ (lub »Orageux»),
„5”: _ (u »Pluie et Neige»),
„6”: _ (u »Pluie et Neige Mouillée»),
«7»: _ (u »Variable avec averses»),
„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»: _ (lub »Orages Isolés»),
«38»: _ (lub »Orages Localisés»),
«39»: _ (lub »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»: _ (lub »Orages»),
„46”: _ (u »Tempête de Neige»),
«47»: _ (lub »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 »»),
„-”: _ (lub „”)
}

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 »»),
„-”: _ (lub „”)
}

dzień_tygodnia = {
„Dzisiaj”: _ (lub „Dzisiaj”),
«Poniedziałek»: _ (u »poniedziałek»),
«Wtorek»: _ (u »wtorek»),
«Środa»: _ (u »środa»),
«Czwartek»: _ (u »czwartek»),
„Piątek”: _ (u „piątek”),
„Sobota”: _ (u „sobota”),
„Niedziela”: _ (u „Niedziela”)
}

dzień_tygodnia_short = {
„Dzisiaj”: _ (u „Teraz”),
«Poniedziałek»: _ (u »pon»),
«Wtorek»: _ (u »wt»),
„Środa”: _ (u „śr”),
«Czwartek»: _ (u »czw»),
«Piątek»: _ (u »piątek»),
„Sobota”: _ (u „sobota”),
„Niedziela”: _ (u „Niedziela”)
}

dni_tygodnia = {
„Dzisiaj”: _ (u „dzisiaj”),
„Poniedziałek”: _ (u „poniedziałek”),
«Wtorek»: _ (lub »wtorek»),
«Środa»: _ (u »środa»),
«Czwartek»: _ (u »czwartek»),
«Piątek»: _ (u »piątek»),
„Sobota”: _ (u „sobota”),
„Niedziela”: _ (u „Niedziela”)
}

day_of_week_short_en = {
„Dzisiaj”: _ (u „dzisiaj”),
„Poniedziałek”: _ (u „pon”),
«Wtorek»: _ (u »morze»),
«Środa»: _ (u »śr»),
«Czwartek»: _ (u »czw»),
«Piątek»: _ (u »fri»),
„Sobota”: _ (u „sob”),
„Niedziela”: _ (u „dom”)
}

dzień_tygodnia_fr = {
«Dzisiaj»: _ (u »Aujourd'hui»),
«Poniedziałek»: _ (u »Lundi»),
«Wtorek»: _ (u »Mardi»),
„Środa”: _ (u »Mercredi»),
«Czwartek»: _ (u »Jeudi»),
«Piątek»: _ (u »Vendredi»),
„Sobota”: _ (u „Samedi”),
„Niedziela”: _ (u „Dimanche”)
}

dzień_tygodnia_short_fr = {
«Dzisiaj»: _ (u »Auj»),
„Poniedziałek”: _ (u „Pon”),
«Wtorek»: _ (u »mar»),
„Środa”: _ (u „Mer”),
«Czwartek»: _ (u »Jeu»),
«Piątek»: _ (u »Przyjdź»),
„Sobota”: _ (u „Sam”),
„Niedziela”: _ (u „Dim”)
}

Bearing_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»),
«Nie dotyczy»: _ (u »«)
}

Bearing_text_es = {
"Siostra zakonna"),
„NNE”: _ (u »NNE»),
«NE»: _ (u »NE»),
«ENE»: _ (u »ENE»),
„E”: _ (u »E»),
„ESE”: _ (u »ESE»),
«SE»: _ (u »SE»),
„SSE”: _ (u „SSE”),
"Ich"),
„SSW”: _ (u „SSO”),
„SW”: _ (u »SO»),
"WSW": _ (u "WOW"),
„W”: _ (u »O»),
„WNW”: _ (u »ONO»),
«NW»: _ (u »NO»),
„NNW”: _ (u »NNO»),
«N / A»: _ (u »N \ A»)
}

Bearing_text_fr = {
"Siostra zakonna"),
„NNE”: _ (u »NNE»),
«NE»: _ (u »NE»),
«ENE»: _ (u »ENE»),
„E”: _ (u »E»),
„ESE”: _ (u »ESE»),
«SE»: _ (u »SE»),
„SSE”: _ (u „SSE”),
"Ich"),
„SSW”: _ (u „SSO”),
„SW”: _ (u »SO»),
"WSW": _ (u "WOW"),
„W”: _ (u »O»),
„WNW”: _ (u »ONO»),
«NW»: _ (u »NO»),
„NNW”: _ (u »NNO»),
«N / A»: _ (u »N \ A»)
}

klasa GlobalWeather:

obecne_warunki = []
prognoza_dzienna = []
noc_prognoza = []

locale = "in"

options = Brak
pogodaxmldoc = «»

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, opcje):

self.options = opcje

if self.options.locale == Brak:
spróbuj:
# self.locale = locale.getdefaultlocale () [0] [0: 2]
self.locale = «es» # odkomentuj ten wiersz, aby wymusić hiszpańskie ustawienia regionalne
# self.locale = "fr" # odkomentuj ten wiersz, aby wymusić francuskie ustawienia regionalne
z wyjątkiem:
print "locale not set"
jeszcze:
# self.locale = self.options.locale
self.locale = «es» # odkomentuj ten wiersz, aby wymusić hiszpańskie ustawienia regionalne
# self.locale = "fr" # odkomentuj ten wiersz, aby wymusić francuskie ustawienia regionalne

if self.options.verbose == Prawda:
print >> sys.stdout, "ustawienie regionalne na", self.locale

def getText (self, lista węzłów):
rc = ""
dla węzła na liście węzłów:
jeśli węzeł.nodeType == węzeł.TEXT_NODE:
rc = rc + node.dane
powrót rc

def getSpaces (self, spacje):
string = u »»
jeśli spacje == Brak:
ciąg = self.DEFAULT_SPACING
jeszcze:
for i in range (0, spacje + 1):
string = string + u »«
ciąg zwrotny

def isNumeric (self, string):
spróbuj:
dummy = float (string)
powrót True
z wyjątkiem:
powrót Fałsz

def isConnectionAvailable (self):
# upewnij się, że możemy uzyskać dostęp do serwera weather.com, otwierając adres URL
spróbuj:
Usock = urllib2.urlopen („http://xoap.weather.com”)
Usock.close ()
powrót True
z wyjątkiem:
powrót Fałsz

def getBearingText (własny, łożysko):
łożysko = pływak (łożysko)
jeśli namiar <11.25:
powrót u »N»
łożysko elif <33.75:
powrót u »NNE»
łożysko elif <56.25:
powrót u »NE»
łożysko elif <78.75:
powrót u »STY»
łożysko elif <101.25:
powrót u »E»
łożysko elif <123.75:
powrót u »ESE»
łożysko elif <146.25:
powrót u »SE»
łożysko elif <168.75:
powrót u »SSE»
łożysko elif <191.25:
powrót u »S»
łożysko elif <213.75:
powrót u »SSW»
łożysko elif <236.25:
powrót u »SW»
łożysko elif <258.75:
powrót u »WSW»
łożysko elif <281.25:
powrót u »W»
łożysko elif <303.75:
powrót u »WNW»
łożysko elif <326.25:
powrót u »NW»
łożysko elif <348.75:
powrót u »NNW»
jeszcze:
powrót «nie dotyczy»

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

def convertKilometresToMiles (self, dist):
return str (int (floor (float (dist) * 0.621371192)))

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

def getTemplateList (self, szablon):

lista szablonów = []

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

powrót templatelist

def getOutputText (self, datatype, startday, endday, night, shortweekday, imperial, hideunits, space):
#próbować:
wyjście = u »»

# zdefiniować bieżące jednostki na wyjściu
jeśli ukryte jednostki == Fałsz:
if imperial == Fałsz:
tempunit = u »° C»
speedunit = u »km / h»
pressureunit = u »mb»
jeszcze:
tempunit = u »° F»
speedunit = u »mph»
pressureunit = u »in»
jeszcze:
tempunit = u »°»
speedunit = u »»
jednostka ciśnienia = u »»

if startday == None: # aktualne warunki

if datatype == "DW":
if self.locale == "is":
jeśli krótki dzień tygodnia == Prawda:
output = WeatherText.day_of_week_short_es [self.current_conditions [0] .day_of_week]
jeszcze:
output = WeatherText.day_of_week_es [self.current_conditions [0] .day_of_week]
elif self.locale == "fr":
jeśli krótki dzień tygodnia == Prawda:
output = WeatherText.day_of_week_short_fr [self.current_conditions [0] .day_of_week]
jeszcze:
output = WeatherText.day_of_week_fr [self.current_conditions [0] .day_of_week]
jeszcze:
jeśli krótki dzień tygodnia == Prawda:
output = WeatherText.day_of_week_short [self.current_conditions [0] .day_of_week]
jeszcze:
output = WeatherText.day_of_week [self.current_conditions [0] .day_of_week]
elif datatype == "WF": # czcionka pogody
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:
jeśli imperialny == Prawda:
string = self.convertCelsiusToFahrenheit (string)
string = string + tempjednostka
wyjście = ciąg
elif datatype == "HT":
string = self.current_conditions [0] .high
if self.isNumeric (string) == True:
jeśli imperialny == Prawda:
string = self.convertCelsiusToFahrenheit (string)
string = string + tempjednostka
wyjście = ciąg
elif datatype == "CC":
if self.locale == "is":
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]
jeszcze:
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:
string = string + u »%»
wyjście = ciąg
elif datatype == "HM":
string = self.current_conditions [0] .humidity
if self.isNumeric (string) == True:
string = string + u »%»
wyjście = ciąg
elif datatype == "WD":
string = self.current_conditions [0] .wind_dir
if self.isNumeric (string) == True:
string = self.getBearingText (ciąg)

if self.locale == "is":
output = WeatherText.bearing_text_es [string]
elif self.locale == "fr":
output = WeatherText.bearing_text_fr [string]
jeszcze:
wyjście = ciąg

elif datatype == "BF":
string = self.current_conditions [0] .wind_dir
if self.isNumeric (string) == True:
string = WeatherText.bearing_arrow_font [self.getBearingText (string)]
wyjście = ciąg
elif datatype == "WS":
string = self.current_conditions [0] .wind_speed
if self.isNumeric (string) == True:
jeśli imperialny == Prawda:
string = self.convertKilometresToMiles (ciąg)
ciąg = ciąg + jednostka prędkości
wyjście = ciąg
elif datatype == "WG":
string = self.current_conditions [0] .wind_gusts
if self.isNumeric (string) == True:
jeśli imperialny == Prawda:
string = self.convertKilometresToMiles (ciąg)
ciąg = ciąg + jednostka prędkości
wyjście = ciąg
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:
jeśli imperialny == Prawda:
string = self.convertMillibarsToInches (ciąg)
struna = struna + jednostka ciśnienia
wyjście = ciąg
elif datatype == "BD":
output = self.current_conditions [0] .bar_desc
jeszcze:
output = "\ nBŁĄD: Zażądano nieznanego typu danych"

else: # dane prognozy

if endday == None: # jeśli nie ustawiono endday, użyj startday
endday = dzień rozpoczęcia

if night == True: wymagana jest # prognoza nocna

for day_number in range (startday, endday + 1):

if datatype == "DW":
if self.locale == "is":
jeśli krótki dzień tygodnia == Prawda:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_short_es [self.night_forecast [day_number] .day_of_week]
jeszcze:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_es [self.night_forecast [day_number] .day_of_week]
elif self.locale == "fr":
jeśli krótki dzień tygodnia == Prawda:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_short_fr [self.night_forecast [day_number] .day_of_week]
jeszcze:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_fr [self.night_forecast [day_number] .day_of_week]
jeszcze:
jeśli krótki dzień tygodnia == Prawda:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_short [self.night_forecast [day_number] .day_of_week]
jeszcze:
wyjście = wyjście + self.getSpaces (spacje) + WeatherText.day_of_week [self.night_forecast [day_number] .day_of_week]
elif datatype == "WF": # czcionka pogody
output = output + self.getSpaces (spacje) + WeatherText.conditions_weather_font [self.night_forecast [day_number] .condition_code]
elif datatype == "LT":
string = self.night_forecast [day_number] .low
if self.isNumeric (string) == True:
jeśli imperialny == Prawda:
string = self.convertCelsiusToFahrenheit (string)
string = string + tempjednostka
wyjście = wyjście + self.getSpaces (spacje) + ciąg

elif datatype == "HT":
string = self.night_forecast [day_number] .high
if self.isNumeric (string) == True:
jeśli imperialny == Prawda:
string = self.convertCelsiusToFahrenheit (string)
string = string + tempjednostka
wyjście = wyjście + self.getSpaces (spacje) + ciąg
elif datatype == "CC":
if self.locale == "is":
output = output + self.getSpaces (spacje) + WeatherText.conditions_text_es [self.night_forecast [day_number] .condition_code]
elif self.locale == "fr":
output = output + self.getSpaces (spacje) + WeatherText.conditions_text_fr [self.night_forecast [day_number] .condition_code]
jeszcze:
output = output + self.getSpaces (spacje) + WeatherText.conditions_text [self.night_forecast [day_number] .condition_code]
elif datatype == "CT":
output = output + self.getSpaces (spacje) + self.night_forecast [day_number] .condition_text
elif datatype == "PC":
string = self.night_forecast [day_number] .precip
if self.isNumeric (string) == True:
string = string + u »%»
wyjście = wyjście + self.getSpaces (spacje) + ciąg
elif datatype == "HM":
string = self.night_forecast [day_number] .humidity
if self.isNumeric (string) == True:
string = string + u »%»
wyjście = wyjście + self.getSpaces (spacje) + ciąg
elif datatype == "WD":
string = self.night_forecast [day_number] .wind_dir
if self.locale == "is":
wyjście = wyjście + self.getSpaces (spacje) + WeatherText.bearing_text_es [ciąg]
elif self.locale == "fr":
wyjście = wyjście + self.getSpaces (spacje) + WeatherText.bearing_text_fr [ciąg]
jeszcze:
wyjście = wyjście + self.getSpaces (spacje) + ciąg

elif datatype == "BF":
output = output + self.getSpaces (spacje) + 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:
jeśli imperialny == Prawda:
string = self.convertKilometresToMiles (ciąg)
ciąg = ciąg + jednostka prędkości
wyjście = wyjście + self.getSpaces (spacje) + ciąg
elif datatype == "WG":
string = self.night_forecast [day_number] .wind_gusts
if self.isNumeric (string) == True:
jeśli imperialny == Prawda:
string = self.convertKilometresToMiles (ciąg)
ciąg = ciąg + jednostka prędkości
wyjście = wyjście + self.getSpaces (spacje) + ciąg
elif datatype == "CN":
output = output + self.getSpaces (spacje) + self.night_forecast [day_number] .city
elif datatype == "SR":
output = output + self.getSpaces (spacje) + self.night_forecast [day_number] .sunrise
elif datatype == "SS":
output = output + self.getSpaces (spacje) + self.night_forecast [day_number] .sunset
elif datatype == "MP":
output = output + self.getSpaces (spacje) + self.night_forecast [day_number] .moon_phase
elif datatype == "MF":
output = output + self.getSpaces (spacje) + WeatherText.conditions_moon_font [self.night_forecast [day_number] .moon_icon]
elif datatype == "BR":
output = output + self.getSpaces (spacje) + self.night_forecast [day_number] .bar_read
elif datatype == "BD":
output = output + self.getSpaces (spacje) + self.night_forecast [day_number] .bar_desc
jeszcze:
output = "\ nBŁĄD: Zażądano nieznanego typu danych"
złamać

else: potrzebna prognoza na # dzień

for day_number in range (startday, endday + 1):

if datatype == "DW":
if self.locale == "is":
jeśli krótki dzień tygodnia == Prawda:
output = output + self.getSpaces (spacje) + WeatherText.day_of_week_short_es [self.day_forecast [day_number] .day_of_week]
jeszcze:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_es [self.day_forecast [day_number] .day_of_week]
elif self.locale == "fr":
jeśli krótki dzień tygodnia == Prawda:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_short_fr [self.day_forecast [day_number] .day_of_week]
jeszcze:
output = output + self.getSpaces (spacje) + WeatherText.day_of_week_fr [self.day_forecast [day_number] .day_of_week]
jeszcze:
jeśli krótki dzień tygodnia == Prawda:
output = output + self.getSpaces (spaces) + WeatherText.day_of_week_short [self.day_forecast [day_number] .day_of_week]
jeszcze:
wyjście = wyjście + self.getSpaces (spacje) + WeatherText.day_of_week [self.day_forecast [day_number] .day_of_week]
elif datatype == "WF": # czcionka pogody
output = output + self.getSpaces (spacje) + WeatherText.conditions_weather_font [self.day_forecast [day_number] .condition_code]
elif datatype == "LT":
string = self.day_forecast [day_number] .low
if self.isNumeric (string) == True:
jeśli imperialny == Prawda:
string = self.convertCelsiusToFahrenheit (string)
string = string + tempjednostka
wyjście = wyjście + self.getSpaces (spacje) + ciąg
elif datatype == "HT":
string = self.day_forecast [day_number] .high
if self.isNumeric (string) == True:
jeśli imperialny == Prawda:
string = self.convertCelsiusToFahrenheit (string)
string = string + tempjednostka
wyjście = wyjście + self.getSpaces (spacje) + ciąg
elif datatype == "CC":
if self.locale == "is":
output = output + self.getSpaces (spacje) + WeatherText.conditions_text_es [self.day_forecast [day_number] .condition_code]
elif self.locale == "fr":
output = output + self.getSpaces (spacje) + WeatherText.conditions_text_fr [self.day_forecast [day_number] .condition_code]
jeszcze:
output = output + self.getSpaces (spacje) + WeatherText.conditions_text [self.day_forecast [day_number] .condition_code]
elif datatype == "CT":
output = output + self.getSpaces (spacje) + self.day_forecast [day_number] .condition_text
elif datatype == "PC":
string = self.day_forecast [day_number] .precip
if self.isNumeric (string) == True:
string = string + u »%»
wyjście = wyjście + self.getSpaces (spacje) + ciąg
elif datatype == "HM":
string = self.day_forecast [day_number] .humidity
if self.isNumeric (string) == True:
string = string + u »%»
wyjście = wyjście + self.getSpaces (spacje) + ciąg
elif datatype == "WD":
string = self.day_forecast [day_number] .wind_dir

if self.locale == "is":
wyjście = wyjście + self.getSpaces (spacje) + WeatherText.bearing_text_es [ciąg]
elif self.locale == "fr":
wyjście = wyjście + self.getSpaces (spacje) + WeatherText.bearing_text_fr [ciąg]
jeszcze:
wyjście = wyjście + self.getSpaces (spacje) + ciąg

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:
jeśli imperialny == Prawda:
string = self.convertKilometresToMiles (ciąg)
ciąg = ciąg + jednostka prędkości
wyjście = wyjście + self.getSpaces (spacje) + ciąg
elif datatype == "WG":
string = self.day_forecast [day_number] .wind_gusts
if self.isNumeric (string) == True:
jeśli imperialny == Prawda:
string = self.convertKilometresToMiles (ciąg)
ciąg = ciąg + jednostka prędkości
wyjście = wyjście + self.getSpaces (spacje) + ciąg
elif datatype == "CN":
output = output + self.getSpaces (spacje) + self.day_forecast [day_number] .city
elif datatype == "SR":
output = output + self.getSpaces (spacje) + self.day_forecast [day_number] .sunrise
elif datatype == "SS":
output = output + self.getSpaces (spacje) + self.day_forecast [day_number] .sunset
elif datatype == "MP":
output = output + self.getSpaces (spacje) + self.day_forecast [day_number] .moon_phase
elif datatype == "MF":
output = output + self.getSpaces (spacje) + WeatherText.conditions_moon_font [self.day_forecast [day_number] .moon_icon]
elif datatype == "BR":
output = output + self.getSpaces (spacje) + self.day_forecast [day_number] .bar_read
elif datatype == "BD":
output = output + self.getSpaces (spacje) + self.day_forecast [day_number] .bar_desc
jeszcze:
output = u »\ nBŁĄD: Zażądano nieznanego typu danych»
złamać

output = u »» + output.strip (u »«) # utrata spacji początkowych / końcowych
wyjście zwrotne

#z wyjątkiem:
#print "getOutputText: Nieoczekiwany błąd:", sys.exc_info () [0]

def getOutputTextFromTemplate (self, template):
#próbować:

# klucze do danych szablonu
DATATYPE_KEY = "–datatype ="
STARTDAY_KEY = "–startday ="
ENDDAY_KEY = "–endday ="
NIGHT_KEY = "–noc"
SHORTWEEKDAY_KEY = "–shortweekday"
IMPERIAL_KEY = "–imperial"
HIDEUNITS_KEY = "–hideunits"
SPACES_KEY = "–spaces ="

wyjście = u »»

znaleziona opcja = Fałsz

# załaduj plik
spróbuj:
fileinput = open (self.options.template)
template = fileinput.read ()
fileinput.close ()
z wyjątkiem:
output = u »Nie znaleziono pliku szablonu!»

templatelist = self.getTemplateList (szablon)

# pozwala przejrzeć listę szablonów i określić wynik dla każdego znalezionego elementu
for i in range (0, len (templatelist) -1):

pos = templatelist [i] .find (DATATYPE_KEY)
jeśli pos! = -1:
optionfound = Prawda
pos = pos + len (DATATYPE_KEY)
datatype = templatelist [i] [pos: pos + 4] .strip ("}"). strip ("{"). strip ("-"). strip ("")
jeszcze:
datatype = Brak

pos = templatelist [i] .find (STARTDAY_KEY)
jeśli pos! = -1:
optionfound = Prawda
pos = pos + len (STARTDAY_KEY)
startday = int (templatelist [i] [pos: pos + 4] .strip ("}"). strip ("{"). strip ("-"). strip (""))
jeszcze:
startday = Brak

pos = templatelist [i] .find (ENDDAY_KEY)
jeśli pos! = -1:
optionfound = Prawda
pos = pos + len (ENDDAY_KEY)
endday = int (templatelist [i] [pos: pos + 4] .strip ("}"). strip ("{"). strip ("-"). strip (""))
jeszcze:
endday = Brak

pos = templatelist [i] .find (NIGHT_KEY)
jeśli pos! = -1:
optionfound = Prawda
noc = Prawda
jeszcze:
night = Fałsz

pos = templatelist [i] .find (SHORTWEEKDAY_KEY)
jeśli pos! = -1:
optionfound = Prawda
krótki dzień tygodnia = prawda
jeszcze:
krótki dzień tygodnia = Fałsz

pos = templatelist [i] .find (IMPERIAL_KEY)
jeśli pos! = -1:
optionfound = Prawda
imperialny = Prawda
jeszcze:
imperial = Fałsz

pos = templatelist [i] .find (HIDEUNITS_KEY)
jeśli pos! = -1:
optionfound = Prawda
jednostki ukryte = Prawda
jeszcze:
hideunits = Fałsz

pos = templatelist [i] .find (SPACES_KEY)
jeśli pos! = -1:
optionfound = Prawda
pos = pos + len (SPACES_KEY)
spacje = int (templatelist [i] [pos: pos + 4] .strip («}»). strip («{«). strip («-«). strip (»«))
jeszcze:
spacje = 1

if optionfound == Prawda:
templatelist [i] = self.getOutputText (typ danych, dzień rozpoczęcia, dzień końcowy, noc, krótki dzień tygodnia, imperial, hideunits, spacje)
znaleziona opcja = Fałsz

# przejrzyj listę łączącą dane wyjściowe, gdy zostały już wypełnione
dla pozycji w templatelist:
wyjście = wyjście + pozycja

wyjście zwrotne

#z wyjątkiem:
#print "getOutputTextFromTemplate: Nieoczekiwany błąd:", sys.exc_info () [0]

def fetchData (self):

# zawsze pobieraj dane metryczne, używaj funkcji konwersacji na tych danych
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:
if os.path.exists (file_path_current):
Ponowne pobieranie danych = Fałsz
else: # brak połączenia, brak pamięci podręcznej, bang!
print "Brak połączenia internetowego i brak danych o pogodzie w pamięci podręcznej."
elif self.options.refetch == Prawda:
Pobieranie danych = Prawda
jeszcze:
# czy dane wymagają ponownego pobrania?
if os.path.exists (file_path_current):
lastmodDate = time.localtime (os.stat (file_path_current) [ST_MTIME])
expiryDate = (datetime.datetime.today () - datetime.timedelta (minutes = self.EXPIRY_MINUTES)). timestuple ()

if expiryDate> lastmodDate:
Pobieranie danych = Prawda
jeszcze:
Ponowne pobieranie danych = Fałsz
jeszcze:
Pobieranie danych = Prawda

# pobrać aktualne dane dotyczące warunków, albo ze strony internetowej, albo przez „rozpakowanie”
if RefetchData == Prawda:

# uzyskać aktualne dane dotyczące warunków z usługi xoap
spróbuj:

# 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 & jednostka = m '
if self.options.verbose == Prawda:
drukuj >> sys.stdout, «pobieranie danych pogodowych z«, url

Usock = urllib2.urlopen (url)
xml = usock.read ()
Usock.close ()
self.weatherxmldoc = minidom.parseString (xml)
z wyjątkiem:
print "fetchData: Nieoczekiwany błąd:", sys.exc_info () [0]
drukuj "Nie można skontaktować się ze źródłem pogody dla aktualnych warunków"

# powiedz użytkownikowi, czy lokalizacja jest zła…
found = xml.find ("Podano nieprawidłową lokalizację")
jeśli znaleziono! = -1:
print "Podano nieprawidłową lokalizację"

# odpytuj dane pogodowe, załaduj do struktury klasowej i wytraw ją
spróbuj:

# przygotuj listy danych pogodowych
własne.bieżące_warunki = []
self.day_prognoza = []
self.night_prognoza = []

# zbierać dane ogólne
pogoda_n = self.weatherxmldoc.documentElement
location_n = weather_n.getElementsByTagName ('loc') [0]
city_n = location_n.getElementsByTagName („dnam”) [0]
city ​​= self.getText (city_n.childNodes)

# zebrać aktualne dane dotyczące warunków
day_of_week = u »Dzisiaj»
perm = u »N / A»
sunrise_n = location_n.getElementsByTagName ('sunr') [0]
sunrise = self.getText (sunrise_n.childNodes)
sunset_n = location_n.getElementsByTagName ('słońca') [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 ('wiatr') [0]
wind_speed_n = wind_n.getElementsByTagName („s”) [0]
wind_speed = self.getText (wind_speed_n.childNodes)
wind_gust_n = wind_n.getElementsByTagName („podmuch”) [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)
wilgotność_n = current_condition_n.getElementsByTagName („hmid”) [0]
wilgotność = self.getText (wilgotność_n.childNodes)
moon_n = current_condition_n.getElementsByTagName ('księżyc') [0]
moon_icon_n = moon_n.getElementsByTagName ('icon') [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, strąc, wilgotność, wind_direction, wind_speed, wind_gusts)
self.current_conditions.append (current_conditions_data)

# zbiera dane prognostyczne
bar_read = u »Nie dotyczy»
bar_desc = u »Nie dotyczy»
moon_phase = u »Nie dotyczy»
moon_icon = u »na»
prognoza_n = pogoda_n.getElementsByTagName ('dayf') [0]
day_nodes = prognoza_n.getElementsByTagName ('dzień')

na dzień w day_nodes:
day_of_week = day.getAttribute ('t')
day_of_year = day.getAttribute („dt”)
high_temp_n = day.getElementsByTagName ('cześć') [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 ('słońca') [0]
sunset = self.getText (sunset_n.childNodes)

Dane dotyczące prognozy z # dnia
daytime_n = day.getElementsByTagName ('część') [0] # dzień
condition_code_n = daytime_n.getElementsByTagName („icon”) [0]
condition_code = self.getText (condition_code_n.childNodes)
condition_n = daytime_n.getElementsByTagName („t”) [0]
condition = self.getText (condition_n.childNodes)
perm_n = daytime_n.getElementsByTagName ('ppcp') [0]
wytrącanie = self.getText (wytrącanie_n.childNodes)
wilgotność_n = daytime_n.getElementsByTagName („hmid”) [0]
wilgotność = self.getText (wilgotność_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 („podmuch”) [0]
wind_gusts = self.getText (wind_gusts_n.childNodes)
day_forecast_data = WeatherData (day_of_week, low_temp, high_temp, condition_code, condition, strącanie, wilgotność, wind_direction, wind_speed, wind_gusts, city, sunrise, sunset, moon_phase, moon_icon, bar_read, bar_desc)
self.day_forecast.append (day_forecast_data)

# dane szczegółowe prognozy nocnej
daytime_n = day.getElementsByTagName ('część') [1] # noc
condition_code_n = daytime_n.getElementsByTagName („icon”) [0]
condition_code = self.getText (condition_code_n.childNodes)
condition_n = daytime_n.getElementsByTagName („t”) [0]
condition = self.getText (condition_n.childNodes)
perm_n = daytime_n.getElementsByTagName ('ppcp') [0]
wytrącanie = self.getText (wytrącanie_n.childNodes)
wilgotność_n = daytime_n.getElementsByTagName („hmid”) [0]
wilgotność = self.getText (wilgotność_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 („podmuch”) [0]
wind_gusts = self.getText (wind_gusts_n.childNodes)
night_forecast_data = WeatherData (day_of_week, low_temp, high_temp, condition_code, condition, strącanie, wilgotność, wind_direction, wind_speed, wind_gusts, city, sunrise, sunset, moon_phase, moon_icon, bar_read, bar_desc)
self.night_forecast.append (night_forecast_data)

# wytrawiaj dane do następnego razu!
fileoutput = open (file_path_current, 'w')
pickle.dump (self.current_conditions, plikoutput)
fileoutput.close ()

fileoutput = open (file_path_dayforecast, 'w')
pickle.dump (self.day_forecast, plikoutput)
fileoutput.close ()

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

z wyjątkiem:
print "fetchData: Nieoczekiwany błąd:", sys.exc_info () [0]
print "Nie można odczytać danych pogodowych"

else: # pobierz dane pogodowe z piklowanych plików klas
if self.options.verbose == Prawda:
drukuj >> sys.stdout, «pobieranie danych pogodowych z pliku:«, ścieżka_pliku_current

fileinput = open (ścieżka_pliku_current, 'r')
self.current_conditions = pickle.load (fileinput)
fileinput.close ()

if self.options.verbose == Prawda:
drukuj >> sys.stdout, "pobieranie danych prognozy dnia z plików:", file_path_dayforecast, file_path_nightforecast

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

if self.options.verbose == Prawda:
drukuj >> sys.stdout, «pobieranie danych prognozy dnia z plików:«, file_path_nightforecast, file_path_nightforecast

fileinput = open (ścieżka_pliku_nightforecast, 'r')
self.night_forecast = pickle.load (fileinput)
fileinput.close ()

def outputData (self):
#próbować:

if self.options.template! = None:

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

jeszcze:

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")

#z wyjątkiem:
#print «outputData: Nieoczekiwany błąd:«, sys.exc_info () [0]

if __name__ == "__main__":

parser = CommandLineParser ()
(opcje, argumenty) = parser.parse_args ()

if options.verbose == Prawda:
print >> sys.stdout, "location:", options.location
print >> sys.stdout, "imperial:", 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
print >> sys.stdout, "spacje:", opcje.spaces
print >> sys.stdout, "verbose:", options.verbose
print >> sys.stdout, "refetch:", options.refetch

# utwórz nowy globalny obiekt pogodowy
pogoda = GlobalWeather (opcje)
weather.fetchData ()
weather.outputData ()

Tworzymy plik ~ / Conky / scripts / myweather.template

gedit ~ / Conky / scripts / myweather.template

wklejamy w środku:

{–Datatype = DW –startday = 1}: {–datatype = CC –startday = 1}
{–Datatype = HT –startday = 1} / {–datatype = LT –startday = 1} Wiatr od {–datatype = WD –startday = 1} do {–datatype = WS –startday = 1}
Wilgotność: {–datatype = HM –startday = 1} Opady: {–datatype = PC –startday = 1}
Wschód słońca: {–datatype = SR –startday = 1} Zachód słońca: {–datatype = SS –startday = 1}
————————————————
{–Datatype = DW –startday = 2}: {–datatype = CC –startday = 2}
{–Datatype = HT –startday = 2} / {–datatype = LT –startday = 2} Wiatr od {–datatype = WD –startday = 2} do {–datatype = WS –startday = 2}
Wilgotność: {–datatype = HM –startday = 2} Opady: {–datatype = PC –startday = 2}
Wschód słońca: {–datatype = SR –startday = 2} Zachód słońca: {–datatype = SS –startday = 2}
————————————————
{–Datatype = DW –startday = 3}: {–datatype = CC –startday = 3}
{–Datatype = HT –startday = 3} / {–datatype = LT –startday = 3} Wiatr od {–datatype = WD –startday = 3} do {–datatype = WS –startday = 3}
Wilgotność: {–datatype = HM –startday = 3} Opady: {–datatype = PC –startday = 3}
Wschód słońca: {–datatype = SR –startday = 3} Zachód słońca: {–datatype = SS –startday = 3}
————————————————
{–Datatype = DW –startday = 4}: {–datatype = CC –startday = 4}
{–Datatype = HT –startday = 4} / {–datatype = LT –startday = 4} Wiatr od {–datatype = WD –startday = 4} do {–datatype = WS –startday = 4}
Wilgotność: {–datatype = HM –startday = 4} Opady: {–datatype = PC –startday = 4}
Wschód słońca: {–datatype = SR –startday = 4} Zachód słońca: {–datatype = SS –startday = 4}

Tworzymy plik ~ / Conky / scripts / mail / conkyEmail.py (musimy stworzyć folder poczty)

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

i wklej następujące elementy:

zaimportować cię
ciąg importu

#Wprowadź poniżej swoją nazwę użytkownika i hasło w cudzysłowie
# np. nazwa użytkownika = »nazwa użytkownika» i hasło = »hasło»
nazwa użytkownika = »YOUR_USUARIO_SINARROBA«
hasło = »TWÓJ KLUCZ«

com = »wget -O - https: //» + nazwa użytkownika + »:» + hasło + »@ 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 [indeks + 11: indeks2])

jeśli fc == 0:
drukuj "0 nowych"
jeszcze:
print str (fc) + »nowy»

Więc teraz masz 7 plików:

W folderze: ~
-> .startconky << - uczyń plik wykonywalny

W folderze: ~ / Conky
-> conkymain
-> conkyforecast
-> conkymail

oraz w folderze: ~ / Conky / scripts
-> conkyForecast.py << - uczyń plik wykonywalny
-> myweather.template

oraz w folderze: ~ / Conky / scripts / mail
conkyEmail.py << - uczyń plik wykonywalny

I to wszystko, wyjaśnienia, gdzie jest napisane / home / user / ... twoja nazwa użytkownika i część, w której trafiają dane Gmaila, zaznaczyłem kolorami, gdzie musisz umieścić swoje dane.

aby zabić proces conky napisz do konsoli

zabij wszystkich conky

uruchomić conky i napisać do konsoli

./.startconky

gdy już wszystko ustawisz, jeśli chcesz, aby conky zaczynał każdą sesję

System—> Preferencje—> Sesje iw programach startowych dodajemy to

W Name możemy napisać Conky, w Order ./.startconky z tym, że będzie się uruchamiał za każdym razem, gdy włączysz komputer.

To wszystko, mam nadzieję, że ci to pomoże.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.