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 czarnyTEKST
$ {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 czarnyTEKST
$ {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 czarnyTEKST
$ {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 tekstklasa 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_descklasa 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 regionalneif self.options.verbose == Prawda:
print >> sys.stdout, "ustawienie regionalne na", self.localedef 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 rcdef 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 zwrotnydef isNumeric (self, string):
spróbuj:
dummy = float (string)
powrót True
z wyjątkiem:
powrót Fałszdef 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łszdef 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ągelif 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ęciaif 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ągelif 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ągelif 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_dirif 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ągelif 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 = Brakpos = 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 = Brakpos = 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 = Brakpos = templatelist [i] .find (NIGHT_KEY)
jeśli pos! = -1:
optionfound = Prawda
noc = Prawda
jeszcze:
night = Fałszpos = templatelist [i] .find (SHORTWEEKDAY_KEY)
jeśli pos! = -1:
optionfound = Prawda
krótki dzień tygodnia = prawda
jeszcze:
krótki dzień tygodnia = Fałszpos = templatelist [i] .find (IMPERIAL_KEY)
jeśli pos! = -1:
optionfound = Prawda
imperialny = Prawda
jeszcze:
imperial = Fałszpos = templatelist [i] .find (HIDEUNITS_KEY)
jeśli pos! = -1:
optionfound = Prawda
jednostki ukryte = Prawda
jeszcze:
hideunits = Fałszpos = 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 = 1if 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 + pozycjawyjś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«, urlUsock = 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_currentfileinput = 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_nightforecastfileinput = 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_nightforecastfileinput = 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.