Conky、私のセットアップ

Fecfactorは昨日、下のスクリーンショットに表示されているコンキーの構成を公開するように依頼しました。

ご覧のとおり、スクリプトを使用して実行される3つのコンキーがあり、その構成はに基づいています。 このポスト ユーザーBruceM。がのフォーラムに投稿 Ubuntu-Ar メールconkyにいくつかの変更を加えました。私の場合はGmail用です。

参考記事では、ブルースによって非常によく説明されていますが、私にとっての記憶の助けとして、従う手順とそれを持っている人のための私のコンキーのコードをコピーします。

もちろん、conky、curl、pythonをインストールする必要があるので、コンソールに入力します。

sudo apt-getインストールconkyカールpython

weather.ttfとarrows.ttfのソース ここにある。 moon.ttfのソース ここにある ダウンロードしたら、それらを/ usr / share / fontsにコピーする必要があります

〜というスクリプトを作成しましょう。/Startconky

gksudo gedit〜 / .startconky

空のファイル内に以下を貼り付けます

#!/ bin / bashに
スリープ0&#0はXfceに適しています-Gnomeには20〜30を使用します
conky -c〜 / Conky / conkymain&
#sleep 0&#0Xfceに適しています-Gnomeに1を使用します
conky -c〜 / Conky / conkyforecast&
#sleep 0&#0Xfceに適しています-Gnomeに1を使用します
conky -c〜 / Conky / conkymail&

ここで、〜/ Conkyフォルダーにconkymainファイルを作成します。そうでない場合は、Conkyフォルダーがあるので、作成する必要があります。

gedit〜 / Conky / conkymain

私はCalibriフォントを使用しています。お持ちでない場合は、必要なものに置き換えてください。

私たちは次のことに固執します

背景なし
own_windowはい
own_window_transparentはい
own_window_hints undecorated、below、sticky、skip_taskbar、skip_pager
own_window_colour黒
double_bufferはい
use_spacer左
use_xftはい
フォントキャリブレーション:サイズ= 9
xftfont calibri:サイズ= 9
xftalpha 0.5
更新間隔 5.0
すべてのテキストを大文字にする場合は、大文字のいいえ#をはいに設定します
stippled_border 3
ボーダー_マージン9
ボーダー_幅10
default_color白
default_outline_color黒
default_shade_color黒
color0シアン
color1ライトブルー
color2オレンジ
color3イエロー
color4小麦
color5白
color6白
color7白
color8白
color9白
配置top_right#またはtop_left、bottom_left、bottom_right
ギャップ_x10
ギャップ y 35
text_buffer_size 128#予測に1024を使用
no_buffers yes#使用済みメモリからファイルシステムバッファを減算しますか?
draw_bordersいいえ
draw_outline yes#はいの場合、テキストを増幅します
draw_shades yes#shadecolor black

TEXT
$ {font calibri:size = 12} $ {alignc} $ {color1} $ sysname $ kernel on $ machine} $ color $ font
$ {font calibri:size = 12} $ {alignc} $ {color2} $ {exec whoami} @ $ nodename $ color $ font
$ {color0} $ {hr 1} $ color
$ {font calibri:size = 20} $ {alignc} $ {time%H:%M} $ font
$ {font calibri:size = 12} $ {color1} $ {alignc} $ {time%A、%d%b。 %Y} $ color $ font
$ {color3} UpTime:$ {alignr 2} $ uptime $ 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} Load Avg($ {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}バッファリング:$ color $ {buffers} $ {alignr 2} $ {color1}キャッシュ:$ color $ {cached}
$ {voffset 5} $ {color2} SWAP:$ color $ swap $ {color2} / $ color $ {swapmax} $ {alignr 2} $ {color2} $ {swapbar 14,80} $ color
$ {color1} $ {voffset -16} $ {alignr 5} $ swapperc%
$ {color0} $ {hr 1} $ color
$ {voffset 5} $ {color2} HD情報$ {color1}-$ color無料$ {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 / home / user}%$ {alignr 2} $ {fs_free / home / user} $ {color2} / $ {color1} $ {fs_used / home / user} $ color / $ {color2} $ {fs_size / home / user} $ color
$ {color0} $ {hr 1} $ color
$ {color1}差出人:$ colorブエノスアイレス、アルゼンチン
$ {color1}緯度:$ {color2} 34°35'S $ {color1}長さ:$ {color2} 58°21'W $ {color1}代替:$ {color2} 25 m $ color
$ {voffset 5} $ {color2} $ {font calibri:size = 12}今日:$ font $ {color3} $ {execi 3600 python〜 / Conky /スクリプト/conkyForecast.py –location = ARBA0009 –datatype = CC} $ color $ {alignr 2} $ {color1} ST:$ {color2} $ {execi 3600 python〜 / Conky /スクリプト/conkyForecast.py –location = ARBA0009 –datatype = LT}
$ {color3} $ {font Weather:size = 50} $ {execi 3600 python〜 / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = WF} $ font $ color
$ {alignr 50} $ {voffset -55} $ {font calibri:size = 25} $ {execi 3600 python〜 / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = HT} $ font
$ {alignc 20} $ {voffset -30} $ {font Arrows:size = 20} $ {color4} $ {execi 3600 python〜 / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = BF} $ color $フォント
$ {alignc 10} $ {voffset 5} $ {color4} Wind:$ {execi 3600 python〜 / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = WS} $ color
$ {color1}湿度:$ {color3} $ {execi 3600 python〜 / Conky /スクリプト/conkyForecast.py –location = ARBA0009 –datatype = HM} $ {alignr 2} $ {color1}降水量:$ {color3} $ { execi 3600 python〜 / Conky /スクリプト/conkyForecast.py –location = ARBA0009 –datatype = PC} $ color
$ {alignc} $ {color1}圧力:$ {color3} $ {execi 3600 python〜 / Conky /スクリプト/conkyForecast.py –location = ARBA0009 –datatype = BR}-$ {color3} $ {execi 3600 python〜 / Conky /scripts/conkyForecast.py –location = ARBA0009 –datatype = BD} $ color
$ {color4} $ {hr} $ color
$ {color1}日の出:$ {color3} $ {execi 3600 python〜 / Conky /スクリプト/conkyForecast.py –location = ARBA0009 –datatype = SR} $ {alignr 2} $ {color1}日没:$ {color3} $ { execi 3600 python〜 / Conky /スクリプト/conkyForecast.py –location = ARBA0009 –datatype = SS} $ color
$ {voffset 15} $ {color1}月:$ {color4} $ {alignr 2} $ {color3} $ {execi 3600 python〜 / Conky /スクリプト/conkyForecast.py –location = ARBA0009 –datatype = MP} $ color
$ {voffset -20} $ {offset 80} $ {color4} $ {font moon phase: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 $ {downspeed eth0} k / s $ {alignr 2} $ {color1}アップ:$ color $ {upspeed eth0} k / s
$ {color1}合計:$ color $ {totaldown eth0} $ {alignr 2} $ {color1}合計:$ color $ {totalup eth0}
$ {color1}インバウンド:$ color $ {tcp_portmon 1 32767 count} $ {color1}アウトバウンド:$ color $ {tcp_portmon 32768 61000 count} $ {alignr 2} $ {color1}合計:$ color $ {tcp_portmon 1 65535 count}
$ {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} $ color

ファイルを作成します〜/ Conky / conkyforecast

gedit〜 / Conky / conkyforecast

以下を中に貼り付けます

背景なし
own_windowはい
own_window_transparentはい
own_window_hints undecorated、below、sticky、skip_taskbar、skip_pager
own_window_colour黒
double_bufferはい
use_spacer左
use_xftはい
フォントキャリブレーション:サイズ= 8
xftfont calibri:サイズ= 8
xftalpha 0.5
更新間隔 5.0
すべてのテキストを大文字にする場合は、大文字のいいえ#をはいに設定します
stippled_border 3
ボーダー_マージン9
ボーダー_幅10
default_color白
default_outline_color黒
default_shade_color黒
color0シアン
color1ライトブルー
color2オレンジ
color3イエロー
color4小麦
color5白
color6白
color7白
color8白
color9白
配置bottom_left#またはtop_left、bottom_left、bottom_right
ギャップ_x10
ギャップ y 35
text_buffer_size 1024#予測に1024を使用
no_buffers yes#使用済みメモリからファイルシステムバッファを減算しますか?
draw_bordersいいえ
draw_outline yes#はいの場合、テキストを増幅します
draw_shades yes#shadecolor black

TEXT
$ {color4} $ {font calibri:size = 11}拡張予測$ font $ color
$ {color0} $ {hr} $ color
$ {color4} $ {font calibri:size = 9} $ {execi 3600 python〜 / Conky / scripts / conkyForecast.py –location = ARBA0009 –template = / home / user / Conky / scripts / myweather.template} $ font $色

ファイルを作成します〜/ Conky / conkymail

gedit〜 / Conky / conkymail

以下をファイルに貼り付けます

背景なし
own_windowはい
own_window_transparentはい
own_window_hints undecorated、below、sticky、skip_taskbar、skip_pager
own_window_colour黒
double_bufferはい
use_spacer左
use_xftはい
フォントキャリブレーション:サイズ= 8
xftfont calibri:サイズ= 8
xftalpha 0.5
更新間隔 5.0
すべてのテキストを大文字にする場合は、大文字のいいえ#をはいに設定します
stippled_border 3
ボーダー_マージン9
ボーダー_幅10
default_color白
default_outline_color黒
default_shade_color黒
color0シアン
color1ライトブルー
color2オレンジ
color3イエロー
color4小麦
color5白
color6白
color7白
color8白
color9白
配置bottom_left#またはtop_left、bottom_left、bottom_right
ギャップ_x565
ギャップ y 35
text_buffer_size 128#予測に1024を使用
no_buffers yes#使用済みメモリからファイルシステムバッファを減算しますか?
draw_bordersいいえ
draw_outline yes#はいの場合、テキストを増幅します
draw_shades yes#shadecolor black

TEXT
$ {font calibri:size = 11} $ {alignc} $ {color4} Gmail
$ {color0} $ {hr} $ color
$ {font calibri:size = 11} $ {color4} $ {color3} $ {execi 300 python〜 / Conky / scripts / mail / conkyEmail.py} $ {color4} email(s)$ font

〜/ Conky / scripts / conkyForecast.pyにファイルを作成します(scriptsフォルダーを作成する必要があります)

gedit〜 / Conky /スクリプト/conkyForecast.py

#!/ usr / bin / python
#-*-コーディング:utf-8-*-
################################################## ##############################
#conkyForecast.pyは、収集する(それほどではない)単純な(もう)Pythonスクリプトです
#conkyで使用するための現在の天気の詳細。
#
#作者:カイバラギ
#作成日:13年04月2008日
#変更:
#14年04月2008日予測データの日の範囲を許可する
#14/04 / 2008xoapサービスへの接続を確認します
#18/04/2008遠隔出力用のスペースの設定を許可する
#18年04月2008日昼と夜の天気予報の出力を許可する
#18年04月2008日スペイン語の翻訳を待っている条件コードテキスト«CC»オプションのロケールをサポート
#18/04/2008 xmlを開くのではなく、クラスデータにpickle化を使用します。これにより、キャッシュされたデータを問い合わせる必要がなくなります。
#19/04/2008スペイン語の条件テキストを追加-ありがとうブルースM
#19年04月2008日単位の接尾辞が付いたすべての数値出力にisnumericチェックを追加
#19/04/2008ロケーションコードを含むようにpickleファイルの名前を変更
#19年04月2008日ロケールを介したスペイン語の曜日の変換を追加
#20/04/2008まともなコマンド引数パーサーを追加
#20年04月2008日– shortweekdayオプションが追加されました。曜日が指定されている場合、データ型は3文字に短縮されます。
#21年04月2008日予測出力のロケールオプションを修正
#21年04月2008日追加–単一のexec呼び出しを使用してカスタム出力を許可するテンプレートオプション🙂
#21年04月2008日出力からmphやCなどを削除する–hideunitsオプションを追加
#23/04/2008テンプレートから–imperialオプションを削除しました。これは、スクリプト呼び出しの標準オプションとして設定する必要があり、テンプレートファイルでは使用しないでください。
#23/04/2008 Readded –テンプレートのインペリアルオプション。データ型ごとにメートル法またはインペリアル値を有効にします。 テンプレートを使用する場合、コマンドラインオプションは機能しないことに注意してください。
#23/04/2008指定された場所が悪い場合にユーザーに通知する出力を追加しました
#24年04月2008日接続がない場合の処理​​が追加され、キャッシュされたデータに戻るようになりました(キャッシュが存在しない場合はエラーが発生します)。 xoap.weather.comを開こうとしてテストします
#24年04月2008日摂氏から華氏への変換を修正
#06年05月2008日Webサービスの更新後に使用される更新されたURL
#09年05月2008日現在の状態と予測データのフェッチをXNUMXつの呼び出しに統合
#09年05月2008日データ型に日の出と日の入りを追加しました。これらは現在の状態と予測データの両方に固有です。
#09年05月2008日データ型にムーンフェイズ、気圧計の読み取り値、気圧計の説明を追加しました。これらは現在の状態にのみ固有であり、予測出力のN / Aも同様です。
#09年05月2008日気圧計の単位変換をmbからインチに追加(インペリアル)
#09年05月2008日スペイン語の条件テキストを更新-ありがとうブルースM
#10年05月2008日フランス語のロケールデータを追加-ありがとうbenpaka
#12年05月2008日WD(風向)からのNSEW出力の代わりに矢印文字(Arrow.ttfフォントで使用)を提供する新しいBF(ベアリングフォント)データ型を追加しました
#12年05月2008日ロケール固有のWD出力を更新し、現在デフォルトの英語とスペイン語をサポートしています-ありがとうBruce M
#18/05/2008ムーンフォント文字を提供するために新しいMF(ムーンフォント)データ型を追加しました(文字が正しくなく、専用フォントはまだありません)。
#21/05/2008現在の条件の場合、–datatype = LTオプションは、現在の温度ではなく「感じ」の温度を表示するようになりました
#
#すべて:
#pklファイルをXNUMXつのファイル/クラスに統合します
#月のアイコンデータに基づくムーンフェイズ出力に基づいて天気フォントを追加します
#??? そこに他の要件はありますか?

sys、os、socket、urllib2、datetime、timeをインポートします
xml.domからインポートミニダム
統計インポートから*
optparseからimportOptionParser
ロケールのインポート
gettextをインポートする
ピクルスをインポート
数学のインポートから*

APP =»conkyForecast.py»
DIR = os.path.dirname(__ file __)+ '/ロケール'
gettext.bindtextdomain(APP、DIR)
gettext.textdomain(APP)
_ = gettext.gettext

クラスCommandLineParser:

パーサー=なし

def __init __(自己):

self.parser = OptionParser()
self.parser.add_option(«-l»、»-location»、dest =»location»、default =»UKXX0103″、type =»string»、metavar =»CODE»、help = u»気象データのロケーションコード[ default:%default]、次のURLを使用して、都市名でロケーションコードを決定します:http://xoap.weather.com/search/search?where = Norwich»)
self.parser.add_option( "-d"、 "-datatype"、dest = "datatype"、default = "HT"、type = "string"、metavar = "DATATYPE"、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»、type =»int»、metavar =»NUMBER»、help = u»省略された場合、現在の条件が出力される場合は、開始日の番号を定義します。テンプレートを使用する場合、コマンドラインでは適用されません。»)
self.parser.add_option( "-e"、 "-endday"、dest = "endday"、type = "int"、metavar = "NUMBER"、help = u "開始日データのみを省略した場合、終了日番号を定義しますが出力されます。テンプレートを使用する場合、コマンドラインでは適用されません。»)
self.parser.add_option(«-S»、»-スペース»、dest =»スペース»、タイプ=»int»、デフォルト= 1、metavar =»NUMBER»、help = u»[デフォルト:%デフォルト]を定義します範囲出力間のスペースの数。テンプレートを使用する場合、コマンドラインでは適用されません。»)
self.parser.add_option(«-t»、»-template»、dest =»template»、type =»string»、metavar =»FILE»、help = u»1回の呼び出しで出力を生成するテンプレートファイルを定義します。Aファイル内の表示可能な項目は、{– datatype = HT –startday = XNUMX}の形式です。各項目内で可能なオプションは次のとおりです。–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"、default = False、action = "store_true"、help = u "省略された出力がメートル法の場合、インペリアル単位を要求します。テンプレートを使用する場合のコマンドライン。»)
self.parser.add_option(«-n»、»-night»、dest =»night»、default = False、action =»store_true»、help = u»省略された日出力が出力される場合、出力を夜データに切り替えます。テンプレートを使用する場合、コマンドラインでは適用されません。»)
self.parser.add_option(«-w»、»-shortweekday»、dest =»shortweekday»、デフォルト= False、アクション=»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"、default = False、action = "store_true"、help = u "詳細な出力を要求します。conkyを実行する場合はお勧めできません!" )
self.parser.add_option( "-r"、 "-refetch"、dest = "refetch"、default = False、action = "store_true"、help = u "データの有効期限に関係なくデータをフェッチする")

def parse_args(self):
(オプション、引数)= self.parser.parse_args()
戻り値(オプション、引数)

def print_help(self):
self.parser.print_help()を返します

クラスWeatherData:
def __init __(self、day_of_week、low、high、condition_code、condition_text、precip、humidity、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»»+低
self.high = u»»+高
self.condition_code = u»»+ condition_code
self.condition_text = u»»+ condition_text
self.precip = u»»+降水量
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:

Conditions_text = {
«0»:_(u»トルネード»)、
«1»:_(u»熱帯低気圧»)、
«2»:_(u»ハリケーン»)、
«3»:_(u»激しい雷雨»)、
«4»:_(u»雷雨»)、
«5»:_(u»雨と雪の混合»)、
«6»:_(u»雨とみぞれの混合»)、
«7»:_(u»混合沈殿»)、
«8»:_(u»着氷性の霧雨»)、
«9»:_(u»霧雨»)、
«10»:_(u»着氷性の雨»)、
«11»:_(u»シャワー»)、
«12»:_(u»シャワー»)、
«13»:_(u»風花»)、
«14»:_(u»ライトスノーシャワー»)、
«15»:_(u»吹雪»)、
«16»:_(u»雪»)、
«17»:_(u»あられ»)、
«18»:_(u»みぞれ»)、
«19»:_(u»ほこり»)、
«20»:_(u»霧»)、
«21»:_(u»ヘイズ»)、
«22»:_(u»煙»)、
«23»:_(u»Blustery»)、
«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»ホット»)、
«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»)、
"-":_(a ")
}

Conditions_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»シャワー»)、
«12»:_(u»シャワー»)、
«13»:_(u»小雪»)、
«14»:_(u»小雪»)、
«15»:_(u»雪の吹雪»)、
«16»:_(u»雪»)、
«17»:_(u»あられ»)、
«18»:_(u»みぞれ»)、
«19»:_(u»パウダー»)、
«20»:_(u»霧»)、
«21»:_(u»ヘイズ»)、
«22»:_(u»煙»)、
«23»:_(u»テンペスト»)、
«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»熱»)、
«37»:_(u»孤立した嵐»)、
«38»:_(u»散在する嵐»)、
«39»:_(u»散在する嵐»)、
«40»:_(u»散在するシャワー»)、
«41»:_(u»大雪»)、
«42»:_(u»弱く散在する降雪»)、
«43»:_(u»インテンスネバダ»)、
«44»:_(u»散乱雲»)、
«45»:_(u»嵐»)、
«46»:_(または»散乱降雪»)、
«47»:_(u»孤立した嵐»)、
«na»:_(u»N / A»)、
"-":_(a ")
}

Conditions_text_fr = {
«0»:_(u»トルネード»)、
«1»:_(u»TempêteTropicale»)、
«2»:_(または»Ouragan»)、
«3»:_(または»Orages Violents»)、
«4»:_(または»Orageux»)、
«5»:_(u»Pluie et Neige»)、
«6»:_(u»PluieetNeigeMouillée»)、
«7»:_(u»変数avec averses»)、
«8»:_(u»Bruine Givrante»)、
«9»:_(u»Bruine»)、
«10»:_(u»Pluie Glacante»)、
«11»:_(u»嫌悪»)、
«12»:_(u»嫌悪»)、
«13»:_(u»LégèreNeige»)、
«14»:_(u»フォルテネイジ»)、
«15»:_(u»TempêtedeNeige»)、
«16»:_(u»Neige»)、
«17»:_(u»Grêle»)、
«18»:_(u»Pluie / Neige»)、
«19»:_(u»Nuagedepoussière»)、
«20»:_(u»Brouillard»)、
«21»:_(u»ブルーム»)、
«22»:_(u»Fumée»)、
«23»:_(u»Tres Venteux»)、
«24»:_(u»Venteux»)、
«25»:_(u»フロイド»)、
«26»:_(u»Nuageux»)、
«27»:_(u»Tres Nuageux»)、
«28»:_(u»Tres Nuageux»)、
«29»:_(u»NuagesDisséminés»)、
«30»:_(u»NuagesDisséminés»)、
«31»:_(u»Beau»)、
«32»:_(u»Beau»)、
«33»:_(u»BellesÉclaircies»)、
«34»:_(u»BellesÉclaircies»)、
«35»:_(u»PluieavecGrêle»)、
«36»:_(u»Chaleur»)、
«37»:_(または»OragesIsolés»)、
«38»:_(または»OragesLocalisés»)、
«39»:_(または»OragesLocalisés»)、
«40»:_(u»AversesLocalisées»)、
«41»:_(u»Neige Lourde»)、
«42»:_(u»TempêtedeNeigeLocalisées»)、
«43»:_(u»Neige Lourde»)、
«44»:_(u»NuagesDisséminés»)、
«45»:_(または»Orages»)、
«46»:_(u»TempêtedeNeige»)、
«47»:_(または»OragesIsolé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»»)、
"-":_(または "")
}

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»»)、
"-":_(または "")
}

曜日 = {
「今日」:_(または「今日」)、
«月曜日»:_(u»月曜日»)、
«火曜日»:_(u»火曜日»)、
«水曜日»:_(u»水曜日»)、
«木曜日»:_(u»木曜日»)、
«金曜日»:_(u»金曜日»)、
"土曜日":_(u "土曜日")、
"日曜日":_(u "日曜日")
}

曜日_短 = {
「今日」:_(u「今」)、
«月曜日»:_(u»月曜日»)、
«火曜日»:_(u»火曜日»)、
«水曜日»:_(u»水»)、
«木曜日»:_(u»木曜日»)、
«金曜日»:_(u»金曜日»)、
"土曜日":_(u "土曜日")、
「日曜日」:_(u「日曜日」)
}

曜日 = {
"今日":_(u "今日")、
«月曜日»:_(u»月曜日»)、
«火曜日»:_(u»火曜日»)、
«水曜日»:_(u»水曜日»)、
«木曜日»:_(u»木曜日»)、
«金曜日»:_(u»金曜日»)、
"土曜日":_(u "土曜日")、
"日曜日":_(u "日曜日")
}

day_of_week_short_en = {
"今日":_(u "今日")、
"月曜日":_(u "mon")、
«火曜日»:_(u»海»)、
«水曜日»:_(u»水»)、
«木曜日»:_(u»木曜日»)、
"金曜日":_(u "fri")、
"土曜日":_(u "sat")、
"日曜日":_(u "dom")
}

曜日_日 = {
«今日»:_(u»Aujourd'hui»)、
«月曜日»:_(u»ルンディ»)、
«火曜日»:_(u»マルディ»)、
«水曜日»:_(u»Mercredi»)、
«木曜日»:_(u»ジュディ»)、
«金曜日»:_(u»Vendredi»)、
"土曜日":_(u "Samedi")、
「日曜日」:_(u「ディマンシュ」)
}

day_of_week_short_fr = {
«今日»:_(u»Auj»)、
"月曜日":_(u "月")、
«火曜日»:_(u»XNUMX月»)、
"水曜日":_(u "Mer")、
«木曜日»:_(u»Jeu»)、
«金曜日»:_(u»来る»)、
"土曜日":_(u "Sam")、
「日曜日」:_(u「薄暗い」)
}

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»)、
«n / A»:_(u»«)
}

Bearing_text_es = {
«n»:_(u»N»)、
«NNE»:_(u»NNE»)、
«NE»:_(u»NE»)、
«ENE»:_(u»ENE»)、
"ユー")、
«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»)
}

Bearing_text_fr = {
«n»:_(u»N»)、
«NNE»:_(u»NNE»)、
«NE»:_(u»NE»)、
«ENE»:_(u»ENE»)、
"ユー")、
«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:

現在の条件 = []
day_forecast = []
night_forecast = []

ロケール= "in"

オプション=なし
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 =オプション

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、 "locale set to"、self.locale

def getText(self、nodelist):
rc =«»
nodelist内のノードの場合:
node.nodeType == node.TEXT_NODEの場合:
rc = rc + ノード.データ
rcを返す

def getSpaces(self、spaces):
文字列= u»»
スペース==なしの場合:
文字列= self.DEFAULT_SPACING
その他:
範囲(0、スペース+ 1)のiの場合:
文字列=文字列+ u»«
戻り文字列

def isNumeric(self、string):
試してみてください。
ダミー=フロート(文字列)
Trueを返す
を除いて:
Falseを返す

def isConnectionAvailable(self):
#URLを開いてweather.comのサーバーにアクセスできることを確認します
試してみてください。
Usock = urllib2.urlopen( 'http://xoap.weather.com')
Usock.close()
Trueを返す
を除いて:
Falseを返す

def getBearingText(self、bearing):
ベアリング=フロート(ベアリング)
ベアリング<11.25の場合:
uを返す»N»
elifベアリング<33.75:
uを返す»NNE»
elifベアリング<56.25:
uを返す»NE»
elifベアリング<78.75:
uを返す»XNUMX月»
elifベアリング<101.25:
uを返す»E»
elifベアリング<123.75:
uを返す»ESE»
elifベアリング<146.25:
uを返す»SE»
elifベアリング<168.75:
uを返す»SSE»
elifベアリング<191.25:
uを返す»S»
elifベアリング<213.75:
uを返す»SSW»
elifベアリング<236.25:
uを返す»SW»
elifベアリング<258.75:
uを返す»WSW»
elifベアリング<281.25:
uを返す»W»
elifベアリング<303.75:
uを返す»WNW»
elifベアリング<326.25:
uを返す»NW»
elifベアリング<348.75:
uを返す»NNW»
その他:
«N / A»を返す

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、template):

テンプレートリスト = []

template.splitのtemplate_partの場合(«{«):
template_part!=«»の場合:
template_part.split( "}")のtemplate_partの場合:
template_part!=«»の場合:
templatelist.append(u»»+ template_part)

テンプレートリストを返す

def getOutputText(self、datatype、startday、endday、night、shortweekday、imperial、hideunits、spaces):
#try:
出力= u»»

#出力の現在の単位を定義する
hideunits == Falseの場合:
インペリアルの場合== False:
tempunit = u »°C»
speedunit = u »kph»
圧力単位= u»mb»
その他:
tempunit = u »° F»
speedunit = u »mph»
圧力単位= u»in»
その他:
tempunit = u »°»
speedunit = u »»
圧力単位= u»»

startday ==なしの場合:#現在の状態

データ型== "DW"の場合:
self.locale == "is"の場合:
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 datatype == "WF":#天気フォント
出力= WeatherText.conditions_weather_font [self.current_conditions [0] .condition_code]
elif datatype == "LT":
string = self.current_conditions [0] .low
self.isNumeric(string)== Trueの場合:
インペリアルの場合== True:
文字列= self.convertCelsiusToFahrenheit(文字列)
文字列=文字列+ tempunit
出力=文字列
elif datatype == "HT":
string = self.current_conditions [0] .high
self.isNumeric(string)== Trueの場合:
インペリアルの場合== True:
文字列= self.convertCelsiusToFahrenheit(文字列)
文字列=文字列+ tempunit
出力=文字列
elif datatype == "CC":
self.locale == "is"の場合:
出力= 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 datatype == "CT":
output = self.current_conditions [0] .condition_text
elif datatype == "PC":
string = self.current_conditions [0] .precip
self.isNumeric(string)== Trueの場合:
文字列=文字列+ u»%»
出力=文字列
elif datatype == "HM":
string = self.current_conditions [0] .humidity
self.isNumeric(string)== Trueの場合:
文字列=文字列+ u»%»
出力=文字列
elif datatype == "WD":
string = self.current_conditions [0] .wind_dir
self.isNumeric(string)== Trueの場合:
string = self.getBearingText(string)

self.locale == "is"の場合:
出力= WeatherText.bearing_text_es [文字列]
elif self.locale == "fr":
出力= WeatherText.bearing_text_fr [文字列]
その他:
出力=文字列

elif datatype == "BF":
string = self.current_conditions [0] .wind_dir
self.isNumeric(string)== Trueの場合:
string = WeatherText.bearing_arrow_font [self.getBearingText(string)]
出力=文字列
elif datatype == "WS":
string = self.current_conditions [0] .wind_speed
self.isNumeric(string)== Trueの場合:
インペリアルの場合== True:
文字列= self.convertKilometresToMiles(文字列)
文字列=文字列+スピードユニット
出力=文字列
elif datatype == "WG":
string = self.current_conditions [0] .wind_gusts
self.isNumeric(string)== Trueの場合:
インペリアルの場合== True:
文字列= self.convertKilometresToMiles(文字列)
文字列=文字列+スピードユニット
出力=文字列
elif datatype == "CN":
出力= 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":
出力= self.current_conditions [0] .moon_phase
elif datatype == "MF":
出力= WeatherText.conditions_moon_font [self.current_conditions [0] .moon_icon]
elif datatype == "BR":
string = self.current_conditions [0] .bar_read
self.isNumeric(string)== Trueの場合:
インペリアルの場合== True:
文字列= self.convertMillibarsToInches(文字列)
文字列=文字列+圧力単位
出力=文字列
elif datatype == "BD":
出力= self.current_conditions [0] .bar_desc
その他:
output = "\ nERROR:不明なデータ型が要求されました"

else:#予測データ

終了日==なしの場合:#終了日が設定されていない場合は開始日を使用
終了日=開始日

夜の場合== True:#夜の天気予報が必要

範囲内のday_number(開始日、終了日+ 1)の場合:

データ型== "DW"の場合:
self.locale == "is"の場合:
shortweekday == Trueの場合:
output = output + self.getSpaces(spaces)+ WeatherText.day_of_week_short_es [self.night_forecast [day_number] .day_of_week]
その他:
output = output + self.getSpaces(spaces)+ WeatherText.day_of_week_es [self.night_forecast [day_number] .day_of_week]
elif self.locale == "fr":
shortweekday == Trueの場合:
output = output + self.getSpaces(spaces)+ WeatherText.day_of_week_short_fr [self.night_forecast [day_number] .day_of_week]
その他:
output = output + self.getSpaces(spaces)+ WeatherText.day_of_week_fr [self.night_forecast [day_number] .day_of_week]
その他:
shortweekday == Trueの場合:
output = output + self.getSpaces(spaces)+ WeatherText.day_of_week_short [self.night_forecast [day_number] .day_of_week]
その他:
output = output + self.getSpaces(spaces)+ WeatherText.day_of_week [self.night_forecast [day_number] .day_of_week]
elif datatype == "WF":#天気フォント
output = output + self.getSpaces(spaces)+ WeatherText.conditions_weather_font [self.night_forecast [day_number] .condition_code]
elif datatype == "LT":
string = self.night_forecast [day_number] .low
self.isNumeric(string)== Trueの場合:
インペリアルの場合== True:
文字列= self.convertCelsiusToFahrenheit(文字列)
文字列=文字列+ tempunit
出力=出力+ self.getSpaces(スペース)+文字列

elif datatype == "HT":
string = self.night_forecast [day_number] .high
self.isNumeric(string)== Trueの場合:
インペリアルの場合== True:
文字列= self.convertCelsiusToFahrenheit(文字列)
文字列=文字列+ tempunit
出力=出力+ self.getSpaces(スペース)+文字列
elif datatype == "CC":
self.locale == "is"の場合:
output = output + self.getSpaces(spaces)+ WeatherText.conditions_text_es [self.night_forecast [day_number] .condition_code]
elif self.locale == "fr":
output = output + self.getSpaces(spaces)+ WeatherText.conditions_text_fr [self.night_forecast [day_number] .condition_code]
その他:
output = output + self.getSpaces(spaces)+ WeatherText.conditions_text [self.night_forecast [day_number] .condition_code]
elif datatype == "CT":
output = output + self.getSpaces(spaces)+ self.night_forecast [day_number] .condition_text
elif datatype == "PC":
string = self.night_forecast [day_number] .precip
self.isNumeric(string)== Trueの場合:
文字列=文字列+ u»%»
出力=出力+ self.getSpaces(スペース)+文字列
elif datatype == "HM":
string = self.night_forecast [day_number] .humidity
self.isNumeric(string)== Trueの場合:
文字列=文字列+ u»%»
出力=出力+ self.getSpaces(スペース)+文字列
elif datatype == "WD":
string = self.night_forecast [day_number] .wind_dir
self.locale == "is"の場合:
出力=出力+ self.getSpaces(スペース)+ WeatherText.bearing_text_es [文字列]
elif self.locale == "fr":
出力=出力+ self.getSpaces(スペース)+ WeatherText.bearing_text_fr [文字列]
その他:
出力=出力+ self.getSpaces(スペース)+文字列

elif datatype == "BF":
output = output + self.getSpaces(spaces)+ WeatherText.bearing_arrow_font [self.night_forecast [day_number] .wind_dir]
elif datatype == "WS":
string = self.night_forecast [day_number] .wind_speed
self.isNumeric(string)== Trueの場合:
インペリアルの場合== True:
文字列= self.convertKilometresToMiles(文字列)
文字列=文字列+スピードユニット
出力=出力+ self.getSpaces(スペース)+文字列
elif datatype == "WG":
string = self.night_forecast [day_number] .wind_gusts
self.isNumeric(string)== Trueの場合:
インペリアルの場合== True:
文字列= self.convertKilometresToMiles(文字列)
文字列=文字列+スピードユニット
出力=出力+ self.getSpaces(スペース)+文字列
elif datatype == "CN":
output = output + self.getSpaces(spaces)+ self.night_forecast [day_number] .city
elif datatype == "SR":
output = output + self.getSpaces(spaces)+ self.night_forecast [day_number] .sunrise
elif datatype == "SS":
output = output + self.getSpaces(spaces)+ self.night_forecast [day_number] .sunset
elif datatype == "MP":
出力=出力+ self.getSpaces(スペース)+ self.night_forecast [day_number] .moon_phase
elif datatype == "MF":
output = output + self.getSpaces(spaces)+ WeatherText.conditions_moon_font [self.night_forecast [day_number] .moon_icon]
elif datatype == "BR":
output = output + self.getSpaces(spaces)+ self.night_forecast [day_number] .bar_read
elif datatype == "BD":
output = output + self.getSpaces(spaces)+ self.night_forecast [day_number] .bar_desc
その他:
output = "\ nERROR:不明なデータ型が要求されました"
破る

else:#日の天気予報が欲しかった

範囲内のday_number(開始日、終了日+ 1)の場合:

データ型== "DW"の場合:
self.locale == "is"の場合:
shortweekday == Trueの場合:
output = output + self.getSpaces(spaces)+ WeatherText.day_of_week_short_es [self.day_forecast [day_number] .day_of_week]
その他:
output = output + self.getSpaces(spaces)+ WeatherText.day_of_week_es [self.day_forecast [day_number] .day_of_week]
elif self.locale == "fr":
shortweekday == Trueの場合:
output = output + self.getSpaces(spaces)+ WeatherText.day_of_week_short_fr [self.day_forecast [day_number] .day_of_week]
その他:
output = output + self.getSpaces(spaces)+ WeatherText.day_of_week_fr [self.day_forecast [day_number] .day_of_week]
その他:
shortweekday == Trueの場合:
output = output + self.getSpaces(spaces)+ WeatherText.day_of_week_short [self.day_forecast [day_number] .day_of_week]
その他:
output = output + self.getSpaces(spaces)+ WeatherText.day_of_week [self.day_forecast [day_number] .day_of_week]
elif datatype == "WF":#天気フォント
output = output + self.getSpaces(spaces)+ WeatherText.conditions_weather_font [self.day_forecast [day_number] .condition_code]
elif datatype == "LT":
string = self.day_forecast [day_number] .low
self.isNumeric(string)== Trueの場合:
インペリアルの場合== True:
文字列= self.convertCelsiusToFahrenheit(文字列)
文字列=文字列+ tempunit
出力=出力+ self.getSpaces(スペース)+文字列
elif datatype == "HT":
string = self.day_forecast [day_number] .high
self.isNumeric(string)== Trueの場合:
インペリアルの場合== True:
文字列= self.convertCelsiusToFahrenheit(文字列)
文字列=文字列+ tempunit
出力=出力+ self.getSpaces(スペース)+文字列
elif datatype == "CC":
self.locale == "is"の場合:
output = output + self.getSpaces(spaces)+ WeatherText.conditions_text_es [self.day_forecast [day_number] .condition_code]
elif self.locale == "fr":
output = output + self.getSpaces(spaces)+ WeatherText.conditions_text_fr [self.day_forecast [day_number] .condition_code]
その他:
output = output + self.getSpaces(spaces)+ WeatherText.conditions_text [self.day_forecast [day_number] .condition_code]
elif datatype == "CT":
output = output + self.getSpaces(spaces)+ self.day_forecast [day_number] .condition_text
elif datatype == "PC":
string = self.day_forecast [day_number] .precip
self.isNumeric(string)== Trueの場合:
文字列=文字列+ u»%»
出力=出力+ self.getSpaces(スペース)+文字列
elif datatype == "HM":
string = self.day_forecast [day_number] .humidity
self.isNumeric(string)== Trueの場合:
文字列=文字列+ u»%»
出力=出力+ self.getSpaces(スペース)+文字列
elif datatype == "WD":
string = self.day_forecast [day_number] .wind_dir

self.locale == "is"の場合:
出力=出力+ self.getSpaces(スペース)+ WeatherText.bearing_text_es [文字列]
elif self.locale == "fr":
出力=出力+ self.getSpaces(スペース)+ WeatherText.bearing_text_fr [文字列]
その他:
出力=出力+ self.getSpaces(スペース)+文字列

elif datatype == "BF":
output = output + self.getSpaces(spaces)+ WeatherText.bearing_arrow_font [self.day_forecast [day_number] .wind_dir]
elif datatype == "WS":
string = self.day_forecast [day_number] .wind_speed
self.isNumeric(string)== Trueの場合:
インペリアルの場合== True:
文字列= self.convertKilometresToMiles(文字列)
文字列=文字列+スピードユニット
出力=出力+ self.getSpaces(スペース)+文字列
elif datatype == "WG":
string = self.day_forecast [day_number] .wind_gusts
self.isNumeric(string)== Trueの場合:
インペリアルの場合== True:
文字列= self.convertKilometresToMiles(文字列)
文字列=文字列+スピードユニット
出力=出力+ self.getSpaces(スペース)+文字列
elif datatype == "CN":
output = output + self.getSpaces(spaces)+ self.day_forecast [day_number] .city
elif datatype == "SR":
output = output + self.getSpaces(spaces)+ self.day_forecast [day_number] .sunrise
elif datatype == "SS":
output = output + self.getSpaces(spaces)+ self.day_forecast [day_number] .sunset
elif datatype == "MP":
output = output + self.getSpaces(spaces)+ self.day_forecast [day_number] .moon_phase
elif datatype == "MF":
output = output + self.getSpaces(spaces)+ WeatherText.conditions_moon_font [self.day_forecast [day_number] .moon_icon]
elif datatype == "BR":
output = output + self.getSpaces(spaces)+ self.day_forecast [day_number] .bar_read
elif datatype == "BD":
output = output + self.getSpaces(spaces)+ self.day_forecast [day_number] .bar_desc
その他:
output = u»\ nERROR:不明なデータ型が要求されました»
破る

output = u»»+ output.strip(u»«)#先頭/末尾のスペースを失う
出力を返す

#except:
#print "getOutputText:予期しないエラー:"、sys.exc_info()[0]

def getOutputTextFromTemplate(self、template):
#try:

#テンプレートデータへのキー
DATATYPE_KEY = "–datatype ="
STARTDAY_KEY = "–startday ="
ENDDAY_KEY = "–endday ="
NIGHT_KEY = "–night"
SHORTWEEKDAY_KEY = "–shortweekday"
IMPERIAL_KEY = "–imperial"
HIDEUNITS_KEY = "–hideunits"
SPACES_KEY = "–spaces ="

出力= u»»

オプションが見つかりました = False

#ファイルをロード
試してみてください。
fileinput = open(self.options.template)
テンプレート= fileinput.read()
fileinput.close()
を除いて:
output = u»テンプレートファイルが見つかりません!»

templatelist = self.getTemplateList(テンプレート)

#テンプレートリストをウォークスルーして、見つかった各アイテムの出力を決定します
範囲(0、len(テンプレートリスト)-1)のiの場合:

pos = templatelist [i] .find(DATATYPE_KEY)
pos!= -1の場合:
オプションが見つかりました = True
pos = pos + len(DATATYPE_KEY)
datatype = templatelist [i] [pos:pos + 4] .strip(«}»)。strip(«{«)。strip(«-«)。strip(»«)
その他:
データ型=なし

pos = templatelist [i] .find(STARTDAY_KEY)
pos!= -1の場合:
オプションが見つかりました = True
pos = pos + len(STARTDAY_KEY)
startday = int(templatelist [i] [pos:pos + 4] .strip( "}")。strip( "{")。strip( "-")。strip( ""))
その他:
startday =なし

pos = templatelist [i] .find(ENDDAY_KEY)
pos!= -1の場合:
オプションが見つかりました = True
pos = pos + len(ENDDAY_KEY)
endday = int(templatelist [i] [pos:pos + 4] .strip( "}")。strip( "{")。strip( "-")。strip( ""))
その他:
終了日=なし

pos = templatelist [i] .find(NIGHT_KEY)
pos!= -1の場合:
オプションが見つかりました = True
夜=真
その他:
夜=偽

pos = templatelist [i] .find(SHORTWEEKDAY_KEY)
pos!= -1の場合:
オプションが見つかりました = True
shortweekday = True
その他:
短い平日 = False

pos = templatelist [i] .find(IMPERIAL_KEY)
pos!= -1の場合:
オプションが見つかりました = True
インペリアル= True
その他:
インペリアル= False

pos = templatelist [i] .find(HIDEUNITS_KEY)
pos!= -1の場合:
オプションが見つかりました = True
hiddenunits = True
その他:
hideunits = 偽

pos = templatelist [i] .find(SPACES_KEY)
pos!= -1の場合:
オプションが見つかりました = True
pos = pos + len(SPACES_KEY)
スペース= int(templatelist [i] [pos:pos + 4] .strip(«}»)。strip(«{«)。strip(«-«)。strip(»«))
その他:
スペース= 1

optionfound == Trueの場合:
templatelist [i] = self.getOutputText(datatype、startday、endday、night、shortweekday、imperial、hideunits、spaces)
オプションが見つかりました = False

#出力が入力されたので、出力を連結するリストを調べます
templatelistのアイテムの場合:
出力=出力+アイテム

出力を返す

#except:
#print "getOutputTextFromTemplate:予期しないエラー:"、sys.exc_info()[0]

def fetchData(self):

#常にメトリックデータをフェッチし、このデータで会話関数を使用します
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)

self.isConnectionAvailable()== Falseの場合:
os.path.exists(file_path_current)の場合:
RefetchData = False
else:#接続なし、キャッシュなし、強打!
印刷「インターネット接続が利用できず、キャッシュされた気象データが存在しません。」
elif self.options.refetch == True:
RefetchData = True
その他:
#データを再度取得する必要がありますか?
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))。timetuple()

expiryDate> lastmodDateの場合:
RefetchData = True
その他:
RefetchData = False
その他:
RefetchData = True

#ウェブサイトから、または「unpickling」によって、現在の状態データをフェッチします
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、«天気データの取得«、URL

Usock = urllib2.urlopen(url)
xml = usock.read()
Usock.close()
self.weatherxmldoc = minidom.parseString(xml)
を除いて:
print "fetchData:Unexpected error:"、sys.exc_info()[0]
印刷「現在の状況について気象ソースに連絡できません」

#場所が悪いかどうかをユーザーに伝えます…
found = 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»今日»
precip = u»N / A»
sunrise_n = location_n.getElementsByTagName( 'sunr')[0]
sunrise = self.getText(sunrise_n.childNodes)
Sunset_n = location_n.getElementsByTagName( 'suns')[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)
湿度_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 = WeatherData(day_of_week、current_temp_feels、current_temp、current_code、current_desc、precip、heidumity、wind_direction、wind_speed、wind_gusts、city、sunrise、sunset、moon_phase、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( 'low')[0]
low_temp = self.getText(low_temp_n.childNodes)

sunrise_n = day.getElementsByTagName( 'sunr')[0]
sunrise = self.getText(sunrise_n.childNodes)
Sunset_n = day.getElementsByTagName( 'suns')[0]
日没= 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]
condition = self.getText(condition_n.childNodes)
precip_n = daytime_n.getElementsByTagName( 'ppcp')[0]
precip = self.getText(precip_n.childNodes)
湿度_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、humidity、wind_direction、wind_speed、wind_gusts、city、sunrise、sunset、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]
condition = self.getText(condition_n.childNodes)
precip_n = daytime_n.getElementsByTagName( 'ppcp')[0]
precip = self.getText(precip_n.childNodes)
湿度_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、humidity、wind_direction、wind_speed、wind_gusts、city、sunrise、sunset、moon_phase、moon_icon、bar_read、bar_desc)
self.night_forecast.append(night_forecast_data)

#次回のためにデータをピクルスにします!
fileoutput = open(file_path_current、 'w')
pickle.dump(self.current_conditions、fileoutput)
fileoutput.close()

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

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

を除いて:
print "fetchData:Unexpected error:"、sys.exc_info()[0]
印刷「気象データを調べることができません」

else:#pickle化されたクラスファイルから気象データをフェッチします
self.options.verbose == Trueの場合:
print >> sys.stdout、«ファイルからの気象データのフェッチ:«、file_path_current

fileinput = open(file_path_current、 'r')
self.current_conditions = pickle.load(fileinput)
fileinput.close()

self.options.verbose == Trueの場合:
print >> sys.stdout、 "ファイルからの日予報データのフェッチ:"、file_path_dayforecast、file_path_nightforecast

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

self.options.verbose == Trueの場合:
print >> sys.stdout、 "ファイルからの日予報データのフェッチ:"、file_path_nightforecast、file_path_nightforecast

fileinput = open(file_path_nightforecast、 'r')
self.night_forecast = pickle.load(fileinput)
fileinput.close()

def outputData(self):
#try:

self.options.template!=なしの場合:

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

その他:

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

#except:
#print "outputData:予期しないエラー:"、sys.exc_info()[0]

if __name__ == "__main __":

パーサー= CommandLineParser()
(オプション、引数)= parser.parse_args()

options.verbose == Trueの場合:
印刷>> sys.stdout、 "location:"、options.location
印刷>> sys.stdout、 "imperial:"、options.imperial
印刷>> sys.stdout、 "datatype:"、options.datatype
印刷>> sys.stdout、 "night:"、options.night
印刷>> sys.stdout、 "開始日:"、options.startday
印刷>> sys.stdout、 "終了日:"、options.endday
印刷>> sys.stdout、 "spaces:"、options.spaces
印刷>> sys.stdout、 "verbose:"、options.verbose
印刷>> sys.stdout、 "refetch:"、options.refetch

#新しいグローバル気象オブジェクトを作成する
天気= GlobalWeather(オプション)
weather.fetchData()
weather.outputData()

ファイルを作成します〜/ Conky / scripts / myweather.template

gedit〜 / Conky /スクリプト/myweather.template

以下を中に貼り付けます。

{–datatype = DW –startday = 1}:{– datatype = CC –startday = 1}
{–datatype = HT –startday = 1} / {–datatype = LT –startday = 1} {–datatype = WD –startday = 1}から{–datatype = WS –startday = 1}への風
湿度:{– datatype = HM –startday = 1}降水量:{– datatype = PC –startday = 1}
日の出:{– datatype = SR –startday = 1}日没:{– datatype = SS –startday = 1}
----------------
{–datatype = DW –startday = 2}:{– datatype = CC –startday = 2}
{–datatype = HT –startday = 2} / {–datatype = LT –startday = 2} {–datatype = WD –startday = 2}から{–datatype = WS –startday = 2}への風
湿度:{– datatype = HM –startday = 2}降水量:{– datatype = PC –startday = 2}
日の出:{– datatype = SR –startday = 2}日没:{– datatype = SS –startday = 2}
----------------
{–datatype = DW –startday = 3}:{– datatype = CC –startday = 3}
{–datatype = HT –startday = 3} / {–datatype = LT –startday = 3} {–datatype = WD –startday = 3}から{–datatype = WS –startday = 3}への風
湿度:{– datatype = HM –startday = 3}降水量:{– datatype = PC –startday = 3}
日の出:{– datatype = SR –startday = 3}日没:{– datatype = SS –startday = 3}
----------------
{–datatype = DW –startday = 4}:{– datatype = CC –startday = 4}
{–datatype = HT –startday = 4} / {–datatype = LT –startday = 4} {–datatype = WD –startday = 4}から{–datatype = WS –startday = 4}への風
湿度:{– datatype = HM –startday = 4}降水量:{– datatype = PC –startday = 4}
日の出:{– datatype = SR –startday = 4}日没:{– datatype = SS –startday = 4}

ファイルを作成します〜/ Conky / scripts / mail / conkyEmail.py(メールフォルダを作成する必要があります)

gedit〜 / Conky /スクリプト/メール/conkyEmail.py

以下を中に貼り付けます。

輸入OS
インポート文字列

#以下にユーザー名とパスワードを二重引用符で囲んで入力してください
#例: ユーザー名=»ユーザー名»およびパスワード=»パスワード»
ユーザー名=»YOUR_USUARIO_SINARROBA«
パスワード=»YOUR_KEY«

com =»wget-O-https://»+ユーザー名+»:»+パスワード+»@ mail.google.com/メール/フィード/アトム–no-check-certificate»

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

fc == 0の場合:
「0new」を出力
その他:
印刷str(fc)+»新規»

これで、7つのファイルができました。

フォルダ内:〜
-> .startconky <<-実行可能にする

フォルダ内:〜/ Conky
-> conkymain
-> conkyforecast
-> conkymail

とフォルダ内:〜/ Conky /スクリプト
-> conkyForecast.py <<-実行可能ファイルにする
-> myweather.template

およびフォルダ内:〜/ Conky / scripts / mail
conkyEmail.py <<-実行可能にする

そして、それはそれです、それが言うところ/ホーム/ユーザー/ ...あなたのユーザー名が行きますそしてGmailデータが行く部分で、私はあなたがあなたのデータを置かなければならない色で強調しました。

conkyプロセスを強制終了するにはコンソールに書き込みます

キルオール・コンキー

コンソールへのconky書き込みを実行するには

./.スタートコンキー

すべてを調整したら、conkyで各セッションを開始したい場合

[システム]-> [設定]-> [セッション]およびスタートアッププログラムで追加します

Nameには、Conkyと書くことができます。Order./。startconkyを使用すると、PCの電源を入れるたびに起動します。

それだけです、私はそれがあなたを助けることを願っています。


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。