كونكي ، الإعداد الخاص بي

طلب مني Fecfactor أمس أن أنشر تكوين conky الذي أعرضه في لقطة الشاشة أدناه

كما ترون ، هناك 3 conkys ، يتم تنفيذها عن طريق برنامج نصي ، يعتمد تكوينها على هذه الوظيفة أرسله المستخدم Bruce M. في منتديات أوبونتو أر مع بعض التعديلات في بريد conky ، والذي في حالتي مخصص لـ Gmail.

في المنشور المرجعي ، تم شرحه جيدًا بواسطة Bruce ، ولكن أيضًا كمساعد للذاكرة بالنسبة لي ، سأقوم بنسخ الخطوات التي يجب اتباعها ورمز conkys الخاص بي لمن يمتلكها.

حسنًا ، بالطبع نحتاج إلى تثبيت conky و curl و python حتى نكتب وحدة التحكم:

sudo apt-get install conky curl python. تثبيت sudo apt-get install conky curl python

مصدر weather.ttf و arrows.ttf هنا. مصدر القمر. ttf هنا بمجرد التنزيل ، يجب نسخها إلى / usr / share / Fonts

لنقم الآن بإنشاء البرنامج النصي المسمى ~. / Startconky

gksudo gedit ~ / .startconky

داخل الملف الفارغ نقوم بلصق ما يلي

#! / بن / باش
sleep 0 & # 0 جيد لـ Xfce - استخدم 20 إلى 30 لـ Gnome
conky -c ~ / Conky / conkymain &
#sleep 0 & # 0 جيد لـ Xfce - استخدم 1 لـ Gnome
conky -c ~ / Conky / conkyforecast &
#sleep 0 & # 0 جيد لـ Xfce - استخدم 1 لـ Gnome
conky -c ~ / Conky / conkymail &

نقوم الآن بإنشاء ملف conkymain في المجلد ~ / Conky ، وإلا فسيكون لدينا مجلد Conky ، فسنضطر إلى إنشائه.

gedit ~ / Conky / conkymain

أستخدم خط Calibri ، إذا لم يكن لديك ، فاستبدله بما تريد.

نتمسك بما يلي

الخلفية لا
own_window نعم
own_window_transparent نعم
own_window_hints undecorated، below، sticky، skip_taskbar، skip_pager
own_window_colour أسود
مزدوج المخزن نعم
يسار use_spacer
use_xft نعم
حجم الخط: الحجم = 9
xftfont calibri: الحجم = 9
كسفتالفا 0.5
update_interval 5.0 تحديث
الأحرف الكبيرة no # مضبوطة على نعم إذا كنت تريد أن يكون كل النص بأحرف كبيرة
stippled_border 3
هامش_الحد 9
عرض_الحدود 10
default_color أبيض
default_outline_color أسود
default_shade_color أسود
0 سماوي
اللون 1 lightblue
اللون 2 برتقالي
color3 أصفر
لون 4 قمح
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 yes # Shadecolor black

TEXT
$ {font calibri: size = 12} $ {alignc} $ {color1} $ sysname $ kernel على $ 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} وقت التشغيل: $ {alignr 2} $ uptime $ color
$ {color0} $ {hr 1} $ color
وحدة المعالجة المركزية $ {voffset 5} $ {color2}: $ {alignc} $ color $ running_processes $ {color1} / $ color $ Operations $ {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} ذاكرة الوصول العشوائي: $ 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 $ {المخبأة}
$ {voffset 5} $ {color2} SWAP: $ color $ swap $ {color2} / $ color $ {swapmax} $ {alignr 2} $ {color2} $ {swapbar 14,80} $ color
$ {color1} $ {voffset -16} $ {alignr 5} $ swapperc٪
$ {color0} $ {hr 1} $ color
$ {voffset 5} $ {color2} HD Info $ {color1} - $ color Free $ {color1} - مستخدم - $ {color2} الإجمالي
$ {voffset 5} $ {color1} الجذر: $ color $ {fs_free_perc /}٪ $ {alignr 2} $ {fs_free /} $ {color2} / $ {color1} $ {fs_used /} $ color / $ {color2} $ {fs_size /} $ اللون
$ {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 مترًا $ اللون
$ {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 / scripts / 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} الرياح: $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = WS} $ color
$ {color1} الرطوبة: $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = HM} $ {alignr 2} $ {color1} هطول الأمطار: $ {color3} $ { execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = PC} $ color
$ {alignc} $ {color1} الضغط: $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = BR} - $ {color3} $ {execi 3600 python ~ / Conky /scripts/conkyForecast.py –location = ARBA0009 –datatype = BD} $ color
$ {color4} $ {hr} $ color
$ {color1} شروق الشمس: $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = SR} $ {alignr 2} $ {color1} غروب الشمس: $ {color3} $ { execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = SS} $ color
$ {voffset 15} $ {color1} القمر: $ {color4} $ {alignr 2} $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = MP} $ color
$ {voffset -20} $ {offset 80} $ {color4} $ {font moon stage: 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 أسود
مزدوج المخزن نعم
يسار use_spacer
use_xft نعم
حجم الخط: الحجم = 8
xftfont calibri: الحجم = 8
كسفتالفا 0.5
update_interval 5.0 تحديث
الأحرف الكبيرة no # مضبوطة على نعم إذا كنت تريد أن يكون كل النص بأحرف كبيرة
stippled_border 3
هامش_الحد 9
عرض_الحدود 10
default_color أبيض
default_outline_color أسود
default_shade_color أسود
0 سماوي
اللون 1 lightblue
اللون 2 برتقالي
color3 أصفر
لون 4 قمح
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 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 أسود
مزدوج المخزن نعم
يسار use_spacer
use_xft نعم
حجم الخط: الحجم = 8
xftfont calibri: الحجم = 8
كسفتالفا 0.5
update_interval 5.0 تحديث
الأحرف الكبيرة no # مضبوطة على نعم إذا كنت تريد أن يكون كل النص بأحرف كبيرة
stippled_border 3
هامش_الحد 9
عرض_الحدود 10
default_color أبيض
default_outline_color أسود
default_shade_color أسود
0 سماوي
اللون 1 lightblue
اللون 2 برتقالي
color3 أصفر
لون 4 قمح
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 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} بريد إلكتروني (رسائل) $ الخط

نقوم بإنشاء ملف في ~ / Conky / scripts / conkyForecast.py (يجب علينا إنشاء مجلد البرامج النصية)

gedit ~ / Conky / scripts / conkyForecast.py

#! / usr / bin / python
# - * - الترميز: utf-8 - * -
################################################## ##############################
# conkyForecast.py هو برنامج نصي بيثون (لم يعد) بسيطًا (بعد الآن) لجمعه
# تفاصيل الطقس الحالي للاستخدام في 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 تمت إضافة نص شرط إسباني - شكرًا بروس م
# 19/04/2008 تمت إضافة فحص رقمي على كافة المخرجات الرقمية مع لاحقة الوحدات
# 19/04/2008 تم تغيير تسمية ملف المخلل لتضمين رمز الموقع
# 19/04/2008 تمت إضافة تحويل أيام الأسبوع الإسبانية عبر اللغة
# 20/04/2008 تمت إضافة محلل وسيطة أمر لائق
# 20/04/2008 تمت الإضافة - خيار يوم قصير ، إذا تم تحديد نوع بيانات اليوم من الأسبوع ، يتم اختصاره إلى 3 أحرف
# 21/04/2008 خيارات الإعدادات المحلية الثابتة للمخرجات المتوقعة
# 21/04/2008 تمت إضافة خيار القالب للسماح بالإخراج المخصص باستخدام استدعاء exec واحد 🙂
# 21/04/2008 تمت إضافة خيار وحدات الإخفاء لإزالة ، على سبيل المثال ، ميل في الساعة و C من الإخراج
# 23/04/2008 تمت إزالته - خيار إمبراطوري من القالب ، يجب تعيين هذا كخيار قياسي في استدعاء البرنامج النصي وليس استخدامه في ملف القالب.
# 23/04/2008 - خيار إمبراطوري للقالب ، يتيح القيم المترية أو الإمبريالية لكل نوع بيانات. ملاحظة عند استخدام خيار سطر الأوامر القوالب لن يعمل.
# 23/04/2008 الإخراج المضاف لإعلام المستخدم إذا كان الموقع المحدد سيئًا
# 24/04/2008 المعالجة المضافة لعدم وجود اتصال ، ستعود إلى البيانات المخزنة مؤقتًا الآن (خطأ في حالة عدم وجود ذاكرة تخزين مؤقت). الاختبارات بمحاولة فتح xoap.weather.com
# 24/04/2008 تحويل درجة مئوية ثابتة إلى فهرنهايت
# 06/05/2008 تم استخدام عنوان url بعد تحديث خدمة الويب
# 09/05/2008 جلب بيانات الحالة الحالية والتوقعات الموحدة في مكالمة واحدة
# 09/05/2008 تمت إضافة شروق الشمس وغروبها إلى أنواع البيانات ، وهي خاصة بالظروف الحالية والبيانات المتوقعة
# 09/05/2008 تمت إضافة طور القمر وقراءة البارومتر ووصف البارومتر لأنواع البيانات ، هذه خاصة بالظروف الحالية فقط وبالتالي فهي غير متوفرة في المخرجات المتوقعة
# 09/05/2008 تحويلات الوحدات المضافة للبارومتر من ميغا بايت إلى بوصة (إمبراطوري)
# 09/05/2008 نص شرطي إسباني محدث - شكرًا بروس م
# 10/05/2008 تمت إضافة بيانات اللغة الفرنسية - شكرًا benpaka
# 12/05/2008 تمت إضافة نوع بيانات BF جديد (خط محمل) لتوفير حرف سهم (استخدم مع خط Arrow.ttf) بدلاً من إخراج NSEW من WD (اتجاه الرياح)
# 12/05/2008 تم تحديث إخراج WD ليكون محددًا باللغة ، ويدعم حاليًا الإنجليزية والإسبانية الافتراضية - شكرًا Bruce M.
# 18/05/2008 تمت إضافة نوع بيانات MF جديد (خط القمر) لتوفير حرف خط القمر (الأحرف غير صحيحة ولا يوجد خط مخصص حتى الآن).
# 21/05/2008 للظروف الحالية ، يعرض الخيار –datatype = LT الآن درجة الحرارة "تبدو وكأنها" بدلاً من درجة الحرارة الحالية
#
# كل شيء:
# دمج ملفات pkl في ملف / فئة واحدة
# أضف خط طقس بناءً على إخراج طور القمر بناءً على بيانات رمز القمر
# ؟؟؟ هل هناك المزيد من المتطلبات؟

استيراد النظام ، نظام التشغيل ، المقبس ، urllib2 ، التاريخ والوقت
من xml.dom استيراد minidom
من استيراد الإحصائيات *
من optparse استيراد OptionParser
لغة الاستيراد
استيراد gettext
مخلل استيراد
من استيراد الرياضيات *

APP = »conkyForecast.py»
DIR = os.path.dirname (__ملف__) + '/ locale'
gettext.bindtextdomain (APP ، DIR)
gettext.textdomain (APP)
_ = gettext.gettext

فئة CommandLineParser:

المحلل اللغوي = بلا

def __init __ (ذاتي):

self.parser = OptionParser ()
self. الافتراضي:٪ افتراضي] ، استخدم عنوان url التالي لتحديد رمز موقعك حسب اسم المدينة: http://xoap.weather.com/search/search؟where=Norwich »)
self.parser.add_option ("- d"، "- datatype"، dest = "datatype"، افتراضي = "HT"، type = "string"، metavar = "DATATYPE"، help = u "[افتراضي:٪ افتراضي] خيارات نوع البيانات هي: DW (يوم من الأسبوع) ، WF (إخراج خط الطقس) ، LT (تنبؤ: درجة حرارة منخفضة ، حالي: ملمس مثل درجة الحرارة) ، HT (التنبؤ: درجة حرارة عالية ، الحالي: درجة الحرارة الحالية) ، CC (الحالي الشروط) ، CT (نص الشروط) ، الكمبيوتر (فرصة هطول الأمطار) ، 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» ، »- مسافات» ، dest = »مسافات» ، اكتب = »int» ، افتراضي = 1 ، metavar = »NUMBER» ، مساعدة = u »[افتراضي:٪ افتراضي] يحدد عدد المسافات بين الناتج المحدد. غير قابل للتطبيق في سطر الأوامر عند استخدام القوالب. »)
self.parser.add_option («- t» ، »- قالب» ، dest = »قالب» ، اكتب = »سلسلة» ، metavar = »FILE» ، مساعدة = u »تحدد ملف قالب لتوليد مخرجات في مكالمة واحدة. العنصر القابل للعرض في الملف بصيغة {–datatype = HT –startday = 1}. فيما يلي الخيارات الممكنة داخل كل عنصر: –datatype، –startday، –endday، –night، –shortweekday، – Empire، –hideunits، - المسافات. لاحظ أن النماذج المختصرة للخيارات غير مدعومة حاليًا! لا يمكن تطبيق أي من هذه الخيارات في سطر الأوامر عند استخدام النماذج. »)
self.parser.add_option («- L» ، »- locale» ، dest = »locale» ، اكتب = »سلسلة» ، مساعدة = u »تجاوز لغة النظام لإخراج اللغة (en = english، es = spanish، fr = الفرنسية ، المزيد قادم) »)
self.parser.add_option ("- i"، "- im Imperial"، dest = "im 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 ()

بيانات الطقس للفئة:
def __init __ (self، day_of_week، low، high، condition_code، condition_text، هطول، الرطوبة، 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 »» + هطول
الرطوبة الذاتية = 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:

condition_text = {
«0»: _ (u »تورنادو») ،
«1»: _ (u »عاصفة استوائية») ،
«2»: _ (u »إعصار») ،
«3»: _ (ش »عواصف رعدية شديدة») ،
«4»: _ (u »عواصف رعدية») ،
«5»: _ (u »الأمطار والثلوج المختلطة») ،
«6»: _ (u »المطر والثلج المختلط») ،
«7»: _ (ش »هطول مختلط») ،
«8»: _ (u »رذاذ متجمد») ،
«9»: _ (u »رذاذ») ،
«10»: _ (u »المطر المتجمد») ،
«11»: _ (u »الاستحمام») ،
«12»: _ (u »الاستحمام») ،
«13»: _ (u »تساقط الثلوج») ،
«14»: _ (u »زخات ثلجية خفيفة») ،
«15»: _ (u »هبوب ثلج») ،
«16»: _ (ش »ثلج») ،
«17»: _ (ش »حائل») ،
«18»: _ (u »الصقيع») ،
«19»: _ (u »الغبار») ،
«20»: _ (u »الضباب») ،
«21»: _ (u »ضباب») ،
«22»: _ (ش »دخان») ،
«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»: _ (ش »مطر مختلط وحائل») ،
«36»: _ (u »Hot») ،
«37»: _ (ش »عواصف رعدية متفرقة») ،
«38»: _ (u »عواصف رعدية متفرقة») ،
«39»: _ (u »عواصف رعدية متفرقة») ،
«40»: _ (u »أمطار متفرقة») ،
«41»: _ (u »ثلوج كثيفة») ،
«42»: _ (u »أمطار ثلجية متفرقة») ،
«43»: _ (u »ثلوج كثيفة») ،
«44»: _ (u »غائم جزئيًا») ،
«45»: _ (u »أمطار رعدية») ،
«46»: _ (u »زخات ثلج») ،
«47»: _ (ش »عواصف رعدية متفرقة») ،
«نا»: _ (u »لا ينطبق») ،
"-": _(أ")
}

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 »الاستحمام») ،
«12»: _ (u »الاستحمام») ،
«13»: _ (u »Light Snow») ،
«14»: _ (u »Light Snow») ،
«15»: _ (u »عاصفة ثلجية ثلجية») ،
«16»: _ (ش »ثلج») ،
«17»: _ (ش »حائل») ،
«18»: _ (u »الصقيع») ،
«19»: _ (ش »مسحوق») ،
«20»: _ (u »الضباب») ،
«21»: _ (u »ضباب») ،
«22»: _ (ش »دخان») ،
«23»: _ (u »العاصفة») ،
«24»: _ (u »Windy») ،
«25»: _ (u »Fráo») ،
«26»: _ (ش »غائم جدًا») ،
«27»: _ (u »غائم في الغالب») ،
«28»: _ (u »غائم في الغالب») ،
«29»: _ (u »غائم جزئيًا») ،
«30»: _ (u »غائم جزئيًا») ،
«31»: _ (u »مسح») ،
«32»: _ (u »مسح») ،
«33»: _ (u »شيء غائم») ،
«34»: _ (u »شيء غائم») ،
«35»: _ (ش »مطر مع البَرَد») ،
«36»: _ (u »حرارة») ،
«37»: _ (ش »عواصف منعزلة») ،
«38»: _ (u »عواصف متفرقة») ،
«39»: _ (u »عواصف متفرقة») ،
«40»: _ (u »أمطار متفرقة») ،
«41»: _ (u »ثلوج كثيفة») ،
«42»: _ (ش »تساقط ثلوج ضعيفة ومتفرقة») ،
«43»: _ (u »Intense Nevada») ،
«44»: _ (u »غيوم متفرقة») ،
«45»: _ (u »العواصف») ،
«46»: _ (أو »تساقط الثلوج المتناثرة») ،
«47»: _ (ش »عواصف منعزلة») ،
«نا»: _ (u »لا ينطبق») ،
"-": _(أ")
}

condition_text_fr = {
«0»: _ (u »تورناد») ،
«1»: _ (u »Tempête Tropicale») ،
«2»: _ (أو »Ouragan») ،
«3»: _ (أو »Orages Violents») ،
«4»: _ (أو »Orageux») ،
«5»: _ (u »Pluie et Neige») ،
«6»: _ (u »Pluie et Neige Mouillée») ،
«7»: _ (u »متغير avec averses») ،
«8»: _ (u »Bruine Givrante») ،
«9»: _ (u »Bruine») ،
«10»: _ (u »Pluie Glacante») ،
«11»: _ (u »Averses») ،
«12»: _ (u »Averses») ،
«13»: _ (u »Légère Neige») ،
«14»: _ (u »Forte Neige») ،
«15»: _ (u »Tempête de Neige») ،
«16»: _ (u »Neige») ،
«17»: _ (u »Grêle») ،
«18»: _ (u »Pluie / Neige») ،
«19»: _ (u »Nuage de poussière») ،
«20»: _ (u »Brouillard») ،
«21»: _ (u »بروم») ،
«22»: _ (u »Fumée») ،
«23»: _ (u »Tres Venteux») ،
«24»: _ (u »Venteux») ،
«25»: _ (u »Froid») ،
«26»: _ (u »Nuageux») ،
«27»: _ (u »Tres Nuageux») ،
«28»: _ (u »Tres Nuageux») ،
«29»: _ (u »Nuages ​​Disséminés») ،
«30»: _ (u »Nuages ​​Disséminés») ،
«31»: _ (u »العاشق») ،
«32»: _ (u »العاشق») ،
«33»: _ (u »Belles Éclaircies») ،
«34»: _ (u »Belles Éclaircies») ،
«35»: _ (u »Pluie avec Grêle») ،
«36»: _ (u »Chaleur») ،
«37»: _ (أو »Orages Isolés») ،
«38»: _ (أو »Orages Localisés») ،
«39»: _ (أو »Orages Localisés») ،
«40»: _ (u »Averses Localisées») ،
«41»: _ (u »Neige Lourde») ،
«42»: _ (u »Tempête de Neige Localisées») ،
«43»: _ (u »Neige Lourde») ،
«44»: _ (u »Nuages ​​Disséminés») ،
«45»: _ (أو »Orages») ،
«46»: _ (u »Tempête de Neige») ،
«47»: _ (أو »Orages Isolés») ،
«نا»: _ (u »لا ينطبق») ،
"-": _(أ")
}

condition_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»: _ (ش »أ») ،
«22»: _ (ش »د») ،
«23»: _ (ش »د») ،
«24»: _ (ش »د») ،
«25»: _ (ش »د») ،
«26»: _ (u »e») ،
«27»: _ (u »e») ،
«28»: _ (u »e») ،
«29»: _ (ش »ج») ،
«30»: _ (ش »ج») ،
«31»: _ (ش »أ») ،
«32»: _ (ش »أ») ،
«33»: _ (ش »ب») ،
«34»: _ (ش »ب») ،
«35»: _ (u »k») ،
«36»: _ (ش »أ») ،
«37»: _ (u »f») ،
«38»: _ (u »f») ،
«39»: _ (u »f») ،
«40»: _ (u »g») ،
«41»: _ (u »k») ،
«42»: _ (u »k») ،
«43»: _ (u »k») ،
«44»: _ (ش »ب») ،
«45»: _ (u »g») ،
«46»: _ (u »k») ،
«47»: _ (u »f») ،
«نا»: _ (ش »») ،
"-": _(أو"")
}

condition_moon_font = {
«0»: _ (u »1 ″) ،
«1»: _ (u »N») ،
«2»: _ (u »O») ،
«3»: _ (u »P») ،
«4»: _ (ش »س») ،
«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»: _ (ش »أ») ،
«17»: _ (ش »ب») ،
«18»: _ (ش »ج») ،
«19»: _ (u »D») ،
«20»: _ (u »E») ،
«21»: _ (u »F») ،
«22»: _ (u »G») ،
«23»: _ (u »H») ،
«24»: _ (ش »أنا») ،
«25»: _ (u »J») ،
«26»: _ (u »K») ،
«27»: _ (u »L») ،
«28»: _ (u »M») ،
«29»: _ (u »1 ″) ،
«نا»: _ (ش »») ،
"-": _(أو"")
}

يوم_من_أسبوع = {
"اليوم": _ (أو "اليوم") ،
«الاثنين»: _ (ش »الاثنين») ،
«الثلاثاء»: _ (ش »الثلاثاء») ،
«الأربعاء»: _ (ش »الأربعاء») ،
«الخميس»: _ (ش »الخميس»)،
"الجمعة": _ (ش "الجمعة") ،
"السبت": _ (ش "السبت") ،
"الأحد": _ (ش "الأحد")
}

day_of_week_short = {
"اليوم": _ (u "Now") ،
«الاثنين»: _ (ش »الاثنين») ،
«الثلاثاء»: _ (ش »الثلاثاء») ،
«الأربعاء»: _ (ش »الأربعاء») ،
«الخميس»: _ (ش »خميس») ،
«الجمعة»: _ (u »الجمعة») ،
"السبت": _ (ش "السبت") ،
"الأحد": _ (ش "الشمس")
}

يوم_من_الأسبوع = {
"اليوم": _ (ش "اليوم") ،
"الاثنين": _ (ش "الاثنين") ،
«الثلاثاء»: _ (أو »الثلاثاء») ،
«الأربعاء»: _ (ش »الأربعاء») ،
«الخميس»: _ (ش »الخميس»)،
«الجمعة»: _ (ش »الجمعة») ،
"السبت": _ (ش "السبت") ،
"الأحد": _ (ش "الأحد")
}

day_of_week_short_ar = {
"اليوم": _ (ش "اليوم") ،
"الاثنين": _ (u "mon") ،
«الثلاثاء»: _ (ش »البحر») ،
«الأربعاء»: _ (ش »الأربعاء»)،
«الخميس»: _ (ش »خميس») ،
"الجمعة": _ (ش "الجمعة") ،
"السبت": _ (ش "سبت") ،
"الأحد": _ (u "dom")
}

day_of_week_fr = {
«اليوم»: _ (u »Aujourd'hui») ،
«الاثنين»: _ (ش »لوندي») ،
«الثلاثاء»: _ (ش »ماردي») ،
«الأربعاء»: _ (ش »ميركريدي») ،
«الخميس»: _ (ش »جودي») ،
«الجمعة»: _ (ش »فيندريدي») ،
"السبت": _ (u "Samedi") ،
"الأحد": _ (ش "ديمانش")
}

day_of_week_short_fr = {
«اليوم»: _ (ش »العوج») ،
"الاثنين": _ (ش "الاثنين") ،
«الثلاثاء»: _ (ش »مارس») ،
"الأربعاء": _ (u "Mer") ،
«الخميس»: _ (u »Jeu») ،
«الجمعة»: _ (ش »تعال») ،
"السبت": _ (ش "سام") ،
"الأحد": _ (ش "خافت")
}

Bear_arrow_font = {
«N»: _ (u »i») ،
«NNE»: _ (u »j») ،
«NE»: _ (u »k») ،
«ENE»: _ (u »l») ،
«E»: _ (u »m») ،
«ESE»: _ (u »n») ،
"SE": _ (u "o") ،
«SSE»: _ (u »p») ،
«S»: _ (u »a») ،
«SSW»: _ (u »b») ،
«SW»: _ (u »c») ،
"WSW": _ (u "d") ،
«W»: _ (u »e») ،
"WNW": _ (u "f") ،
«NW»: _ (u »g») ،
«NNW»: _ (u »h») ،
«لا ينطبق»: _ (ش »«)
}

تحمل_text_es = {
«N»: _ (u »N») ،
«NNE»: _ (u »NNE») ،
«NE»: _ (u »NE») ،
«ENE»: _ (u »ENE») ،
«E»: _ (u »E») ،
«ESE»: _ (u »ESE») ،
«SE»: _ (u »SE») ،
"SSE": _ (u "SSE") ،
"هم")،
"SSW": _ (u "SSO") ،
«SW»: _ (u »SO») ،
"WSW": _ (u "WOW") ،
«W»: _ (u »O») ،
«WNW»: _ (u »ONO») ،
«NW»: _ (u »لا») ،
«NNW»: _ (u »NNO») ،
«لا ينطبق»: _ (u »لا ينطبق»)
}

تحمل_text_fr = {
«N»: _ (u »N») ،
«NNE»: _ (u »NNE») ،
«NE»: _ (u »NE») ،
«ENE»: _ (u »ENE») ،
«E»: _ (u »E») ،
«ESE»: _ (u »ESE») ،
«SE»: _ (u »SE») ،
"SSE": _ (u "SSE") ،
"هم")،
"SSW": _ (u "SSO") ،
«SW»: _ (u »SO») ،
"WSW": _ (u "WOW") ،
«W»: _ (u »O») ،
«WNW»: _ (u »ONO») ،
«NW»: _ (u »لا») ،
«NNW»: _ (u »NNO») ،
«لا ينطبق»: _ (u »لا ينطبق»)
}

فئة 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 = خيارات

if self.options.locale == لا شيء:
محاولة:
# self.locale = locale.getdefaultlocale () [0] [0: 2]
self.locale = «es» # uncomment هذا السطر لفرض اللغة الإسبانية
# self.locale = "fr" # عدم تعليق هذا السطر لفرض اللغة الفرنسية
إلا:
طباعة "اللغة غير محددة"
آخر:
# self.locale = self.options.locale
self.locale = «es» # uncomment هذا السطر لفرض اللغة الإسبانية
# self.locale = "fr" # عدم تعليق هذا السطر لفرض اللغة الفرنسية

إذا self.options.verbose == صحيح:
طباعة >> sys.stdout ، "ضبط الإعدادات المحلية على" ، self.locale

def getText (self، nodelist):
rc = ""
للعقدة في nodelist:
إذا كان node.nodeType == node.TEXT_NODE:
RC = RC + Node.data
عودة RC

def getSpaces (ذاتي ، مسافات):
سلسلة = u »»
إذا كانت المسافات == لا شيء:
سلسلة = self.DEFAULT_SPACING
آخر:
بالنسبة لـ i في النطاق (0 ، مسافات + 1):
string = string + u »«
سلسلة العودة

def isNumeric (ذاتي ، سلسلة):
محاولة:
dummy = float (سلسلة نصية)
العودة صحيح
إلا:
عودة كاذبة

def isConnectionAvailable (ذاتي):
# تأكد من أنه يمكننا الوصول إلى خادم weather.com عن طريق فتح عنوان url
محاولة:
Usock = urllib2.urlopen ('http://xoap.weather.com')
Usock.close ()
العودة صحيح
إلا:
عودة كاذبة

def getBearingText (ذاتي ، تحمل):
تحمل = تعويم (تحمل)
إذا كان تحمل <11.25:
العودة u »N»
محمل elif <33.75:
العودة u »NNE»
محمل elif <56.25:
العودة ش »شمال شرق»
محمل elif <78.75:
العودة ش »يناير»
محمل 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»
آخر:
عودة «لا ينطبق»

def convertCelsiusToFahrenheit (self، temp):
عودة str (int (floor (((float (temp) * 9.0) /5.0) +32)))

def convertKilometresToMiles (self، dist):
عودة str (int (floor (float (dist) * 0.621371192)))

def convertMillibarsToInches (self، mb):
عودة str (int (floor (float (mb) /33.8582)))

def getTemplateList (ذاتي ، قالب):

Templatelist = []

لـ template_part في template.split («{«):
إذا كان template_part! = «»:
لـ template_part في template_part.split ("}"):
إذا كان template_part! = «»:
Templatelist.append (u »» + template_part)

عودة Templatelist

def getOutputText (self، datatype، startday، endday، night، shortweekday، Empire، hideunits، space):
#يحاول:
الإخراج = ش »»

# تحديد الوحدات الحالية للإخراج
إذا كانت وحدات الإخفاء == خطأ:
إذا كانت إمبراطورية == خطأ:
tempunit = u »° C»
speedunit = u »كيلومتر في الساعة»
وحدة الضغط = u »ميغابايت»
آخر:
tempunit = u »درجة فهرنهايت»
speedunit = u »ميل في الساعة»
وحدة الضغط = u »في»
آخر:
tempunit = u »°»
speedunit = u »»
وحدة الضغط = u »»

إذا كان يوم البدء == لا شيء: # الظروف الحالية

إذا كان نوع البيانات == "DW":
إذا كان self.locale == "هو":
إذا كان يوم قصير == صحيح:
الإخراج = 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":
إذا كان يوم قصير == صحيح:
الإخراج = 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]
آخر:
إذا كان يوم قصير == صحيح:
الإخراج = 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":
string = self.current_conditions [0]. low
إذا self.isNumeric (سلسلة) == صحيح:
إذا كانت إمبراطورية == صحيح:
string = self.convertCelsiusToFahrenheit (سلسلة نصية)
سلسلة = سلسلة + Tempunit
الإخراج = سلسلة
نوع بيانات elif == "HT":
string = self.current_conditions [0]. high
إذا self.isNumeric (سلسلة) == صحيح:
إذا كانت إمبراطورية == صحيح:
string = self.convertCelsiusToFahrenheit (سلسلة نصية)
سلسلة = سلسلة + Tempunit
الإخراج = سلسلة
نوع بيانات 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":
string = self.current_conditions [0] .precip
إذا self.isNumeric (سلسلة) == صحيح:
سلسلة = سلسلة + ش »٪»
الإخراج = سلسلة
نوع بيانات elif == "HM":
string = self.current_conditions [0]. الرطوبة
إذا self.isNumeric (سلسلة) == صحيح:
سلسلة = سلسلة + ش »٪»
الإخراج = سلسلة
نوع بيانات elif == "WD":
string = self.current_conditions [0] .ind_dir
إذا self.isNumeric (سلسلة) == صحيح:
string = self.getBearingText (سلسلة نصية)

إذا كان self.locale == "هو":
الإخراج = WeatherText.bearing_text_es [سلسلة]
elif self.locale == "fr":
الإخراج = WeatherText.bearing_text_fr [سلسلة]
آخر:
الإخراج = سلسلة

نوع بيانات elif == "BF":
string = self.current_conditions [0] .ind_dir
إذا self.isNumeric (سلسلة) == صحيح:
string = WeatherText.bearing_arrow_font [self.getBearingText (سلسلة نصية)]
الإخراج = سلسلة
نوع بيانات elif == "WS":
string = self.current_conditions [0]. Wind_speed
إذا self.isNumeric (سلسلة) == صحيح:
إذا كانت إمبراطورية == صحيح:
string = self.convertKilometresToMiles (سلسلة نصية)
سلسلة = سلسلة + وحدة السرعة
الإخراج = سلسلة
نوع بيانات elif == "WG":
string = self.current_conditions [0] .wind_gusts
إذا self.isNumeric (سلسلة) == صحيح:
إذا كانت إمبراطورية == صحيح:
string = self.convertKilometresToMiles (سلسلة نصية)
سلسلة = سلسلة + وحدة السرعة
الإخراج = سلسلة
نوع بيانات elif == "CN":
الإخراج = self.current_conditions [0]. city
نوع بيانات elif == "SR":
الإخراج = self.current_conditions [0]. الشروق
نوع بيانات elif == "SS":
الإخراج = self.current_conditions [0]. غروب الشمس
نوع بيانات elif == "MP":
الإخراج = self.current_conditions [0] .moon_phase
نوع بيانات elif == "MF":
الإخراج = WeatherText.conditions_moon_font [self.current_conditions [0] .moon_icon]
نوع بيانات elif == "BR":
string = self.current_conditions [0] .bar_read
إذا self.isNumeric (سلسلة) == صحيح:
إذا كانت إمبراطورية == صحيح:
string = self.convertMillibarsToInches (سلسلة نصية)
سلسلة = سلسلة + وحدة ضغط
الإخراج = سلسلة
نوع بيانات elif == "BD":
الإخراج = self.current_conditions [0] .bar_desc
آخر:
الإخراج = "\ nERROR: نوع بيانات غير معروف مطلوب"

آخر: # بيانات تنبؤ

إذا كان endday == لا شيء: # إذا لم يتم تعيين يوم انتهاء ، فاستخدم startday
endday = يوم البدء

إذا كانت الليل == صحيح: # مطلوب توقع ليلي

لـ day_number في النطاق (يوم البدء ، نهاية اليوم + 1):

إذا كان نوع البيانات == "DW":
إذا كان self.locale == "هو":
إذا كان يوم قصير == صحيح:
الإخراج = الإخراج + 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":
إذا كان يوم قصير == صحيح:
الإخراج = الإخراج + 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]
آخر:
إذا كان يوم قصير == صحيح:
الإخراج = الإخراج + 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":
string = self.night_forecast [day_number]. low
إذا self.isNumeric (سلسلة) == صحيح:
إذا كانت إمبراطورية == صحيح:
string = self.convertCelsiusToFahrenheit (سلسلة نصية)
سلسلة = سلسلة + Tempunit
الإخراج = الإخراج + self.getSpaces (مسافات) + سلسلة

نوع بيانات elif == "HT":
string = self.night_forecast [day_number]. high
إذا self.isNumeric (سلسلة) == صحيح:
إذا كانت إمبراطورية == صحيح:
string = self.convertCelsiusToFahrenheit (سلسلة نصية)
سلسلة = سلسلة + Tempunit
الإخراج = الإخراج + 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":
string = self.night_forecast [day_number] .precip
إذا self.isNumeric (سلسلة) == صحيح:
سلسلة = سلسلة + ش »٪»
الإخراج = الإخراج + self.getSpaces (مسافات) + سلسلة
نوع بيانات elif == "HM":
string = self.night_forecast [day_number]. الرطوبة
إذا self.isNumeric (سلسلة) == صحيح:
سلسلة = سلسلة + ش »٪»
الإخراج = الإخراج + self.getSpaces (مسافات) + سلسلة
نوع بيانات elif == "WD":
string = self.night_forecast [day_number] .ind_dir
إذا كان self.locale == "هو":
الإخراج = الإخراج + self.getSpaces (مسافات) + WeatherText.bearing_text_es [سلسلة نصية]
elif self.locale == "fr":
الإخراج = الإخراج + self.getSpaces (مسافات) + WeatherText.bearing_text_fr [سلسلة]
آخر:
الإخراج = الإخراج + self.getSpaces (مسافات) + سلسلة

نوع بيانات elif == "BF":
الإخراج = الإخراج + self.getSpaces (مسافات) + WeatherText.bearing_arrow_font [self.night_forecast [day_number] .ind_dir]
نوع بيانات elif == "WS":
string = self.night_forecast [day_number] .ind_speed
إذا self.isNumeric (سلسلة) == صحيح:
إذا كانت إمبراطورية == صحيح:
string = self.convertKilometresToMiles (سلسلة نصية)
سلسلة = سلسلة + وحدة السرعة
الإخراج = الإخراج + self.getSpaces (مسافات) + سلسلة
نوع بيانات elif == "WG":
string = self.night_forecast [day_number] .wind_gusts
إذا self.isNumeric (سلسلة) == صحيح:
إذا كانت إمبراطورية == صحيح:
string = self.convertKilometresToMiles (سلسلة نصية)
سلسلة = سلسلة + وحدة السرعة
الإخراج = الإخراج + self.getSpaces (مسافات) + سلسلة
نوع بيانات elif == "CN":
الإخراج = الإخراج + self.getSpaces (مسافات) + self.night_forecast [day_number]. city
نوع بيانات elif == "SR":
الإخراج = الإخراج + self.getSpaces (مسافات) + self.night_forecast [day_number]. شروق الشمس
نوع بيانات elif == "SS":
الإخراج = الإخراج + self.getSpaces (مسافات) + self.night_forecast [day_number]. غروب الشمس
نوع بيانات 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 == "هو":
إذا كان يوم قصير == صحيح:
الإخراج = الإخراج + 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":
إذا كان يوم قصير == صحيح:
الإخراج = الإخراج + 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]
آخر:
إذا كان يوم قصير == صحيح:
الإخراج = الإخراج + 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":
string = self.day_forecast [day_number]. low
إذا self.isNumeric (سلسلة) == صحيح:
إذا كانت إمبراطورية == صحيح:
string = self.convertCelsiusToFahrenheit (سلسلة نصية)
سلسلة = سلسلة + Tempunit
الإخراج = الإخراج + self.getSpaces (مسافات) + سلسلة
نوع بيانات elif == "HT":
string = self.day_forecast [day_number]. مرتفع
إذا self.isNumeric (سلسلة) == صحيح:
إذا كانت إمبراطورية == صحيح:
string = self.convertCelsiusToFahrenheit (سلسلة نصية)
سلسلة = سلسلة + Tempunit
الإخراج = الإخراج + 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":
string = self.day_forecast [day_number] .precip
إذا self.isNumeric (سلسلة) == صحيح:
سلسلة = سلسلة + ش »٪»
الإخراج = الإخراج + self.getSpaces (مسافات) + سلسلة
نوع بيانات elif == "HM":
string = self.day_forecast [day_number]. الرطوبة
إذا self.isNumeric (سلسلة) == صحيح:
سلسلة = سلسلة + ش »٪»
الإخراج = الإخراج + self.getSpaces (مسافات) + سلسلة
نوع بيانات elif == "WD":
string = self.day_forecast [day_number] .ind_dir

إذا كان self.locale == "هو":
الإخراج = الإخراج + self.getSpaces (مسافات) + WeatherText.bearing_text_es [سلسلة نصية]
elif self.locale == "fr":
الإخراج = الإخراج + self.getSpaces (مسافات) + WeatherText.bearing_text_fr [سلسلة]
آخر:
الإخراج = الإخراج + self.getSpaces (مسافات) + سلسلة

نوع بيانات elif == "BF":
الإخراج = الإخراج + self.getSpaces (المسافات) + WeatherText.bearing_arrow_font [self.day_forecast [day_number] .ind_dir]
نوع بيانات elif == "WS":
string = self.day_forecast [day_number] .wind_speed
إذا self.isNumeric (سلسلة) == صحيح:
إذا كانت إمبراطورية == صحيح:
string = self.convertKilometresToMiles (سلسلة نصية)
سلسلة = سلسلة + وحدة السرعة
الإخراج = الإخراج + self.getSpaces (مسافات) + سلسلة
نوع بيانات elif == "WG":
string = self.day_forecast [day_number] .wind_gusts
إذا self.isNumeric (سلسلة) == صحيح:
إذا كانت إمبراطورية == صحيح:
string = self.convertKilometresToMiles (سلسلة نصية)
سلسلة = سلسلة + وحدة السرعة
الإخراج = الإخراج + self.getSpaces (مسافات) + سلسلة
نوع بيانات elif == "CN":
الإخراج = الإخراج + self.getSpaces (مسافات) + self.day_forecast [day_number] .city
نوع بيانات elif == "SR":
الإخراج = الإخراج + self.getSpaces (مسافات) + self.day_forecast [day_number]. شروق الشمس
نوع بيانات elif == "SS":
الإخراج = الإخراج + self.getSpaces (مسافات) + self.day_forecast [day_number]. غروب الشمس
نوع بيانات 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 (self، template):
#يحاول:

# مفاتيح لبيانات النموذج
DATATYPE_KEY = "–نوع البيانات ="
STARTDAY_KEY = "–startday ="
ENDDAY_KEY = "–endday ="
NIGHT_KEY = "–night"
SHORTWEEKDAY_KEY = "- يوم قصير"
IMPERIAL_KEY = "–إمبراطوري"
HIDEUNITS_KEY = "–الوحدات المخفية"
SPACES_KEY = "–مسافات ="

الإخراج = ش »»

optionfound = خطأ

# تحميل الملف
محاولة:
fileinput = فتح (self.options.template)
template = fileinput.read ()
fileinput.close ()
إلا:
الإخراج = u »ملف القالب غير موجود!»

Templatelist = self.getTemplateList (نموذج)

# يتيح لك التجول في قائمة القوالب وتحديد ناتج كل عنصر تم العثور عليه
بالنسبة لـ i في النطاق (0 ، len (Templatelist] -1):

pos = Templatelist [i]. ابحث عن (DATATYPE_KEY)
إذا كانت نقاط البيع! ​​= -1:
optionfound = صحيح
pos = pos + len (DATATYPE_KEY)
datatype = Templatelist [i] [pos: pos + 4] .strip («}»). strip («{«). strip («-«). strip (»«)
آخر:
نوع البيانات = لا شيء

pos = Templatelist [i]. ابحث عن (STARTDAY_KEY)
إذا كانت نقاط البيع! ​​= -1:
optionfound = صحيح
pos = pos + len (STARTDAY_KEY)
startday = int (Templatelist [i] [pos: pos + 4] .strip ("}"). strip ("{"). strip ("-"). strip (""))
آخر:
يوم البدء = لا شيء

pos = Templatelist [i]. ابحث عن (ENDDAY_KEY)
إذا كانت نقاط البيع! ​​= -1:
optionfound = صحيح
نقاط البيع = نقاط البيع + لين (ENDDAY_KEY)
endday = int (Templatelist [i] [pos: pos + 4] .strip ("}"). strip ("{"). strip ("-"). strip (""))
آخر:
endday = لا شيء

pos = Templatelist [i]. ابحث عن (NIGHT_KEY)
إذا كانت نقاط البيع! ​​= -1:
optionfound = صحيح
الليل = صحيح
آخر:
الليل = خطأ

pos = Templatelist [i]. ابحث عن (SHORTWEEKDAY_KEY)
إذا كانت نقاط البيع! ​​= -1:
optionfound = صحيح
shortweekday = صحيح
آخر:
Shortweekday = خطأ

pos = Templatelist [i]. ابحث عن (IMPERIAL_KEY)
إذا كانت نقاط البيع! ​​= -1:
optionfound = صحيح
إمبراطوري = صحيح
آخر:
إمبراطوري = خطأ

pos = Templatelist [i]. ابحث عن (HIDEUNITS_KEY)
إذا كانت نقاط البيع! ​​= -1:
optionfound = صحيح
وحدات المخبأ = صحيح
آخر:
وحدات إخفاء = خطأ

pos = Templatelist [i]. ابحث عن (SPACES_KEY)
إذا كانت نقاط البيع! ​​= -1:
optionfound = صحيح
pos = pos + len (SPACES_KEY)
المسافات = int (Templatelist [i] [pos: pos + 4] .strip («}»). strip («{«). strip («-«). strip (»«))
آخر:
مسافات = 1

إذا كان optionfound == صحيح:
Templatelist [i] = self.getOutputText (نوع البيانات ، يوم البدء ، نهاية اليوم ، الليل ، يوم الأسبوع القصير ، الإمبراطوري ، الوحدات المخفية ، المساحات)
optionfound = خطأ

# انتقل إلى القائمة التي تسلسل الإخراج الآن بعد أن تم ملؤها
للعنصر في Templatelist:
الإخراج = الإخراج + العنصر

عودة الإخراج

#يستثني:
#print "getOutputTextFromTemplate: خطأ غير متوقع:"، sys.exc_info () [0]

def fetchData (ذاتي):

# أحضر دائمًا البيانات المترية ، واستخدم وظائف المحادثة على هذه البيانات
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 () == خطأ:
إذا كان os.path.exists (file_path_current):
RefetchData = خطأ
آخر: # لا يوجد اتصال ، لا ذاكرة تخزين مؤقت ، بانغ!
طباعة "لا يتوفر اتصال بالإنترنت ولا توجد بيانات مخزنة مؤقتًا للطقس."
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 (minutes = self.EXPIRY_MINUTES)). timetuple ()

إذا expiryDate> lastmodDate:
RefetchData = صحيح
آخر:
RefetchData = خطأ
آخر:
RefetchData = صحيح

# إحضار بيانات الشروط الحالية سواء من الموقع أو عن طريق "unpickling"
إذا كان RefetchData == صحيح:

# الحصول على بيانات الظروف الحالية من خدمة 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 & الوحدة = م '
إذا self.options.verbose == صحيح:
print >> sys.stdout، «جلب بيانات الطقس من« ، url

Usock = urllib2.urlopen (url)
xml = usock.read ()
Usock.close ()
self.weatherxmldoc = minidom.parseString (xml)
إلا:
طباعة "fetchData: خطأ غير متوقع:" ، sys.exc_info () [0]
طباعة "غير قادر على الاتصال بمصدر الطقس للظروف الحالية"

# أخبر المستخدم إذا كان الموقع سيئًا…
found = xml.find ("تم توفير موقع غير صالح")
إذا وجدت! = -1:
اطبع "تم توفير موقع غير صالح"

# استجواب بيانات الطقس ، وتحميلها في هيكل الفصل ومخللها
محاولة:

# تحضير قوائم بيانات الطقس
الشروط الحالية = []
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 »لا ينطبق»
sunrise_n = location_n.getElementsByTagName ('sunr') [0]
شروق الشمس = 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 ('شريط') [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 = WeatherData (day_of_week ، current_temp_feels ، current_temp ، current_code ، current_desc ، هطول ، رطوبة ، اتجاه الرياح ، wind_speed ، wind_gusts ، مدينة ، شروق الشمس ، غروب الشمس ، moon_phase ، moon_icon ، bar_desc ، bar_desc)
self.current_conditions.append (Current_conditions_data)

# جمع بيانات التوقعات
bar_read = u »لا ينطبق»
bar_desc = u »لا ينطبق»
moon_phase = u »لا ينطبق»
moon_icon = u »نا»
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 ('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]
الحالة = self.getText (condition_n.childNodes)
precip_n = daytime_n.getElementsByTagName ('ppcp') [0]
هطول = 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 ، الحالة ، هطول الأمطار ، الرطوبة ، اتجاه الرياح ، wind_speed ، wind_gusts ، المدينة ، شروق الشمس ، غروب الشمس ، moon_phase ، moon_icon ، bar_read ، bar_desc)
self.day_forecast.append (day_forecast_data)

# بيانات توقعات ليلية محددة
daytime_n = day.getElementsByTagName ('part') [1] # night
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]
هطول = 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)
الليل
self.night_forecast.append (night_forecast_data)

# مخلل البيانات في المرة القادمة!
fileoutput = مفتوح (file_path_current، 'w')
pickle.dump (self.current_conditions ، fileoutput)
fileoutput.close ()

fileoutput = مفتوح (file_path_dayforecast، 'w')
pickle.dump (self.day_forecast، fileoutput)
fileoutput.close ()

fileoutput = مفتوح (file_path_nightforecast، 'w')
pickle.dump (self.night_forecast، fileoutput)
fileoutput.close ()

إلا:
طباعة "fetchData: خطأ غير متوقع:" ، sys.exc_info () [0]
طباعة "غير قادر على استجواب بيانات الطقس"

else: # إحضار بيانات الطقس من ملفات فئة مخلل
إذا self.options.verbose == صحيح:
طباعة >> sys.stdout ، «جلب بيانات الطقس من ملف:« ، file_path_current

fileinput = فتح (file_path_current، 'r')
self.current_conditions = pickle.load (إدخال الملف)
fileinput.close ()

إذا self.options.verbose == صحيح:
طباعة >> sys.stdout ، "جلب بيانات توقعات اليوم من الملفات:" ، file_path_dayforecast ، file_path_nightforecast

fileinput = فتح (file_path_dayforecast، 'r')
self.day_forecast = pickle.load (إدخال الملف)
fileinput.close ()

إذا self.options.verbose == صحيح:
طباعة >> 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.im royal، self.options.hideunits، self. options.spaces)

طباعة الإخراج.encode ("utf-8")

#يستثني:
#print "outputData: خطأ غير متوقع:" ، sys.exc_info () [0]

إذا __name__ == "__main__":

المحلل اللغوي = CommandLineParser ()
(خيارات ، أرغس) = parser.parse_args ()

إذا كانت options.verbose == صحيح:
طباعة >> sys.stdout، "location:"، options.location
طباعة >> sys.stdout ، "إمبريالية:" ، خيارات.إمبريالية
طباعة >> sys.stdout، "نوع البيانات:"، options.datype
طباعة >> 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 / scripts / 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 / scripts / mail / conkyEmail.py

ونقوم بلصق ما يلي بالداخل:

استيراد نظام التشغيل
سلسلة الاستيراد

# أدخل اسم المستخدم وكلمة المرور أدناه بين علامتي اقتباس
# على سبيل المثال. اسم المستخدم = »اسم المستخدم» وكلمة المرور = »كلمة المرور»
اسم المستخدم = »YOUR_USUARIO_SINARROBA«
كلمة المرور = »مفتاحك«

com = »wget -O - https: //» + اسم المستخدم + »:» + كلمة المرور + »@ mail.google.com / mail / feed / atom –no-check-Certificate»

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

إذا كان fc == 0:
طباعة "0 جديد"
آخر:
طباعة str (fc) + »جديد»

إذن لديك الآن 7 ملفات:

في المجلد: ~
-> .startconky << - اجعله قابلاً للتنفيذ

في المجلد: ~ / Conky
-> conkymain
-> conkyforecast
-> conkymail

وفي المجلد: ~ / Conky / scripts
-> conkyForecast.py << - اجعله قابلاً للتنفيذ
-> myweather.template

وفي المجلد: ~ / Conky / scripts / mail
conkyEmail.py << - اجعله قابلاً للتنفيذ

وهذا كل شيء ، توضيحات ، حيث تقول / home / user / ... اسم المستخدم الخاص بك وفي الجزء الذي تذهب إليه بيانات Gmail ، قمت بتمييز الألوان حيث يتعين عليك وضع بياناتك.

لقتل عملية conky اكتب إلى وحدة التحكم

killall conky

لتشغيل conky الكتابة إلى وحدة التحكم

./.startconky

بمجرد أن يتم ضبط كل شيء ، إذا كنت تريد conky لبدء كل جلسة

النظام—> التفضيلات —> الجلسات وفي برامج بدء التشغيل نقوم بإضافتها

بالاسم يمكننا كتابة Conky بالترتيب ./.startconky مع أنه سيبدأ في كل مرة تقوم فيها بتشغيل جهاز الكمبيوتر.

هذا كل شيء ، آمل أن يساعدك.


اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.