Conky,我的設置

Fecfactor昨天要求我發布以下屏幕快照中顯示的conky的配置

如您所見,有3個conky,通過腳本執行,其配置基於 這篇文章 由用戶Bruce M.發表在的論壇中 Ubuntu-Ar 在郵件conky中進行了一些修改,在我看來,這是針對Gmail的。

在參考文章中,Bruce對此進行了很好的解釋,但作為對我的記憶幫助,我將復制遵循的步驟以及我的conkys代碼(無論誰擁有)。

好吧,當然,我們需要安裝conky,curl和python,因此我們在控制台中輸入:

須藤apt-get install conky curl python

weather.ttf和arrow.ttf的來源 在這兒。 moon.ttf的來源 在這兒 下載後,您必須將它們複製到/ usr / share / fonts

現在讓我們創建一個名為〜。/ Startconky的腳本。

gksudo gedit〜/ .startconky

在空文件中,我們粘貼以下內容

#!/斌/慶典
sleep 0&#0對Xfce有好處-Gnome使用20到30
conky -c〜/ Conky / conkymain和
#sleep 0&#0對Xfce有用-對Gnome使用1
conky -c〜/ Conky / conkyforecast&
#sleep 0&#0對Xfce有用-對Gnome使用1
conky -c〜/ Conky / conkymail和

現在,我們在〜/ Conky文件夾中創建conkymain文件,否則,我們將創建Conky文件夾。

gedit〜/ Conky / conkymain

我使用Calibri字體,如果沒有的話,請替換為所需的字體。

我們堅持下面的內容

背景編號
own_window是
own_window_transparent是
own_window_hints未經裝飾,在下方,粘滯,skip_taskbar,skip_pager
own_window_colour黑色
double_buffer是
use_spacer左
use_xft是
字體校準:大小= 9
xftfont calibri:大小= 9
xftalpha 0.5
更新間隔 5.0
如果您希望所有文本都使用大寫字母,則將#設置為yes
點畫的邊界3
邊界邊距 9
邊框寬度 10
default_color白色
default_outline_color黑色
default_shade_color黑色
顏色0青色
color1淺藍色
color2橙色
顏色3黃色
color4小麥
color5白色
color6白色
color7白色
color8白色
color9白色
對齊top_right#或top_left,bottom_left,bottom_right
間隙_x 10
差距35
text_buffer_size 128#將1024用於預測
no_buffers yes#從使用的內存中減去文件系統緩衝區?
draw_borders否
draw_outline yes#如果是,則放大文本
draw_shades是#shadecolor黑色

TEXT
$ {font calibri:size = 12} $ {alignc} $ {color1} $ sysname $ $計算機上的內核} $ color $ font
$ {font calibri:size = 12} $ {alignc} $ {color2} $ {exec whoami} @ $ nodename $ color $ font
$ {color0} $ {hr 1} $ color
$ {font calibri:size = 20} $ {alignc} $ {time%H:%M} $ font
$ {font calibri:size = 12} $ {color1} $ {alignc} $ {time%A,%d%b。 %Y} $ color $字體
$ {color3}正常運行時間:$ {alignr 2} $正常運行時間$ color
$ {color0} $ {hr 1} $ color
$ {voffset 5} $ {color2} CPU:$ {alignc} $ color $ running_processes $ {color1} / $ color $進程$ {alignr 2} $ {color2} $ {cpubar cpu0 14,80} $ color
$ {color1} $ {voffset -16} $ {alignr 5} $ cpu%$ color
$ {voffset 2} $ {color1}加載平均($ {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 $ {aligner 2} $ {color2} $ {membar 14,80} $ color
$ {color1} $ {voffset -16} $ {alignr 5} $ memperc%$ color
$ {voffset 2} $ {color1}緩衝:$ color $ {buffers} $ {alignr 2} $ {color1}緩存:$ color $ {cached}
$ {voffset 5} $ {color2}交換:$ color $ swap $ {color2} / $ color $ {swapmax} $ {alignr 2} $ {color2} $ {swapbar 14,80} $ color
$ {color1} $ {voffset -16} $ {alignr 5} $ swapperc%
$ {color0} $ {hr 1} $ color
$ {voffset 5} $ {color2} HD信息$ {color1}-$ color Free $ {color1}-二手-$ {color2}合計
$ {voffset 5} $ {color1}根:$ color $ {fs_free_perc /}%$ {alignr 2} $ {fs_free /} $ {color2} / $ {color1} $ {fs_used /} $ color / $ {color2} $ {fs_size /} $ color
$ {color1}主頁:$ color $ {fs_free_perc /家庭/用戶}%$ {alignr 2} $ {fs_free /家庭/用戶} $ {color2} / $ {color1} $ {fs_used /家庭/用戶} $ color / $ {color2} $ {fs_size /家庭/用戶} $ color
$ {color0} $ {hr 1} $ color
$ {color1}來自:$ color布宜諾斯艾利斯,阿根廷
$ {color1}緯度:$ {color2} 34°35'S $ {color1}長:$ {color2} 58°21'W $ {color1} Alt:$ {color2} 25 m $ color
$ {voffset 5} $ {color2} $ {font calibri:size = 12}今天:$ font $ {color3} $ {execi 3600 python〜/ Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = CC} $ color $ {alignr 2} $ {color1} ST:$ {color2} $ {execi 3600 python〜/ Conky /腳本/ conkyForecast.py –位置= ARBA0009 –數據類型= LT}
$ {color3} $ {font Weather:size = 50} $ {execi 3600 python〜/ Conky /腳本/ conkyForecast.py –位置= ARBA0009 –數據類型= WF} $ font $ color
$ {alignr 50} $ {voffset -55} $ {font calibri:size = 25} $ {execi 3600 python〜/ Conky /腳本/ conkyForecast.py –位置= ARBA0009 –數據類型= HT} $字體
$ {alignc 20} $ {voffset -30} $ {font Arrows:size = 20} $ {color4} $ {execi 3600 python〜/ Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = BF} $ color $字形
$ {alignc 10} $ {voffset 5} $ {color4}風:$ {execi 3600 python〜/ Conky /腳本/ conkyForecast.py –位置= ARBA0009 –數據類型= WS} $ color
$ {color1}濕度:$ {color3} $ {execi 3600 python〜/ Conky /腳本/ conkyForecast.py –位置= ARBA0009 –數據類型= HM} $ {alignr 2} $ {color1}降水:$ {color3} $ { execi 3600 python〜/ Conky /腳本/ conkyForecast.py –位置= ARBA0009 –數據類型= PC} $ color
$ {alignc} $ {color1}壓力:$ {color3} $ {execi 3600 python〜/ Conky /腳本/ conkyForecast.py –位置= ARBA0009 –數據類型= BR}-$ {color3} $ {execi 3600 python〜/ Conky /scripts/conkyForecast.py –位置= ARBA0009 –數據類型= BD} $ color
$ {color4} $ {hr} $ color
$ {color1}日出:$ {color3} $ {execi 3600 python〜/ Conky /腳本/ conkyForecast.py –位置= ARBA0009 –數據類型= SR} $ {alignr 2} $ {color1}日落:$ {color3} $ { execi 3600 python〜/ Conky /腳本/ conkyForecast.py –位置= ARBA0009 –數據類型= SS} $ color
$ {voffset 15} $ {color1}月亮:$ {color4} $ {alignr 2} $ {color3} $ {execi 3600 python〜/ Conky /腳本/ conkyForecast.py –位置= ARBA0009 –數據類型= MP} $ color
$ {voffset -20} $ {offset 80} $ {color4} $ {font moon phases:size = 20} $ {execi 3600 python〜/ Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = MF} $ font顏色
$ {color0} $ {hr} $ color
$ {voffset 5} $ {color2} IP:$ {alignc} $ color $ {addr eth0}
$ {color1}下降:$ color $ {下降速度eth0} k / s $ {aligner 2} $ {color1}上升:$ color $ {upspeed eth0} k / s
$ {color1}合計:$ color $ {totaldown eth0} $ {alignr 2} $ {color1}合計:$ color $ {totalup eth0}
$ {color1}入站:$ color $ {tcp_portmon 1 32767計數} $ {color1}出站:$ color $ {tcp_portmon 32768 61000計數} $ {alignr 2} $ {color1}總計:$ color $ {tcp_portmon 1 65535計數}
$ {voffset 5} $ {color2}連接:$ color $ {tcp_portmon 32768 61000 count} $ {alignr 2} $ {color2}服務/端口$ color
$ {voffset 5} $ {tcp_portmon 32768 61000 rhost 0} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 0}
$ {tcp_portmon 32768 61000 rhost 1} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 1}
$ {tcp_portmon 32768 61000 rhost 2} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 2}
$ {tcp_portmon 32768 61000 rhost 3} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 3}
$ {tcp_portmon 32768 61000 rhost 4} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 4}
$ {tcp_portmon 32768 61000 rhost 5} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 5} $顏色

我們創建文件〜/ Conky / conkyforecast

gedit〜/ Conky / conkyforecast

然後將以下內容粘貼到內部

背景編號
own_window是
own_window_transparent是
own_window_hints未經裝飾,在下方,粘滯,skip_taskbar,skip_pager
own_window_colour黑色
double_buffer是
use_spacer左
use_xft是
字體校準:大小= 8
xftfont calibri:大小= 8
xftalpha 0.5
更新間隔 5.0
如果您希望所有文本都使用大寫字母,則將#設置為yes
點畫的邊界3
邊界邊距 9
邊框寬度 10
default_color白色
default_outline_color黑色
default_shade_color黑色
顏色0青色
color1淺藍色
color2橙色
顏色3黃色
color4小麥
color5白色
color6白色
color7白色
color8白色
color9白色
對齊bottom_left#或top_left,bottom_left,bottom_right
間隙_x 10
差距35
text_buffer_size 1024#將1024用於預測
no_buffers yes#從使用的內存中減去文件系統緩衝區?
draw_borders否
draw_outline yes#如果是,則放大文本
draw_shades是#shadecolor黑色

TEXT
$ {color4} $ {font calibri:size = 11}擴展的預測$ font $ color
$ {color0} $ {hr} $ color
$ {color4} $ {font calibri:size = 9} $ {execi 3600 python〜/ Conky /腳本/ conkyForecast.py –位置= ARBA0009 –template = /家庭/用戶/ Conky /腳本/ myweather.template} $ font $顏色

我們創建文件〜/ Conky / conkymail

gedit〜/ Conky / conkymail

我們將以下內容粘貼到文件中

背景編號
own_window是
own_window_transparent是
own_window_hints未經裝飾,在下方,粘滯,skip_taskbar,skip_pager
own_window_colour黑色
double_buffer是
use_spacer左
use_xft是
字體校準:大小= 8
xftfont calibri:大小= 8
xftalpha 0.5
更新間隔 5.0
如果您希望所有文本都使用大寫字母,則將#設置為yes
點畫的邊界3
邊界邊距 9
邊框寬度 10
default_color白色
default_outline_color黑色
default_shade_color黑色
顏色0青色
color1淺藍色
color2橙色
顏色3黃色
color4小麥
color5白色
color6白色
color7白色
color8白色
color9白色
對齊bottom_left#或top_left,bottom_left,bottom_right
間隙_x 565
差距35
text_buffer_size 128#將1024用於預測
no_buffers yes#從使用的內存中減去文件系統緩衝區?
draw_borders否
draw_outline yes#如果是,則放大文本
draw_shades是#shadecolor黑色

TEXT
$ {font calibri:size = 11} $ {alignc} $ {color4} Gmail
$ {color0} $ {hr} $ color
$ {font calibri:size = 11} $ {color4}我們有$ {color3} $ {execi 300 python〜/ Conky /腳本/ mail / conkyEmail.py} $ {color4}電子郵件$字體

我們在〜/ Conky / scripts / conkyForecast.py中創建一個文件(我們必須創建scripts文件夾)

gedit〜/ Conky /腳本/ conkyForecast.py

#!/ usr / bin / python
#-*-編碼:utf-8-*-
################################################ ############################
#conkyForecast.py是一個(不再是)簡單的(不再是)Python腳本來收集
#當前天氣在conky中使用的詳細信息。
#
#作者:Kaivalagi
#創建時間:13/04/2008
#修改:
#14/04/2008允許預報數據的日期範圍
#14/04/2008檢查與xoap服務的連接
#18/04/2008允許為遠程輸出設置空格
#18/04/2008允許日夜預報輸出
#18/04/2008支持條件代碼文本“ CC”選項的語言環境,等待西班牙語翻譯
#18/04/2008對類數據使用酸洗而不是打開xml,這樣就無需詢問緩存的數據
#19/04/2008添加了西班牙語條件文本-感謝Bruce M
#19/04/2008在所有後綴為單位的數字輸出上添加了等數字檢查
#19/04/2008修改泡菜文件的命名以包含位置代碼
#19/04/2008添加了通過語言環境的西班牙語工作日轉換
#20/04/2008添加了體面的命令參數解析器
#20/04/2008添加了–shortweekday選項,如果給定的是星期幾,則數據類型縮短為3個字符
#21/04/2008固定的區域設置選項,用於預測輸出
#21/04/2008添加了–template選項,以允許使用單個exec調用自定義輸出🙂
#21/04/2008添加了–hideunits選項,可從輸出中刪除例如mph和C
#23/04/2008從模板中刪除了–imperial選項,該選項必須在腳本調用中設置為標準選項,並且不能在模板文件中使用。
#23/04/2008讀取-模板的英制選項,啟用每個數據類型的公製或英制值。 請注意,在使用模板時,命令行選項將不起作用。
#23/04/2008添加了輸出,通知用戶指定的位置是否錯誤
#24/04/2008增加了對不連接的處理,現在將恢復為緩存的數據(如果不存在緩存,則會出錯)。 通過嘗試打開xoap.weather.com進行測試
#24/04/2008固定將攝氏溫度轉換為華氏度
#06/05/2008更新Web服務後使用的更新URL
#09/05/2008將當前狀態和預測數據整合到一個調用中
#09/05/2008為數據類型添加了日出和日落,這些特定於當前條件和預測數據
#09/05/2008在數據類型中添加了月相,氣壓計讀數和氣壓計說明,這些僅特定於當前條件,因此預測輸出中的N / A也是如此
#09/05/2008增加了氣壓計的單位轉換,從mb到英寸(英制)
#09/05/2008更新了西班牙文條件文本-謝謝Bruce M
#10/05/2008添加了法語語言環境數據-謝謝benpaka
#12/05/2008添加了新的BF(軸承字體)數據類型以提供箭頭字符(與Arrow.ttf字體一起使用),而不是WD的NSEW輸出(風向)
#12/05/2008將WD輸出更新為特定於語言環境,當前支持默認英語和西班牙語-感謝Bruce M
#18/05/2008添加了新的MF(月亮字體)數據類型以提供月亮字體字符(字符不正確,尚無專用字體)。
#21/05/2008對於當前條件,–datatype = LT選項現在顯示“感覺像”溫度,而不是當前溫度
#
# 一切:
#將pkl文件合併為一個文件/類
#添加基於月亮相位輸出的天氣字體,基於月亮圖標數據
#??? 還有其他要求嗎?

導入sys,os,socket,urllib2,datetime,time
從xml.dom導入minidom
來自統計信息導入*
從optparse導入OptionParser
導入語言環境
導入gettext
進口泡菜
從數學導入*

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

CommandLineParser類:

解析器=無

def __init __(個體):

self.parser = OptionParser()
self.parser.add_option(«-l»,»-location»,dest =»location»,默認=»UKXX0103'',類型=»字符串»,metavar =»代碼»,help = u»天氣數據的位置代碼[默認值:%default],請使用以下網址按城市名稱確定您的位置代碼:http://xoap.weather.com/search/search?where=Norwich»)
self.parser.add_option(“-d”,“-數據類型”,dest =“數據類型”,默認=“ HT”,類型=“字符串”,metavar =“數據類型”,help = u“ [[默認:%默認]]數據類型選項包括:DW(星期幾),WF(天氣字體輸出),LT(預測:低溫,當前:感覺像溫度),HT(預測:高溫,當前:當前溫度),CC(當前條件),CT(條件文本),PC(降水機會),HM(濕度),WD(風向),WS(風速),WG(風陣風),CN(城市名稱),SR(日出),SS (日落),MP(月相),MF(月球字體),BR(晴雨表讀數),BD(晴雨表說明)。在使用模板時不適用於命令行。»)
self.parser.add_option(«-s»,»-startday»,dest =»startday»,類型=»int»,metavar =»NUMBER»,help = u»定義起始日期編號,如果省略當前條件則輸出。在使用模板時不適用於命令行。»)
self.parser.add_option(“-e”,“-endday”,dest =“ endday”,type =“ int”,metavar =“ NUMBER”,help = u“定義結束日期數字,如果省略則僅是開始日期數據輸出。在使用模板時不適用於命令行。»)
self.parser.add_option(«-S»,»-space»,dest =»spaces,type =»int»,默認= 1,metavar =»NUMBER»,help = u»[默認:%default]範圍輸出之間的空格數。使用模板時不適用於命令行。»)
self.parser.add_option(«-t»,»-template»,dest =»template»,type =»string»,metavar =»FILE»,help = u»定義一個模板文件以在一次調用中生成輸出。文件中的可顯示項目的格式為{–datatype = HT –startday = 1}。每個項目中可能包含以下選項:–datatype,–startday,–endday,–night,–shortweekday,–imperial,–hideunits, –空格。請注意,當前不支持選項的短格式!使用模板時,這些選項均不適用於命令行。
self.parser.add_option(«-L»,»-locale»,dest =»locale»,type =»string»,help = u»覆蓋語言輸出的系統語言環境(en =英語,es =西班牙文,fr =法語,更多內容)»)
self.parser.add_option(“-i”,“-imperial”,dest =“ imperial”,默認= False,action =“ store_true”,help = u“請求英制單位,如果省略的輸出是公制。不適用於使用模板時的命令行。»)
self.parser.add_option(«-n»,»-night»,dest =»night»,默認= False,action =»store_true»,help = u»將輸出切換為夜間數據,如果省略則將輸出日間輸出。使用模板時不適用於命令行。»)
self.parser.add_option(«-w»,»-shortweekday»,dest =»shortweekday»,默認= False,action =»store_true»,help = u»將星期幾數據類型縮短為3個字符。不適用於使用模板時的命令行。»)
self.parser.add_option(«-u»,»-hideunits»,dest =»hideunits»,默認= False,action =»store_true»,help = u»隱藏單位,例如mph或C,度數符號(°)是仍顯示。使用模板時不適用於命令行。»)
self.parser.add_option(“ -v”,“-verbose”,dest =“ verbose”,默認= False,action =“ store_true”,help = u“請求詳細輸出,通過conky運行時沒有什麼好主意!” )
self.parser.add_option(“-r”,“-refetch”,dest =“ refetch”,默認= False,action =“ store_true”,help = u“無論數據到期如何都獲取數據”)

def parse_args(個體):
(選項,args)= self.parser.parse_args()
返回(選項,參數)

def print_help(個體):
返回self.parser.print_help()

WeatherData類:
def __init __(自身,day_of_week,低,高,condition_code,condition_text,precip,濕度,wind_dir,wind_speed,wind_gusts,城市,日出,日落,moon_phase,moon_icon,bar_read,bar_desc):
self.day_of_week = u»»+ day_of_week
self.low = u»»+低
self.high = u»»+高
self.condition_code = u»»+ condition_code
self.condition_text = u»»+ condition_text
self.precip = u»»+ precip
self.humidity = u»»+濕度
self.wind_dir = u»»+ wind_dir
self.wind_speed = u»»+ wind_speed
self.wind_gusts = u»»+ wind_gusts
self.city = u»»+城市
self.sunrise = u»»+日出
self.sunset = u»»+日落
self.moon_phase = u»»+ moon_phase
self.moon_icon = u»»+ moon_icon
self.bar_read = u»»+ bar_read
self.bar_desc = u»»+ bar_desc

WeatherText類:

條件文本= {
«0»:_(u»龍捲風»),
«1»:_(u»熱帶風暴»),
«2»:_(u»颶風»),
«3»:_(u»嚴重雷暴»),
«4»:_(u»雷暴»),
«5»:_(u»雨和雪混合»,
«6»:_(u»雨夾雪和雨夾雪»),
«7»:_(u»混合降水»),
«8»:_(u»凍毛毛雨»),
«9»:_(u»毛毛雨»),
«10»:_(u»凍雨»),
«11»:_(u»Showers»),
«12»:_(u»Showers»),
«13»:_(u»雪亂»),
«14»:_(u»小雪陣雨»),
«15»:_(u»吹雪»),
«16»:_(u»Snow»),
«17»:_(u»冰雹»),
«18»:_(u»雨夾雪»),
«19»:_(u»灰塵»),
«20»:_(u»霧»),
«21»:_(u»陰霾»),
«22»:_(u»煙霧»),
«23»:_(u»暴躁»),
«24»:_(u»Windy»),
«25»:_(u»冷»),
«26»:_(u»陰天»),
«27»:_(u»大部分多雲»),
«28»:_(u»大部分多雲»),
«29»:_(u(部分多雲),),
«30»:_(u(部分多雲),),
«31»:_(u»清除»),
«32»:_(u»清除»),
«33»:_(u»一般»),
«34»:_(u»一般»),
«35»:_(u»雨和冰雹混合»),
«36»:_(u»Hot»),
«37»:_(u»孤立的雷暴»),
«38»:_(u»零星雷暴»),
«39»:_(u»零星雷暴»),
«40»:_(u»零星陣雨»),
«41»:_(u»大雪»),
«42»:_(u»零星的陣雪»,
«43»:_(u»大雪»),
«44»:_(u(部分多雲),),
«45»:_(u»雷陣雨»),
«46»:_(u»下雪了»),
«47»:_(u»孤立的雷暴»),
«Na»:_(u»N / A»),
“-“: _(一個”)
}

condition_text_es = {
«0»:_(u»龍捲風»),
«1»:_(u»熱帶風暴»),
«2»:_(u»Huracá¡n»),
«3»:_(u»強風暴»),
«4»:_(u»暴風雨»),
«5»:_(u»雨和雪混合»,
«6»:_(u»雨夾雪和雨夾雪»),
«7»:_(u»雨夾雪),
«8»:_(u»凍毛毛雨»),
«9»:_(u»毛毛雨»),
«10»:_(u»凍雨»),#或凍雨
«11»:_(u»Showers»),
«12»:_(u»Showers»),
«13»:_(u»小雪»),
«14»:_(u»小雪»),
«15»:_(u»雪暴雪»),
«16»:_(u»Snow»),
«17»:_(u»冰雹»),
«18»:_(u»雨夾雪),
«19»:_(u»粉末»),
«20»:_(u»霧»),
«21»:_(u»陰霾»),
«22»:_(u»煙霧»),
«23»:_(u»Tempest»),
«24»:_(u»Windy»),
«25»:_(u»Fráo»),
«26»:_(u»非常多雲»),
«27»:_(u»大部分多雲»),
«28»:_(u»大部分多雲»),
«29»:_(u“部分多雲”),
«30»:_(u“部分多雲”),
«31»:_(u»清除»),
«32»:_(u»清除»),
«33»:_(u»多雲的地方»),
«34»:_(u»多雲的地方»),
«35»:_(u»下雨有雹»),
«36»:_(u»Heat»),
«37»:_(u»孤立的暴風雨»),
«38»:_(u»零星的暴風雨»),
«39»:_(u»零星的暴風雨»),
«40»:_(u»零星陣雨»),
«41»:_(u»大雪»),
«42»:_(u»弱雪和零星降雪»),
«43»:_(u»內華達州強烈»),
«44»:_(u»“零星的雲”),
«45»:_(u»暴風雨»),
«46»:_(u»零星的降雪»),
«47»:_(u»孤立的暴風雨»),
«Na»:_(u»N / A»),
“-“: _(一個”)
}

condition_text_fr = {
«0»:_(u»Tornade»),
«1»:_(u»TempêteTropicale»),
«2»:_(或»Ouragan»),
«3»:_(或»暴力騷擾»),
«4»:_(或»Orageux»),
«5»:_(u»Pluie et Neige»),
«6»:_(u»Pluie et NeigeMouillée»),
«7»:_(u»變量厭惡厭惡»),
«8»:_(u»Bruine Givrante»),
«9»:_(u»Bruine»),
«10»:_(u»Pluie Glacante»),
«11»:_(u»Averses),
«12»:_(u»Averses),
«13»:_(u»LégèreNeige»),
«14»:_(u»Forte Neige»),
«15»:_(u»Tempêtede Neige»),
«16»:_(u»Neige»),
«17»:_(u»Grêle»),
«18»:_(u»Pluie / Neige»),
«19»:_(u»Nuage depoussiè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»Disséminés»),
«30»:_(u»Disséminés»),
«31»:_(u»Beau»),
«32»:_(u»Beau»),
«33»:_(u»BellesÉclaircies»),
«34»:_(u»BellesÉclaircies»),
«35»:_(u»Pluie avecGrêle»),
«36»:_(u»Chaleur»),
«37»:_(或»OragesIsolés»),
«38»:_(或»OragesLocalisés»),
«39»:_(或»OragesLocalisés»),
«40»:_(u»AlocalsLocalisées»),
«41»:_(u»Neige Lourde»),
«42»:_(u»Tempêtede NeigeLocalisées»),
«43»:_(u»Neige Lourde»),
«44»:_(u»Disséminés»),
«45»:_(或»Orages»),
«46»:_(u»Tempêtede Neige»),
«47»:_(或»OragesIsolés»),
«Na»:_(u»N / A»),
“-“: _(一個”)
}

條件_天氣_字體= {
«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»»),
“-“: _(或者””)
}

condition_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»»),
“-“: _(或者””)
}

星期幾 = {
“今天”:_(或“今天”),
«星期一»:_(u»星期一»),
«星期二»:_(u»星期二»),
«星期三»:_(u»星期三»),
«星期四»:_(u»星期四»),
“星期五”:_(u“星期五”),
“ Saturday”:_(u“ Saturday”),
“週日”:_(u“週日”)
}

週內短日 = {
“今天”:_(u“ Now”),
«星期一»:_(u»星期一»),
«星期二»:_(u»星期二»),
«星期三»:_(u»星期三»),
«星期四»:_(u»Thu»),
«星期五»:_(u»星期五»),
“ Saturday”:_(u“ Sat”),
“週日”:_(u“週日”)
}

day_of_week_en = {
“今天”:_(u“ today”),
«星期一»:_(u»星期一»),
«星期二»:_(或»星期二»),
«星期三»:_(u»星期三»),
«星期四»:_(u»星期四»),
«星期五»:_(u»星期五»),
“ Saturday”:_(u“ Saturday”),
“週日”:_(u“週日”)
}

day_of_week_short_en = {
“今天”:_(u“ today”),
“星期一”:_(u“ mon”),
«星期二»:_(u»sea»),
«星期三»:_(u»星期三»),
«星期四»:_(u»Thurs»),
«星期五»:_(u»fri»),
“ Saturday”:_(u“ sat”),
“週日”:_(u“ dom”)
}

day_of_week_fr = {
«今天»:_(u»Aujourd'hui»),
«星期一»:_(u»Lundi»),
«星期二»:_(u»Mardi»),
«星期三»:_(u»Mercredi»),
«星期四»:_(u»Jeudi»),
«星期五»:_(u»Vendredi»),
“ Saturday”:_(u“ Samedi”),
“週日”:_(u“ Dimanche”)
}

day_of_week_short_fr = {
«今天»:_(u»Auj»),
“星期一”:_(u“星期一”),
«星期二»:_(u»Mar»),
“星期三”:_(u“ Mer”),
«星期四»:_(u»Jeu»),
«星期五»:_(u»Come»),
“ Saturday”:_(u“ Sam”),
“週日”:_(u“昏暗”)
}

軸承箭頭字體 = {
«N»:_(u»i»),
«NNE»:_(u»j»),
«NE»:_(u»k»),
«ENE»:_(u»l»),
«E»:_(u»m»),
«ESE»:_(u»n»),
“ SE”:_(u“ o”),
«SSE»:_(u»p»),
«S»:_(u»a»),
«SSW»:_(u»b»),
«SW»:_(u»c»),
“ WSW”:_(u“ d”),
«W»:_(u»e»),
“ WNW”:_(u“ f”),
«NW»:_(u»g»),
«NNW»:_(u»h»),
«N / A»:_(u»«)
}

軸承_文本_es = {
«N»:_(u»N»),
«NNE»:_(u»NNE»),
«NE»:_(u»NE»),
«ENE»:_(u»ENE»),
«E»:_(u»E»),
«ESE»:_(u»ESE»),
«SE»:_(u»SE»),
“ SSE”:_(u“ SSE”),
“他們的”),
“ 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»)
}

軸承_文本_fr = {
«N»:_(u»N»),
«NNE»:_(u»NNE»),
«NE»:_(u»NE»),
«ENE»:_(u»ENE»),
«E»:_(u»E»),
«ESE»:_(u»ESE»),
«SE»:_(u»SE»),
“ SSE”:_(u“ SSE”),
“他們的”),
“ 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»)
}

GlobalWeather類:

當前條件 = []
日預測 = []
夜間預測 = []

locale =“在”

選項=無
weatherxmldoc =«»

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

def __init __(自身,選項):

self.options =選項

如果self.options.locale ==無:
嘗試:
#self.locale = locale.getdefaultlocale()[0] [0:2]
self.locale =«es»#取消註釋此行以強制西班牙語區域設置
#self.locale =“ fr”#取消註釋此行以強制法語區域設置
除了:
打印“未設置語言環境”
其他:
#self.locale = self.options.locale
self.locale =«es»#取消註釋此行以強制西班牙語區域設置
#self.locale =“ fr”#取消註釋此行以強制法語區域設置

如果self.options.verbose == True:
打印>> sys.stdout,“語言環境設置為”,self.locale

def getText(自身,節點列表):
rc =«»
對於節點列表中的節點:
如果node.nodeType == node.TEXT_NODE:
rc = rc + 節點數據
返回rc

def getSpaces(自身,空格):
字符串= u»»
如果空格==無:
字符串= self.DEFAULT_SPACING
其他:
對於範圍(0,空格+ 1)中的i:
字符串=字符串+ u»«
返回字符串

def isNumeric(自身,字符串):
嘗試:
虛擬=浮點數(字符串)
返回True
除了:
返回False

def isConnectionAvailable(個體):
#確保我們可以通過打開url來訪問weather.com的服務器
嘗試:
Usock = urllib2.urlopen('http://xoap.weather.com')
Usock.close()
返回True
除了:
返回False

def getBearingText(自身,方位):
軸承=浮動(軸承)
如果軸承<11.25:
返回你»N»
Elif軸承<33.75:
返回您»NNE»
Elif軸承<56.25:
返回您»NE»
Elif軸承<78.75:
返回您»JAN»
Elif軸承<101.25:
返回您»E»
Elif軸承<123.75:
返回您»ESE»
Elif軸承<146.25:
返回您»SE»
Elif軸承<168.75:
返回您»SSE»
Elif軸承<191.25:
返回你»S»
Elif軸承<213.75:
返回您»SSW»
Elif軸承<236.25:
返回您»SW»
Elif軸承<258.75:
返回您»WSW»
Elif軸承<281.25:
返回您»W»
Elif軸承<303.75:
返回您»WNW»
Elif軸承<326.25:
返回您»NW»
Elif軸承<348.75:
返回您»NNW»
其他:
返回«N / A»

def convertCelsiusToFahrenheit(自我,臨時):
return str(int(floor((((float(temp)* 9.0)/5.0)+32)))

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

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

def getTemplateList(自身,模板):

模板列表 = []

對於template.split(«{«)中的template_part:
如果template_part!=«»:
對於template_part.split(“}”)中的template_part:
如果template_part!=«»:
templatelist.append(u»»+ template_part)

返回模板列表

def getOutputText(自身,數據類型,開始日期,結束日期,夜晚,短工作日,英制,hideunits,空格):
#嘗試:
輸出= u»»

#定義輸出的當前單位
如果hideunits == False:
如果英制== False:
溫度單位= u»°C»
速度單位 = u »kph»
壓力單位= u»mb»
其他:
溫度單位= u»°F»
速度單位 = u »mph»
壓力單位= u»in»
其他:
溫度單位 = u »°»
速度單位 = u »»
壓力單位= u»»

如果開始日期==無:#當前條件

如果數據類型==“ DW”:
如果self.locale ==“是”:
如果shortweekday == True:
輸出= WeatherText.day_of_week_short_es [self.current_conditions [0] .day_of_week]
其他:
輸出= WeatherText.day_of_week_es [self.current_conditions [0] .day_of_week]
elif self.locale ==“ fr”:
如果shortweekday == True:
輸出= WeatherText.day_of_week_short_fr [self.current_conditions [0] .day_of_week]
其他:
輸出= WeatherText.day_of_week_fr [self.current_conditions [0] .day_of_week]
其他:
如果shortweekday == True:
輸出= WeatherText.day_of_week_short [self.current_conditions [0] .day_of_week]
其他:
輸出= WeatherText.day_of_week [self.current_conditions [0] .day_of_week]
elif數據類型==“ WF”:#天氣字體
輸出= WeatherText.conditions_weather_font [self.current_conditions [0] .condition_code]
elif數據類型==“ LT”:
字符串= self.current_conditions [0] .low
如果self.isNumeric(string)== True:
如果英制==真:
字符串= self.convertCelsiusToFahrenheit(字符串)
字符串=字符串+溫度單位
輸出=字符串
elif數據類型==“ HT”:
字符串= self.current_conditions [0] .high
如果self.isNumeric(string)== True:
如果英制==真:
字符串= self.convertCelsiusToFahrenheit(字符串)
字符串=字符串+溫度單位
輸出=字符串
elif數據類型==“ CC”:
如果self.locale ==“是”:
輸出= WeatherText.conditions_text_es [self.current_conditions [0] .condition_code]
elif self.locale ==“ fr”:
輸出= WeatherText.conditions_text_fr [self.current_conditions [0] .condition_code]
其他:
輸出= WeatherText.conditions_text [self.current_conditions [0] .condition_code]
elif數據類型==“ CT”:
輸出= self.current_conditions [0] .condition_text
elif數據類型==“ PC”:
字符串= self.current_conditions [0] .precip
如果self.isNumeric(string)== True:
字符串=字符串+ u»%»
輸出=字符串
elif數據類型==“ HM”:
字符串= self.current_conditions [0]。濕度
如果self.isNumeric(string)== True:
字符串=字符串+ u»%»
輸出=字符串
elif數據類型==“ WD”:
字符串= self.current_conditions [0] .wind_dir
如果self.isNumeric(string)== True:
字符串= self.getBearingText(字符串)

如果self.locale ==“是”:
輸出= WeatherText.bearing_text_es [字符串]
elif self.locale ==“ fr”:
輸出= WeatherText.bearing_text_fr [string]
其他:
輸出=字符串

elif數據類型==“ BF”:
字符串= self.current_conditions [0] .wind_dir
如果self.isNumeric(string)== True:
字符串= WeatherText.bearing_arrow_font [self.getBearingText(字符串)]
輸出=字符串
elif數據類型==“ WS”:
字符串= self.current_conditions [0] .wind_speed
如果self.isNumeric(string)== True:
如果英制==真:
字符串= self.convertKilometresToMiles(字符串)
字符串=字符串+速度單位
輸出=字符串
elif數據類型==“ WG”:
字符串= self.current_conditions [0] .wind_gusts
如果self.isNumeric(string)== True:
如果英制==真:
字符串= self.convertKilometresToMiles(字符串)
字符串=字符串+速度單位
輸出=字符串
elif數據類型==“ CN”:
輸出= self.current_conditions [0] .city
elif數據類型==“ SR”:
輸出= self.current_conditions [0] .sunrise
elif數據類型==“ SS”:
輸出= self.current_conditions [0] .sunset
elif數據類型==“ MP”:
輸出= self.current_conditions [0] .moon_phase
elif數據類型==“ MF”:
輸出= WeatherText.conditions_moon_font [self.current_conditions [0] .moon_icon]
elif數據類型==“ BR”:
字符串= self.current_conditions [0] .bar_read
如果self.isNumeric(string)== True:
如果英制==真:
字符串= self.convertMillibarsToInches(字符串)
字符串=字符串+壓力單位
輸出=字符串
elif數據類型==“ BD”:
輸出= self.current_conditions [0] .bar_desc
其他:
輸出=“ \ nERROR:請求的未知數據類型”

否則:#個預測數據

如果endday == None:#如果未設置結束日期,則使用startday
結束日=開始日

如果夜晚==真:需要#晚間預報

對於範圍內的day_number(開始日期,結束日期+ 1):

如果數據類型==“ DW”:
如果self.locale ==“是”:
如果shortweekday == True:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.day_of_week_short_es [self.night_forecast [day_number] .day_of_week]
其他:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.day_of_week_es [self.night_forecast [day_number] .day_of_week]
elif self.locale ==“ fr”:
如果shortweekday == True:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.day_of_week_short_fr [self.night_forecast [day_number] .day_of_week]
其他:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.day_of_week_fr [self.night_forecast [day_number] .day_of_week]
其他:
如果shortweekday == True:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.day_of_week_short [self.night_forecast [day_number] .day_of_week]
其他:
輸出=輸出+ self.getSpaces(空間)+ WeatherText.day_of_week [self.night_forecast [day_number] .day_of_week]
elif數據類型==“ WF”:#天氣字體
輸出=輸出+ self.getSpaces(空格)+ WeatherText.conditions_weather_font [self.night_forecast [day_number] .condition_code]
elif數據類型==“ LT”:
字符串= self.night_forecast [day_number] .low
如果self.isNumeric(string)== True:
如果英制==真:
字符串= self.convertCelsiusToFahrenheit(字符串)
字符串=字符串+溫度單位
輸出=輸出+ self.getSpaces(空格)+字符串

elif數據類型==“ HT”:
字符串= self.night_forecast [day_number] .high
如果self.isNumeric(string)== True:
如果英制==真:
字符串= self.convertCelsiusToFahrenheit(字符串)
字符串=字符串+溫度單位
輸出=輸出+ self.getSpaces(空格)+字符串
elif數據類型==“ CC”:
如果self.locale ==“是”:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.conditions_text_es [self.night_forecast [day_number] .condition_code]
elif self.locale ==“ fr”:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.conditions_text_fr [self.night_forecast [day_number] .condition_code]
其他:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.conditions_text [self.night_forecast [day_number] .condition_code]
elif數據類型==“ CT”:
輸出=輸出+ self.getSpaces(空格)+ self.night_forecast [day_number] .condition_text
elif數據類型==“ PC”:
字符串= self.night_forecast [day_number] .precip
如果self.isNumeric(string)== True:
字符串=字符串+ u»%»
輸出=輸出+ self.getSpaces(空格)+字符串
elif數據類型==“ HM”:
字符串= self.night_forecast [day_number]。濕度
如果self.isNumeric(string)== True:
字符串=字符串+ u»%»
輸出=輸出+ self.getSpaces(空格)+字符串
elif數據類型==“ WD”:
字符串= self.night_forecast [day_number] .wind_dir
如果self.locale ==“是”:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.bearing_text_es [字符串]
elif self.locale ==“ fr”:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.bearing_text_fr [string]
其他:
輸出=輸出+ self.getSpaces(空格)+字符串

elif數據類型==“ BF”:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.bearing_arrow_font [self.night_forecast [day_number] .wind_dir]
elif數據類型==“ WS”:
字符串= self.night_forecast [day_number] .wind_speed
如果self.isNumeric(string)== True:
如果英制==真:
字符串= self.convertKilometresToMiles(字符串)
字符串=字符串+速度單位
輸出=輸出+ self.getSpaces(空格)+字符串
elif數據類型==“ WG”:
字符串= self.night_forecast [day_number] .wind_gusts
如果self.isNumeric(string)== True:
如果英制==真:
字符串= self.convertKilometresToMiles(字符串)
字符串=字符串+速度單位
輸出=輸出+ self.getSpaces(空格)+字符串
elif數據類型==“ CN”:
輸出=輸出+ self.getSpaces(空格)+ self.night_forecast [day_number] .city
elif數據類型==“ SR”:
輸出=輸出+ self.getSpaces(空格)+ self.night_forecast [day_number] .sunrise
elif數據類型==“ SS”:
輸出=輸出+ self.getSpaces(空格)+ self.night_forecast [day_number] .sunset
elif數據類型==“ MP”:
輸出=輸出+ self.getSpaces(空格)+ self.night_forecast [day_number] .moon_phase
elif數據類型==“ MF”:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.conditions_moon_font [self.night_forecast [day_number] .moon_icon]
elif數據類型==“ BR”:
輸出=輸出+ self.getSpaces(空格)+ self.night_forecast [day_number] .bar_read
elif數據類型==“ BD”:
輸出=輸出+ self.getSpaces(空格)+ self.night_forecast [day_number] .bar_desc
其他:
輸出=“ \ nERROR:請求的未知數據類型”
打破

否則:希望#天預報

對於範圍內的day_number(開始日期,結束日期+ 1):

如果數據類型==“ DW”:
如果self.locale ==“是”:
如果shortweekday == True:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.day_of_week_short_es [self.day_forecast [day_number] .day_of_week]
其他:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.day_of_week_es [self.day_forecast [day_number] .day_of_week]
elif self.locale ==“ fr”:
如果shortweekday == True:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.day_of_week_short_fr [self.day_forecast [day_number] .day_of_week]
其他:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.day_of_week_fr [self.day_forecast [day_number] .day_of_week]
其他:
如果shortweekday == True:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.day_of_week_short [self.day_forecast [day_number] .day_of_week]
其他:
輸出=輸出+ self.getSpaces(空間)+ WeatherText.day_of_week [self.day_forecast [day_number] .day_of_week]
elif數據類型==“ WF”:#天氣字體
輸出=輸出+ self.getSpaces(空格)+ WeatherText.conditions_weather_font [self.day_forecast [day_number] .condition_code]
elif數據類型==“ LT”:
字符串= self.day_forecast [day_number] .low
如果self.isNumeric(string)== True:
如果英制==真:
字符串= self.convertCelsiusToFahrenheit(字符串)
字符串=字符串+溫度單位
輸出=輸出+ self.getSpaces(空格)+字符串
elif數據類型==“ HT”:
字符串= self.day_forecast [day_number] .high
如果self.isNumeric(string)== True:
如果英制==真:
字符串= self.convertCelsiusToFahrenheit(字符串)
字符串=字符串+溫度單位
輸出=輸出+ self.getSpaces(空格)+字符串
elif數據類型==“ CC”:
如果self.locale ==“是”:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.conditions_text_es [self.day_forecast [day_number] .condition_code]
elif self.locale ==“ fr”:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.conditions_text_fr [self.day_forecast [day_number] .condition_code]
其他:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.conditions_text [self.day_forecast [day_number] .condition_code]
elif數據類型==“ CT”:
輸出=輸出+ self.getSpaces(空格)+ self.day_forecast [day_number] .condition_text
elif數據類型==“ PC”:
字符串= self.day_forecast [day_number] .precip
如果self.isNumeric(string)== True:
字符串=字符串+ u»%»
輸出=輸出+ self.getSpaces(空格)+字符串
elif數據類型==“ HM”:
字符串= self.day_forecast [day_number]。濕度
如果self.isNumeric(string)== True:
字符串=字符串+ u»%»
輸出=輸出+ self.getSpaces(空格)+字符串
elif數據類型==“ WD”:
字符串= self.day_forecast [day_number] .wind_dir

如果self.locale ==“是”:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.bearing_text_es [字符串]
elif self.locale ==“ fr”:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.bearing_text_fr [string]
其他:
輸出=輸出+ self.getSpaces(空格)+字符串

elif數據類型==“ BF”:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.bearing_arrow_font [self.day_forecast [day_number] .wind_dir]
elif數據類型==“ WS”:
字符串= self.day_forecast [day_number] .wind_speed
如果self.isNumeric(string)== True:
如果英制==真:
字符串= self.convertKilometresToMiles(字符串)
字符串=字符串+速度單位
輸出=輸出+ self.getSpaces(空格)+字符串
elif數據類型==“ WG”:
字符串= self.day_forecast [day_number] .wind_gusts
如果self.isNumeric(string)== True:
如果英制==真:
字符串= self.convertKilometresToMiles(字符串)
字符串=字符串+速度單位
輸出=輸出+ self.getSpaces(空格)+字符串
elif數據類型==“ CN”:
輸出=輸出+ self.getSpaces(空格)+ self.day_forecast [day_number] .city
elif數據類型==“ SR”:
輸出=輸出+ self.getSpaces(空格)+ self.day_forecast [day_number] .sunrise
elif數據類型==“ SS”:
輸出=輸出+ self.getSpaces(空格)+ self.day_forecast [day_number] .sunset
elif數據類型==“ MP”:
輸出=輸出+ self.getSpaces(空格)+ self.day_forecast [day_number] .moon_phase
elif數據類型==“ MF”:
輸出=輸出+ self.getSpaces(空格)+ WeatherText.conditions_moon_font [self.day_forecast [day_number] .moon_icon]
elif數據類型==“ BR”:
輸出=輸出+ self.getSpaces(空格)+ self.day_forecast [day_number] .bar_read
elif數據類型==“ BD”:
輸出=輸出+ self.getSpaces(空格)+ self.day_forecast [day_number] .bar_desc
其他:
輸出= u»\ nERROR:請求的數據類型未知»
打破

輸出= u»»+ output.strip(u»«)#丟失前導/尾隨空格
返回輸出

#除了:
#print“ getOutputText:意外錯誤:”,sys.exc_info()[0]

def getOutputTextFromTemplate(自身,模板):
#嘗試:

#模板數據鍵
DATATYPE_KEY =“ –datatype =”
STARTDAY_KEY =“ –startday =”
ENDDAY_KEY =“ –endday =”
NIGHT_KEY =“ –night”
SHORTWEEKDAY_KEY =“ –shortweekday”
IMPERIAL_KEY =“ –帝國”
HIDEUNITS_KEY =“ –hideunits”
SPACES_KEY =“ –spaces =”

輸出= u»»

optionfound =錯誤

#加載文件
嘗試:
fileinput =打開(self.options.template)
模板= fileinput.read()
fileinput.close()
除了:
輸出= u»未找到模板文件!»

templatelist = self.getTemplateList(模板)

#讓我們遍歷模板列表並確定找到的每個項目的輸出
對於範圍(0,len(templatelist)-1)中的i:

pos = templatelist [i] .find(DATATYPE_KEY)
如果pos!= -1:
optionfound =真
pos = pos + len(DATATYPE_KEY)
數據類型= templatelist [i] [pos:pos + 4] .strip(“}”)。strip(“ {”)。strip(“-”)。strip(“”)
其他:
數據類型=無

pos = templatelist [i] .find(STARTDAY_KEY)
如果pos!= -1:
optionfound =真
pos = pos + len(STARTDAY_KEY)
startday = int(模板列表[i] [pos:pos + 4] .strip(“}”)。strip(“ {”)。strip(“-”)。strip(“”))
其他:
開始日期=無

pos = templatelist [i] .find(ENDDAY_KEY)
如果pos!= -1:
optionfound =真
pos = pos + len(ENDDAY_KEY)
endday = int(模板列表[i] [pos:pos + 4] .strip(“}”)。strip(“ {”)。strip(“-”)。strip(“”))
其他:
結束日=無

pos = templatelist [i] .find(NIGHT_KEY)
如果pos!= -1:
optionfound =真
夜晚=真實
其他:
夜=假

pos = templatelist [i] .find(SHORTWEEKDAY_KEY)
如果pos!= -1:
optionfound =真
短工作日 = 真
其他:
短工作日 = 錯誤

pos = templatelist [i] .find(IMPERIAL_KEY)
如果pos!= -1:
optionfound =真
英制=真
其他:
帝國=假

pos = templatelist [i] .find(HIDEUNITS_KEY)
如果pos!= -1:
optionfound =真
hideunits =真
其他:
hideunits =假

pos = templatelist [i] .find(SPACES_KEY)
如果pos!= -1:
optionfound =真
pos = pos + len(SPACES_KEY)
空格=整數(模板列表[i] [pos:pos + 4] .strip(«}»)。strip(«{«)。strip(«-«)。strip(»«))
其他:
空格= 1

如果optionfound == True:
templatelist [i] = self.getOutputText(數據類型,開始日期,結束日期,夜晚,短工作日,英制,hideunits,空格)
optionfound =錯誤

#遍歷列表,將輸出組合起來,因為它已經被填充了
對於templatelist中的項目:
輸出=輸出+項目

返回輸出

#除了:
#print“ getOutputTextFromTemplate:意外錯誤:”,sys.exc_info()[0]

def fetchData(個體):

#始終獲取指標數據,對這些數據使用對話功能
file_path_current = self.TEMP_FILEPATH_CURRENT.replace(“位置”,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)

如果self.isConnectionAvailable()==否:
如果os.path.exists(file_path_current):
重新獲取數據 = 假
否則:#沒有連接,沒有緩存,砰!
打印“沒有可用的互聯網連接,不存在緩存的天氣數據。”
elif self.options.refetch ==真:
RefetchData = 真
其他:
#是否需要再次檢索數據?
如果os.path.exists(file_path_current):
lastmodDate = time.localtime(os.stat(file_path_current)[ST_MTIME])
expiryDate =(datetime.datetime.today()-datetime.timedelta(分鐘= self.EXPIRY_MINUTES))。timetuple()

如果expiryDate> lastmodDate:
RefetchData = 真
其他:
重新獲取數據 = 假
其他:
RefetchData = 真

#從網站或通過“取消提取”獲取當前狀況數據
如果RefetchData == True:

#從xoap服務獲取當前狀況數據
嘗試:

# 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&單位= m'
如果self.options.verbose == True:
打印>> sys.stdout,«從中獲取天氣數據«,網址

Usock = urllib2.urlopen(URL)
xml = usock.read()
Usock.close()
self.weatherxmldoc = minidom.parseString(xml)
除了:
打印“ fetchData:意外錯誤:”,sys.exc_info()[0]
打印“無法聯繫天氣情況以了解當前情況”

#告訴用戶位置是否錯誤…
找到= xml.find(“提供的位置無效”)
如果找到!= -1:
打印“提供的位置無效”

#詢問天氣數據,加載到類結構中並對其進行醃製
嘗試:

#準備天氣數據列表
self.current_conditions = []
self.day_forecast = []
self.night_forecast = []

#收集一般數據
Weather_n = self.weatherxmldoc.documentElement
location_n = weather_n.getElementsByTagName('loc')[0]
city_n = location_n.getElementsByTagName('dnam')[0]
city = self.getText(city_n.childNodes)

#收集當前條件數據
day_of_week = u»今天»
沉澱= u»N / A»
Sunrise_n = location_n.getElementsByTagName('sunr')[0]
日出= self.getText(sunrise_n.childNodes)
sunset_n = location_n.getElementsByTagName(“太陽”)[0]
日落= 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('icon')[0]
current_code = self.getText(current_code_n.childNodes)
current_temp_n = current_condition_n.getElementsByTagName('tmp')[0]
current_temp = self.getText(current_temp_n.childNodes)
current_temp_feels_n = current_condition_n.getElementsByTagName('flik')[0]
current_temp_feels = self.getText(current_temp_feels_n.childNodes)
bar_n = current_condition_n.getElementsByTagName('bar')[0]
bar_read_n = bar_n.getElementsByTagName('r')[0]
bar_read = self.getText(bar_read_n.childNodes)
bar_desc_n = bar_n.getElementsByTagName('d')[0]
bar_desc = self.getText(bar_desc_n.childNodes)
wind_n = current_condition_n.getElementsByTagName('wind')[0]
wind_speed_n = wind_n.getElementsByTagName('s')[0]
wind_speed = self.getText(wind_speed_n.childNodes)
wind_gust_n = wind_n.getElementsByTagName('gust')[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)
humidity_n = current_condition_n.getElementsByTagName('hmid')[0]
濕度= self.getText(humidity_n.childNodes)
moon_n = current_condition_n.getElementsByTagName('moon')[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 =天氣數據(day_of_week,current_temp_feels,current_temp,current_code,current_desc,降水,濕度,風向,wind_speed,wind_gusts,城市,日出,日落,月相,moon_icon,bar_read,bar_desc)
self.current_conditions.append(current_conditions_data)

#收集預測數據
bar_read = u»N / A»
bar_desc = u»N / A»
moon_phase = u»N / A»
Moon_icon = u »na»
Forecast_n = weather_n.getElementsByTagName('dayf')[0]
day_nodes = Forecast_n.getElementsByTagName('day')

對於day_nodes中的一天:
day_of_week = day.getAttribute('t')
day_of_year = day.getAttribute('dt')
high_temp_n = day.getElementsByTagName('hi')[0]
high_temp = self.getText(high_temp_n.childNodes)
low_temp_n = day.getElementsByTagName(“低”)[0]
low_temp = self.getText(low_temp_n.childNodes)

Sunrise_n = day.getElementsByTagName('sunr')[0]
日出= self.getText(sunrise_n.childNodes)
sunset_n = day.getElementsByTagName(“太陽”)[0]
日落= self.getText(sunset_n.childNodes)

#天天氣預報的具體數據
daytime_n = day.getElementsByTagName('part')[0]#天
condition_code_n = daytime_n.getElementsByTagName('icon')[0]
condition_code = self.getText(condition_code_n.childNodes)
condition_n = daytime_n.getElementsByTagName('t')[0]
條件= self.getText(condition_n.childNodes)
precip_n = daytime_n.getElementsByTagName('ppcp')[0]
precip = self.getText(precip_n.childNodes)
humidity_n = daytime_n.getElementsByTagName('hmid')[0]
濕度= self.getText(humidity_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('gust')[0]
wind_gusts = self.getText(wind_gusts_n.childNodes)
day_forecast_data = WeatherData(day_of_week,low_temp,high_temp,condition_code,condition,precip,濕度,風向,風速,wind_gusts,城市,日出,日落,moon_phase,moon_icon,bar_read,bar_desc)
self.day_forecast.append(day_forecast_data)

#晚間預報的具體數據
daytime_n = day.getElementsByTagName('part')[1]#晚
condition_code_n = daytime_n.getElementsByTagName('icon')[0]
condition_code = self.getText(condition_code_n.childNodes)
condition_n = daytime_n.getElementsByTagName('t')[0]
條件= self.getText(condition_n.childNodes)
precip_n = daytime_n.getElementsByTagName('ppcp')[0]
precip = self.getText(precip_n.childNodes)
humidity_n = daytime_n.getElementsByTagName('hmid')[0]
濕度= self.getText(humidity_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('gust')[0]
wind_gusts = self.getText(wind_gusts_n.childNodes)
night_forecast_data = WeatherData(day_of_week,low_temp,high_temp,condition_code,condition,precip,濕度,風向,風速,wind_gusts,城市,日出,日落,moon_phase,moon_icon,bar_read,bar_desc)
self.night_forecast.append(night_forecast_data)

#下次醃製數據!
fileoutput =打開(file_path_current,“ w”)
pickle.dump(self.current_conditions,文件輸出)
fileoutput.close()

fileoutput =打開(file_path_dayforecast,“ w”)
pickle.dump(self.day_forecast,文件輸出)
fileoutput.close()

fileoutput =打開(file_path_nightforecast,“ w”)
pickle.dump(self.night_forecast,文件輸出)
fileoutput.close()

除了:
打印“ fetchData:意外錯誤:”,sys.exc_info()[0]
打印“無法查詢天氣數據”

否則:#從醃製的類文件中獲取天氣數據
如果self.options.verbose == True:
打印>> sys.stdout,«從文件中獲取天氣數據:«,文件路徑當前

fileinput =打開(file_path_current,'r')
self.current_conditions = pickle.load(文件輸入)
fileinput.close()

如果self.options.verbose == True:
打印>> sys.stdout,“從文件中獲取日天氣預報數據:”,file_path_dayforecast,file_path_nightforecast

fileinput =打開(file_path_dayforecast,“ r”)
self.day_forecast = pickle.load(文件輸入)
fileinput.close()

如果self.options.verbose == True:
打印>> sys.stdout,«從文件中獲取日天氣預報數據:«,file_path_nightforecast,file_path_nightforecast

fileinput =打開(file_path_nightforecast,'r')
self.night_forecast = pickle.load(文件輸入)
fileinput.close()

def outputData(個體):
#嘗試:

如果self.options.template!=無:

輸出= self.getOutputTextFromTemplate(self.options.template)

其他:

輸出= 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)

打印output.encode(“ utf-8”)

#除了:
#print«outputData:意外錯誤:«,sys.exc_info()[0]

如果__name__ ==“ __main__”:

解析器= CommandLineParser()
(選項,args)= parser.parse_args()

如果options.verbose == True:
打印>> sys.stdout,“位置:”,options.location
打印>> sys.stdout,“英制:”,options.imperial
打印>> sys.stdout,“數據類型:”,options.datatype
打印>> sys.stdout,“ night:”,options.night
打印>> sys.stdout,“開始日期:”,options.startday
打印>> sys.stdout,“結束日期:”,options.endday
打印>> sys.stdout,“空格:”,options.spaces
打印>> sys.stdout,“詳細:”,options.verbose
打印>> sys.stdout,“ refetch:”,options.refetch

#創建新的全球天氣對象
天氣= GlobalWeather(選項)
weather.fetchData()
weather.outputData()

我們創建文件〜/ Conky / scripts / myweather.template

gedit〜/ Conky /腳本/ myweather.template

我們將以下內容粘貼到其中:

{–數據類型= DW –開始日期= 1}:{–數據類型= CC –開始日期= 1}
{–數據類型= HT –開始日= 1} / {–數據類型= LT –開始日= 1}從{–數據類型= WD –開始日= 1}到{–數據類型= WS –開始日= 1}
濕度:{–數據類型= HM –開始日期= 1}降水:{–數據類型= PC –開始日期= 1}
日出:{–數據類型= SR –開始日期= 1}日落:{–數據類型= SS –開始日期= 1}
----------------
{–數據類型= DW –開始日期= 2}:{–數據類型= CC –開始日期= 2}
{–數據類型= HT –開始日= 2} / {–數據類型= LT –開始日= 2}從{–數據類型= WD –開始日= 2}到{–數據類型= WS –開始日= 2}
濕度:{–數據類型= HM –開始日期= 2}降水:{–數據類型= PC –開始日期= 2}
日出:{–數據類型= SR –開始日期= 2}日落:{–數據類型= SS –開始日期= 2}
----------------
{–數據類型= DW –開始日期= 3}:{–數據類型= CC –開始日期= 3}
{–數據類型= HT –開始日= 3} / {–數據類型= LT –開始日= 3}從{–數據類型= WD –開始日= 3}到{–數據類型= WS –開始日= 3}
濕度:{–數據類型= HM –開始日期= 3}降水:{–數據類型= PC –開始日期= 3}
日出:{–數據類型= SR –開始日期= 3}日落:{–數據類型= SS –開始日期= 3}
----------------
{–數據類型= DW –開始日期= 4}:{–數據類型= CC –開始日期= 4}
{–數據類型= HT –開始日= 4} / {–數據類型= LT –開始日= 4}從{–數據類型= WD –開始日= 4}到{–數據類型= WS –開始日= 4}
濕度:{–數據類型= HM –開始日期= 4}降水:{–數據類型= PC –開始日期= 4}
日出:{–數據類型= SR –開始日期= 4}日落:{–數據類型= SS –開始日期= 4}

我們創建文件〜/ Conky / scripts / mail / conkyEmail.py(我們必須創建郵件文件夾)

gedit〜/ Conky /腳本/ mail / conkyEmail.py

並粘貼以下內容:

進口口
導入字符串

#在雙引號下方輸入您的用戶名和密碼
#例如。 用戶名=»用戶名»和密碼=»密碼»
用戶名=»YOUR_USUARIO_SINARROBA«
密碼=»YOUR_KEY«

com =»wget -O-https://»+用戶名+»:»+密碼+»@ mail.google.com /郵件/ feed /原子–無檢查證書»

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

如果fc == 0:
打印“ 0新”
其他:
打印str(fc)+»新»

因此,現在您有7個文件:

在文件夾中:〜
-> .startconky <<-使可執行

在文件夾中:〜/ Conky
-> conkymain
-> conkyforecast
-> conkymail

並在文件夾中:〜/ Conky /腳本
-> conkyForecast.py <<-使可執行
-> myweather.template

並在文件夾中:〜/ Conky /腳本/郵件
conkyEmail.py <<-使可執行

就是這樣,澄清,它說/ home / user / ...您的用戶名去了,在Gmail數據去的那一部分中,我用彩色突出顯示了您必須放置數據的地方。

殺死conky進程寫入控制台

基拉·康基

運行conky寫入控制台

./.startconky

調整好一切之後,如果要讓conky開始每個會話

系統—>首選項—>會話,並在啟動程序中添加它

在Name中,我們可以按./.startconky的順序編寫Conky,每次打開計算機時,它都會啟動。

就是這樣,希望對您有所幫助。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。