Conky, Η εγκατάστασή μου

Η Fecfactor μου ζήτησε χθες να δημοσιεύσω τη διαμόρφωση του conky που δείχνω στο παρακάτω στιγμιότυπο οθόνης

Όπως μπορείτε να δείτε υπάρχουν 3 conkys, τα οποία εκτελούνται μέσω ενός σεναρίου, η διαμόρφωσή του βασίζεται αυτή η θέση δημοσιεύτηκε από τον χρήστη Bruce M. στα φόρουμ του Ubuntu-Ar με κάποιες τροποποιήσεις στο conky mail, το οποίο στην περίπτωσή μου αφορά το Gmail.

Στην ανάρτηση αναφοράς εξηγείται πολύ καλά από τον Bruce, αλλά και ως βοήθημα μνήμης για μένα, θα αντιγράψω τα βήματα που πρέπει να ακολουθήσω και τον κωδικό των conkys μου για όποιον το έχει.

Λοιπόν, φυσικά, πρέπει να έχουμε εγκαταστήσει conky, curl και python για να πληκτρολογήσουμε μια κονσόλα:

sudo apt-get εγκαταστήστε conky curl python

Η πηγή του weather.ttf και arrows.ttf είναι εδώ. Η πηγή του moon.ttf είναι εδώ Μόλις κατεβάσετε, πρέπει να τα αντιγράψετε στο / usr / share / fonts

Ας δημιουργήσουμε τώρα το σενάριό μας που ονομάζεται ~. / Startconky

gksudo gedit ~ / .startconky

μέσα στο κενό αρχείο επικολλάμε τα ακόλουθα

#! / bin / bash
κοιμηθείτε 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, εάν δεν την έχετε, αντικαταστήστε την με ό, τι θέλετε.

Παραμένουμε μέσα σε αυτό που ακολουθεί

φόντο αρ
δικό_window ναι
δικό_window_transparent ναι
δικό_window_hints χωρίς διακόσμηση, παρακάτω, κολλώδες, skip_taskbar, skip_pager
δικό_window_colour μαύρο
double_buffer ναι
use_spacer αριστερά
χρησιμοποιήστε_xft ναι
γραμματοσειρά calibri: μέγεθος = 9
xftfont calibri: μέγεθος = 9
xftalpha 0.5
update_interval 5.0
κεφαλαίο αριθ. # οριστεί ναι, εάν θέλετε όλο το κείμενο να είναι κεφαλαίο
stippled_border 3
περιθώριο_margin 9
περιθώριο_ εύρος 10
προεπιλογή_χρώμα λευκό
default_outline_χρώμα μαύρο
default_shade_color μαύρο
χρώμα0 κυανό
χρώμα 1 ανοιχτόχρωμο
χρώμα2 πορτοκαλί
χρώμα3 κίτρινο
χρώμα4 σιτάρι
χρώμα5 λευκό
χρώμα6 λευκό
χρώμα7 λευκό
χρώμα8 λευκό
χρώμα9 λευκό
ευθυγράμμιση top_right # ή top_left, bottom_left, bottom_right
κενό_χ 10
κενό_y 35
text_buffer_size 128 # χρησιμοποιήστε 1024 για την πρόβλεψη
όχι_buffers ναι # Αφαιρέστε τα buffer συστήματος αρχείων από τη χρησιμοποιημένη μνήμη;
draw_borders αρ
draw_outline yes # ενισχύει το κείμενο εάν ναι
draw_shades ναι # σκιάχρωμα μαύρο

ΚΕΙΜΕΝΟ
$ {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} $ χρώμα
$ {font calibri: size = 20} $ {alignc} $ {time% H:% M} γραμματοσειρά $
$ {font calibri: size = 12} $ {color1} $ {alignc} $ {time% A,% d% b. % Y} $ χρώμα $ γραμματοσειρά
$ {color3} UpTime: $ {alignr 2} $ uptime $ χρώμα
$ {color0} $ {hr 1} $ χρώμα
$ {voffset 5} $ {color2} CPU: $ {alignc} $ color $ running_processes $ {color1} / $ color $ processing $ {alignr 2} $ {color2} $ {cpubar cpu0 14,80} $ χρώμα
$ {color1} $ {voffset -16} $ {alignr 5} $ cpu% $ χρώμα
$ {voffset 2} $ {color1} Μέσος όρος φόρτωσης ($ {color3} Ελάχ. $ {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} $ χρώμα
$ {color1} $ {voffset -16} $ {alignr 5} $ memperc% $ color
$ {voffset 2} $ {color1} Buffered: $ color $ {buffers} $ {alignr 2} $ {color1} Cache: $ color $ {cached}
$ {voffset 5} $ {color2} SWAP: $ color $ swap $ {color2} / $ color $ {swapmax} $ {alignr 2} $ {color2} $ {swapbar 14,80} $ χρώμα
$ {color1} $ {voffset -16} $ {alignr 5} $ swapperc%
$ {color0} $ {hr 1} $ χρώμα
$ {voffset 5} $ {color2} Πληροφορίες HD $ {color1} - $ color Free $ {color1} - Χρησιμοποιημένο - $ {color2} Σύνολο
$ {voffset 5} $ {color1} Root: $ 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} $ χρώμα
$ {color0} $ {hr 1} $ χρώμα
$ {color1} Από: $ color Μπουένος Άιρες, Αργεντινή
$ {color1} Lat: $ {color2} 34 ° 35'S $ {color1} Long: $ {color2} 58 ° 21'W $ {color1} Alt: $ {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 $ χρώμα
$ {alignr 50} $ {voffset -55} $ {font calibri: size = 25} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = HT} $ γραμματοσειρά
$ {alignc 20} $ {voffset -30} $ {font Arrows: size = 20} $ {color4} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = BF} $ χρώμα $ γραμματοσειρά
$ {alignc 10} $ {voffset 5} $ {color4} Wind: $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = WS} $ χρώμα
$ {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} $ χρώμα
$ {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} $ χρώμα
$ {color4} $ {hr} $ χρώμα
$ {color1} Sunrise: $ {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} $ χρώμα
$ {voffset 15} $ {color1} Moon: $ {color4} $ {alignr 2} $ {color3} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = MP} $ χρώμα
$ {voffset -20} $ {offset 80} $ {color4} $ {font moon phase: size = 20} $ {execi 3600 python ~ / Conky / scripts / conkyForecast.py –location = ARBA0009 –datatype = MF} γραμματοσειρά $ $ χρώμα
$ {color0} $ {hr} $ χρώμα
$ {voffset 5} $ {color2} IP: $ {alignc} $ color $ {addr eth0}
$ {color1} Down: $ color $ {downspeed eth0} k / s $ {alignr 2} $ {color1} Up: $ color $ {upspeed eth0} k / s
$ {color1} Σύνολο: $ color $ {totaldown eth0} $ {alignr 2} $ {color1} Σύνολο: $ color $ {totalup eth0}
$ {color1} Inbound: $ color $ {tcp_portmon 1 32767 count} $ {color1} Outbound: $ 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} Service / Port $ color
$ {voffset 5} $ {tcp_portmon 32768 61000 rhost 0} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 0}
$ {tcp_portmon 32768 61000 rhost 1} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 1}
$ {tcp_portmon 32768 61000 rhost 2} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 2}
$ {tcp_portmon 32768 61000 rhost 3} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 3}
$ {tcp_portmon 32768 61000 rhost 4} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 4}
$ {tcp_portmon 32768 61000 rhost 5} $ {alignr 2} $ {tcp_portmon 32768 61000 rservice 5} $ χρώμα

δημιουργούμε το αρχείο ~ / Conky / conkyforecast

gedit ~ / Conky / conkyforecast

και επικολλάμε τα παρακάτω μέσα

φόντο αρ
δικό_window ναι
δικό_window_transparent ναι
δικό_window_hints χωρίς διακόσμηση, παρακάτω, κολλώδες, skip_taskbar, skip_pager
δικό_window_colour μαύρο
double_buffer ναι
use_spacer αριστερά
χρησιμοποιήστε_xft ναι
γραμματοσειρά calibri: μέγεθος = 8
xftfont calibri: μέγεθος = 8
xftalpha 0.5
update_interval 5.0
κεφαλαίο αριθ. # οριστεί ναι, εάν θέλετε όλο το κείμενο να είναι κεφαλαίο
stippled_border 3
περιθώριο_margin 9
περιθώριο_ εύρος 10
προεπιλογή_χρώμα λευκό
default_outline_χρώμα μαύρο
default_shade_color μαύρο
χρώμα0 κυανό
χρώμα 1 ανοιχτόχρωμο
χρώμα2 πορτοκαλί
χρώμα3 κίτρινο
χρώμα4 σιτάρι
χρώμα5 λευκό
χρώμα6 λευκό
χρώμα7 λευκό
χρώμα8 λευκό
χρώμα9 λευκό
στοίχιση bottom_left # ή top_left, bottom_left, bottom_right
κενό_χ 10
κενό_y 35
text_buffer_size 1024 # χρησιμοποιήστε 1024 για την πρόβλεψη
όχι_buffers ναι # Αφαιρέστε τα buffer συστήματος αρχείων από τη χρησιμοποιημένη μνήμη;
draw_borders αρ
draw_outline yes # ενισχύει το κείμενο εάν ναι
draw_shades ναι # σκιάχρωμα μαύρο

ΚΕΙΜΕΝΟ
$ {color4} $ {font calibri: size = 11} Εκτεταμένη πρόβλεψη $ font $ color
$ {color0} $ {hr} $ χρώμα
$ {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

επικολλάμε τα ακόλουθα στο αρχείο

φόντο αρ
δικό_window ναι
δικό_window_transparent ναι
δικό_window_hints χωρίς διακόσμηση, παρακάτω, κολλώδες, skip_taskbar, skip_pager
δικό_window_colour μαύρο
double_buffer ναι
use_spacer αριστερά
χρησιμοποιήστε_xft ναι
γραμματοσειρά calibri: μέγεθος = 8
xftfont calibri: μέγεθος = 8
xftalpha 0.5
update_interval 5.0
κεφαλαίο αριθ. # οριστεί ναι, εάν θέλετε όλο το κείμενο να είναι κεφαλαίο
stippled_border 3
περιθώριο_margin 9
περιθώριο_ εύρος 10
προεπιλογή_χρώμα λευκό
default_outline_χρώμα μαύρο
default_shade_color μαύρο
χρώμα0 κυανό
χρώμα 1 ανοιχτόχρωμο
χρώμα2 πορτοκαλί
χρώμα3 κίτρινο
χρώμα4 σιτάρι
χρώμα5 λευκό
χρώμα6 λευκό
χρώμα7 λευκό
χρώμα8 λευκό
χρώμα9 λευκό
στοίχιση bottom_left # ή top_left, bottom_left, bottom_right
κενό_χ 565
κενό_y 35
text_buffer_size 128 # χρησιμοποιήστε 1024 για την πρόβλεψη
όχι_buffers ναι # Αφαιρέστε τα buffer συστήματος αρχείων από τη χρησιμοποιημένη μνήμη;
draw_borders αρ
draw_outline yes # ενισχύει το κείμενο εάν ναι
draw_shades ναι # σκιάχρωμα μαύρο

ΚΕΙΜΕΝΟ
$ {font calibri: size = 11} $ {alignc} $ {color4} Gmail
$ {color0} $ {hr} $ χρώμα
$ {font calibri: size = 11} $ {color4} Έχουμε $ {color3} $ {execi 300 python ~ / Conky / scripts / mail / conkyEmail.py} $ {color4} email $ s

Δημιουργούμε ένα αρχείο στο ~ / Conky / scripts / conkyForecast.py (πρέπει να δημιουργήσουμε το φάκελο scripts)

gedit ~ / Conky / scripts / conkyForecast.py

#! / usr / bin / python
# - * - κωδικοποίηση: utf-8 - * -
################################################ #############################
Το # conkyForecast.py είναι ένα (όχι τόσο) απλό (πια) σενάριο python για συλλογή
# λεπτομέρειες για τον τρέχοντα καιρό για χρήση σε conky.
#
# Συγγραφέας: Kaivalagi
# Δημιουργήθηκε: 13/04/2008
# Τροποποιήσεις:
# 14/04/2008 Να επιτρέπονται εύρη ημερών για δεδομένα πρόβλεψης
# 14/04/2008 Ελέγξτε τη δυνατότητα σύνδεσης με την υπηρεσία xoap
# 18/04/2008 Επιτρέψτε τη ρύθμιση των κενών για εύρος εξόδου
# 18/04/2008 Να επιτρέπεται έξοδος πρόβλεψης νύχτας και ημέρας
# 18/04/2008 Υποστήριξη τοπικών ρυθμίσεων για την επιλογή κειμένου κωδικού συνθήκης «CC», εν αναμονή μετάφρασης ισπανικής γλώσσας
# 18/04/2008 Χρησιμοποιήστε το pickling για δεδομένα κλάσης αντί για το άνοιγμα xml, αυτό παρακάμπτει την ανάγκη ανάκρισης δεδομένων που έχουν αποθηκευτεί στην προσωρινή μνήμη
# 19/04/2008 Προστέθηκε κείμενο ισπανικής κατάστασης - Ευχαριστώ Bruce M
# 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 Προστέθηκε –hideunits επιλογή για κατάργηση, για παράδειγμα, mph και C από την έξοδο
# 23/04/2008 Καταργήθηκε - η αυτοκρατορική επιλογή από το πρότυπο, ΠΡΕΠΕΙ να οριστεί ως τυπική επιλογή στην κλήση σεναρίου και δεν χρησιμοποιείται στο αρχείο προτύπου.
# 23/04/2008 Αναγνωσμένη –μετρική επιλογή προτύπου, ενεργοποιώντας μετρικές ή αυτοκρατορικές τιμές ανά τύπο δεδομένων. Λάβετε υπόψη ότι όταν χρησιμοποιείτε την επιλογή γραμμής εντολών templates δεν θα λειτουργεί
# 23/04/2008 Προστέθηκε έξοδος που ειδοποιεί τον χρήστη εάν η τοποθεσία που δόθηκε είναι κακή
# 24/04/2008 Προστέθηκε χειρισμός χωρίς συνδεσιμότητα, θα επανέλθει σε προσωρινά αποθηκευμένα δεδομένα (σφάλμα εάν δεν υπάρχει προσωρινή μνήμη) Δοκιμές προσπαθώντας να ανοίξετε το xoap.weather.com
# 24/04/2008 Διορθώθηκε μετατροπή Κελσίου σε Φαρενάιτ
# 06/05/2008 Ενημερώθηκε το url που χρησιμοποιήθηκε μετά την ενημέρωση της υπηρεσίας web
# 09/05/2008 Η συγκεντρωτική τρέχουσα κατάσταση και τα δεδομένα πρόβλεψης εισέρχονται σε μία κλήση
# 09/05/2008 Προστέθηκαν Sunrise and sunset σε τύπους δεδομένων, αυτοί αφορούν τόσο τις τρέχουσες συνθήκες όσο και τα δεδομένα πρόβλεψης
# 09/05/2008 Προστέθηκε η φάση του φεγγαριού, η ανάγνωση του βαρόμετρου και η περιγραφή του βαρόμετρου στους τύπους δεδομένων, αυτοί είναι μόνο συγκεκριμένοι για τις τρέχουσες συνθήκες και το ίδιο και το Δ / Α στην προβλεπόμενη έξοδο
# 09/05/2008 Προστέθηκαν μετατροπές μονάδας για βαρόμετρο από mb σε ίντσες (αυτοκρατορικό)
# 09/05/2008 Ενημερωμένο κείμενο ισπανικής κατάστασης - Ευχαριστώ Bruce M
# 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 σε ένα αρχείο / τάξη
# Προσθέστε μια γραμματοσειρά καιρού βάσει της εξόδου φάσης του φεγγαριού με βάση τα δεδομένα εικονιδίων του φεγγαριού
# ??? Υπάρχουν άλλες απαιτήσεις εκεί έξω;

εισαγωγή sys, os, socket, urllib2, ώρα ώρας, ώρα
από το xml.dom εισαγωγή minidom
από εισαγωγή stat *
από το optparse import OptionParser
εισαγωγή τοπικών ρυθμίσεων
εισαγωγή gettext
εισαγωγή τουρσί
από μαθηματικά εισαγωγή *

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

κλάση CommandLineParser:

parser = Κανένα

def __init __ (αυτο):

self.parser = OptionParser ()
self.parser.add_option («- l», »- location», dest = »location», default = »UKXX0103 ″, type =» string », metavar =» CODE », help = u» κωδικός τοποθεσίας για δεδομένα καιρού [ προεπιλογή:% 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 "[default:% default] Οι επιλογές τύπου δεδομένων είναι: DW (Day of Week), WF (Weather Font Output), LT (Πρόβλεψη: Low Temp, Current: Feels Like Temp), HT (Forecast: High Temp, Current: Current Temp), CC (Current Συνθήκες), CT (Κείμενο συνθηκών), Η / Υ (Πιθανότητα καθίζησης), HM (Υγρασία), WD (Κατεύθυνση ανέμου), WS (Ταχύτητα ανέμου), WG (Ανεμογεννήτριες), CN (Όνομα πόλης), SR (Ανατολή) (ηλιοβασίλεμα), 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», »- spaces», dest = »spaces», type = »int», default = 1, metavar = »NUMBER», help = u »[default:% default] Ορίζει το αριθμός κενών μεταξύ εύρους εξόδου. Δεν ισχύει στη γραμμή εντολών κατά τη χρήση προτύπων. »)
self.parser.add_option («- t», »- template», dest = »template», type = »string», metavar = »FILE», help = u »ορίστε ένα αρχείο προτύπου για τη δημιουργία εξόδου σε μία κλήση. Το εμφανιζόμενο στοιχείο στο αρχείο έχει τη μορφή {–datatype = HT –startday = 1}. Τα παρακάτω είναι πιθανές επιλογές σε κάθε στοιχείο: –datatype, –startday, –endday, –night, –shortweekday, –imperial, –hideunits, –Διαστήματα. Σημειώστε ότι οι σύντομες μορφές των επιλογών δεν υποστηρίζονται προς το παρόν! Καμία από αυτές τις επιλογές δεν ισχύει στη γραμμή εντολών κατά τη χρήση προτύπων.
self.parser.add_option («- L», »- locale», dest = »locale», type = »string», help = u »παρακάμπτει τις τοπικές ρυθμίσεις συστήματος για έξοδο γλώσσας (en = αγγλικά, es = ισπανικά, fr = γαλλικά, ακόμη θα έρθουν) »)
self.parser.add_option ("- i", "- imperial", dest = "imperial", 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», default = False, action = »store_true», help = u »Συντομεύστε τον τύπο δεδομένων της ημέρας της εβδομάδας σε 3 χαρακτήρες. Δεν ισχύει στις γραμμή εντολών κατά τη χρήση προτύπων. »)
self.parser.add_option («- u», »- hideunits», dest = »hideunits», default = False, action = »store_true», help = u »Απόκρυψη μονάδων όπως mph ή C, σύμβολα βαθμού (°) είναι εξακολουθεί να εμφανίζεται. Δεν ισχύει στη γραμμή εντολών κατά τη χρήση προτύπων. »)
self.parser.add_option ("- v", "- verbose", dest = "verbose", default = False, action = "store_true", help = u "request verbose output, no good idea when running over conky!" )
self.parser.add_option ("- r", "- refetch", dest = "refetch", default = False, action = "store_true", help = u "ανάκτηση δεδομένων ανεξάρτητα από τη λήξη δεδομένων")

def parse_args (αυτο):
(επιλογές, args) = self.parser.parse_args ()
επιστροφή (επιλογές, args)

def print_help (αυτο):
επιστροφή self.parser.print_help ()

τάξη WeatherData:
def __init __ (self, day_of_week, low, high, condition_code, condition_text, end, υγρασία, wind_dir, wind_speed, wind_gusts, city, sunrise, sunset, moon_phase, moon_icon, bar_read, bar_desc):
self.day_of_week = u »» + ημέρα_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 »» + ταχύτητα_ ανέμου
self.wind_gusts = u »» + wind_gusts
self.city = u »» + πόλη
self.sunrise = u »» + sunrise
self.sunset = u »» + ηλιοβασίλεμα
self.moon_phase = u »» + moon_phase
self.moon_icon = u »» + moon_icon
self.bar_read = u »» + bar_read
self.bar_desc = u »» + bar_desc

τάξη WeatherText:

συνθήκες_κείμενο = {
«0»: _ (u »Tornado»),
«1»: _ (u »Tropical Storm»),
«2»: _ (u »τυφώνας»),
«3»: _ (u »Σοβαρές καταιγίδες»),
«4»: _ (u »Καταιγίδες»),
«5»: _ (u »Μικτή βροχή και χιόνι»),
«6»: _ (u »Mixed Rain and Sleet»),
«7»: _ (u »Μικτή βροχόπτωση»),
«8»: _ (u »Παγωμένο ψιλόβροχο»),
«9»: _ (u »ψιλόβροχο»),
«10»: _ (u »Παγωμένη βροχή»),
«11»: _ (u »Ντους»),
«12»: _ (u »Ντους»),
«13»: _ (u »Snow Flurries»),
«14»: _ (u »Ελαφρά χιονοπτώσεις»),
«15»: _ (u »Blowing Snow»),
«16»: _ (u »Snow»),
«17»: _ (u »Χαλάζι»),
«18»: _ (u »Sleet»),
«19»: _ (u »Σκόνη»),
«20»: _ (u »Fog»),
«21»: _ (u »Haze»),
«22»: _ (u »Smoke»),
«23»: _ (u »Blustery»),
«24»: _ (u »Windy»),
«25»: _ (u »Cold»),
«26»: _ (u »Συννεφιά»),
«27»: _ (u »Κυρίως συννεφιά»),
«28»: _ (u »Κυρίως συννεφιά»),
«29»: _ (u »Partly Cloudy»),
«30»: _ (u »Partly Cloudy»),
«31»: _ (u »Clear»),
«32»: _ (u »Clear»),
«33»: _ (u »Fair»),
«34»: _ (u »Fair»),
«35»: _ (u »Μικτή βροχή και χαλάζι»),
«36»: _ (u »Hot»),
«37»: _ (u »Απομονωμένες καταιγίδες»),
«38»: _ (u »Καταιγίδες διάσπαρτα»),
«39»: _ (u »Καταιγίδες διάσπαρτα»),
«40»: _ (u »Διάσπαρτα ντους»),
«41»: _ (u »Heavy Snow»),
«42»: _ (u »Διασκορπισμένες χιονοπτώσεις»),
«43»: _ (u »Heavy Snow»),
«44»: _ (u »Partly Cloudy»),
«45»: _ (u »Thunder Showers»),
«46»: _ (u »Snow Showers»),
«47»: _ (u »Απομονωμένες καταιγίδες»),
«Na»: _ (u »N / A»),
"-": _(ένα")
}

συνθήκες_text_es = {
«0»: _ (u »Tornado»),
«1»: _ (u »Tropical Storm»),
«2»: _ (u »Huracá¡n»),
«3»: _ (u »Ισχυρές καταιγίδες»),
«4»: _ (u »Καταιγίδες»),
«5»: _ (u »Μικτή βροχή και χιόνι»),
«6»: _ (u »Mixed Rain and Sleet»),
«7»: _ (u »Sleet»),
«8»: _ (u »Παγωμένο ψιλόβροχο»),
«9»: _ (u »Ψιλόβροχο»),
«10»: _ (u »Παγωμένη βροχή»), # ή παγωμένη βροχή
«11»: _ (u »Ντους»),
«12»: _ (u »Ντους»),
«13»: _ (u »Light Snow»),
«14»: _ (u »Light Snow»),
«15»: _ (u »Snow Blizzard»),
«16»: _ (u »Snow»),
«17»: _ (u »Χαλάζι»),
«18»: _ (u »Sleet»),
«19»: _ (u »Σκόνη»),
«20»: _ (u »Fog»),
«21»: _ (u »Haze»),
«22»: _ (u »Smoke»),
«23»: _ (u »Tempest»),
«24»: _ (u »Windy»),
«25»: _ (u »Fráo»),
«26»: _ (u »Very Cloudy»),
«27»: _ (u »Κυρίως συννεφιά»),
«28»: _ (u »Κυρίως συννεφιά»),
«29»: _ (u »Partly Cloudy»),
«30»: _ (u »Partly Cloudy»),
«31»: _ (u »Clear»),
«32»: _ (u »Clear»),
«33»: _ (u »Κάτι θολό»),
«34»: _ (u »Κάτι θολό»),
«35»: _ (u »Βροχή με χαλάζι»),
«36»: _ (u »Heat»),
«37»: _ (u »Απομονωμένες καταιγίδες»),
«38»: _ (u »Διάσπαρτες καταιγίδες»),
«39»: _ (u »Διάσπαρτες καταιγίδες»),
«40»: _ (u »Διάσπαρτα ντους»),
«41»: _ (u »Heavy Snow»),
«42»: _ (u »Αδύναμες και διάσπαρτες χιονοπτώσεις»),
«43»: _ (u »Έντονη Νεβάδα»),
«44»: _ (u »Διάσπαρτα σύννεφα»),
«45»: _ (u »Καταιγίδες»),
«46»: _ (u »Διάσπαρτες χιονοπτώσεις»),
«47»: _ (u »Απομονωμένες καταιγίδες»),
«Na»: _ (u »N / A»),
"-": _(ένα")
}

συνθήκες_text_fr = {
«0»: _ (u »Tornade»),
«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 »Brume»),
«22»: _ (u »Fumée»),
«23»: _ (u »Tres Venteux»),
«24»: _ (u »Venteux»),
«25»: _ (u »Froid»),
«26»: _ (u »Nuageux»),
«27»: _ (u »Tres Nuageux»),
«28»: _ (u »Tres Nuageux»),
«29»: _ (u »Nuages ​​Disséminés»),
«30»: _ (u »Nuages ​​Disséminés»),
«31»: _ (u »Beau»),
«32»: _ (u »Beau»),
«33»: _ (u »Belles Éclaircies»),
«34»: _ (u »Belles Éclaircies»),
«35»: _ (u »Pluie avec Grêle»),
«36»: _ (u »Chaleur»),
«37»: _ (ή »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»),
«Na»: _ (u »N / A»),
"-": _(ένα")
}

συνθήκες_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 »»),
"-": _(ή"")
}

συνθήκες_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 »»),
"-": _(ή"")
}

ημέρα_of_week = {
"Σήμερα": _ (ή "Σήμερα"),
«Δευτέρα»: _ (u »Δευτέρα»),
«Τρίτη»: _ (u »Τρίτη»),
«Τετάρτη»: _ (u »Τετάρτη»),
«Πέμπτη»: _ (u »Πέμπτη»),
«Παρασκευή»: _ (u »Παρασκευή»),
"Σάββατο": _ (u "Σάββατο"),
"Κυριακή": _ (u "Κυριακή")
}

day_of_week_short = {
"Σήμερα": _ (u "Now"),
«Δευτέρα»: _ (u »Δευ» »,
«Τρίτη»: _ (u »Τρί»),
«Τετάρτη»: _ (u »Τετ»),
«Πέμπτη»: _ (u »Thu»),
«Παρασκευή»: _ (u »Fri»),
"Σάββατο": _ (u "Σάβ"),
"Κυριακή": _ (u "Sun")
}

ημέρα_of_week_es = {
"Σήμερα": _ (u "σήμερα"),
«Δευτέρα»: _ (u »Δευτέρα»),
«Τρίτη»: _ (u »Τρίτη»),
«Τετάρτη»: _ (u »Τετάρτη»),
«Πέμπτη»: _ (u »Πέμπτη»),
«Παρασκευή»: _ (u »Παρασκευή»),
"Σάββατο": _ (u "Σάββατο"),
"Κυριακή": _ (u "Κυριακή")
}

day_of_week_sort_es = {
"Σήμερα": _ (u "σήμερα"),
"Δευτέρα": _ (u "mon"),
«Τρίτη»: _ (u »sea»),
«Τετάρτη»: _ (u »wed»),
«Πέμπτη»: _ (u »Πέμ»),
"Παρασκευή": _ (u "fri"),
"Σάββατο": _ (u "sat"),
"Κυριακή": _ (u "dom")
}

ημέρα_of_week_fr = {
«Σήμερα»: _ (u »Aujourd'hui»),
«Δευτέρα»: _ (u »Lundi»),
«Τρίτη»: _ (u »Mardi»),
«Τετάρτη»: _ (u »Mercredi»),
«Πέμπτη»: _ (u »Jeudi»),
«Παρασκευή»: _ (u »Vendredi»),
"Σάββατο": _ (u "Samedi"),
"Κυριακή": _ (u "Dimanche")
}

day_of_week_short_fr = {
«Σήμερα»: _ (u »Auj»),
"Δευτέρα": _ (u "Δευ"),
«Τρίτη»: _ (u »Mar»),
"Τετάρτη": _ (u "Mer"),
«Πέμπτη»: _ (u »Jeu»),
«Παρασκευή»: _ (u »Ελάτε»),
"Σάββατο": _ (u "Sam"),
"Κυριακή": _ (u "Dim")
}

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"),
«ΒΔ»: _ (u »g»),
«NNW»: _ (u »h»),
«N / A»: _ (u »«)
}

bear_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»),
«ΒΔ»: _ (u »ΟΧΙ»),
«NNW»: _ (u »NNO»),
«N / A»: _ (u »N \ A»)
}

bear_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»),
«ΒΔ»: _ (u »ΟΧΙ»),
«NNW»: _ (u »NNO»),
«N / A»: _ (u »N \ A»)
}

τάξη GlobalWeather:

τρέχουσες συνθήκες = []
πρόγνωση ημέρας = []
νυχτερινή πρόγνωση = []

τοπικές = "σε"

επιλογές = Κανένα
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"
ΛΗΞΕΙΣ_MINUTES = 30
DEFAULT_SPACING = u »«

def __init __ (αυτο, επιλογές):

self.options = επιλογές

εάν self.options.locale == Κανένα:
δοκιμάστε:
# self.locale = locale.getdefaultlocale () [0] [0: 2]
self.locale = «es» # αποπληρώστε αυτήν τη γραμμή για να αναγκάσετε τις ισπανικές τοπικές ρυθμίσεις
# self.locale = "fr" #uncomment αυτή τη γραμμή για να αναγκάσει τις γαλλικές τοπικές ρυθμίσεις
εκτός:
εκτύπωση "το locale not set"
αλλού:
# self.locale = self.options.locale
self.locale = «es» # αποπληρώστε αυτήν τη γραμμή για να αναγκάσετε τις ισπανικές τοπικές ρυθμίσεις
# self.locale = "fr" #uncomment αυτή τη γραμμή για να αναγκάσει τις γαλλικές τοπικές ρυθμίσεις

if self.options.verbose == Σωστό:
εκτύπωση >> sys.stdout, "locale set to", self.locale

def getText (μόνος, νεφελιστής):
rc = ""
για κόμβο σε νεφελιστή:
αν node.nodeType == node.TEXT_NODE:
rc = rc + κόμβος.δεδομένα
επιστροφή rc

def getSpaces (εαυτός, κενά):
string = u »»
εάν κενά == Κανένα:
string = self.DEFAULT_SPACING
αλλού:
για i στην περιοχή (0, κενά + 1):
string = string + u »«
επιστροφή συμβολοσειράς

def isNumeric (self, string):
δοκιμάστε:
ομοίωμα = float (κορδόνι)
επιστροφή Αληθινή
εκτός:
επιστροφή False

def isConnectionAvailable (αυτο):
# βεβαιωθείτε ότι μπορούμε να αποκτήσουμε πρόσβαση στον διακομιστή του Weather.com ανοίγοντας το url
δοκιμάστε:
Usock = urllib2.urlopen («http://xoap.weather.com»)
Usock.close ()
επιστροφή Αληθινή
εκτός:
επιστροφή False

def getBearingText (μόνος, ρουλεμάν):
ρουλεμάν = πλωτήρας (ρουλεμάν)
εάν φέρουν <11.25:
επιστροφή u »N»
ρουλεμάν Elif <33.75:
επιστροφή u »NNE»
ρουλεμάν Elif <56.25:
επιστροφή u »NE»
ρουλεμάν Elif <78.75:
επιστροφή u »JAN»
ρουλεμάν 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 »ΒΔ»
ρουλεμάν Elif <348.75:
επιστροφή u »ΒΔΒ»
αλλού:
επιστροφή «N / A»

def convertCelsiusToFahrenheit (self, temp):
επιστροφή str (int (όροφος (((float (temp) * 9.0) /5.0) +32)))

def convertKilometresToMiles (self, dist):
επιστροφή στ

def convertMillibarsToInches (αυτο, mb):
επιστροφή str (int (δάπεδο (float (mb) / 33.8582)))

def getTemplateList (αυτο, πρότυπο):

πρότυπος κατάλογος = []

για template_part στο template.split («{«):
αν template_part! = «»:
για template_part στο template_part.split ("}"):
αν template_part! = «»:
templatelist.append (u »» + template_part)

επιστροφή templatelist

def getOutputText (εαυτός, τύπος δεδομένων, ημέρα έναρξης, ημέρα ημέρας, βράδυ, σύντομη εβδομάδα, αυτοκρατορικός, κρυψώνα, διαστήματα):
#προσπαθήστε:
έξοδος = u »»

# ορίστε τρέχουσες μονάδες για έξοδο
if hideunits == Λάθος:
εάν imperial == Λάθος:
tempunit = u »° C»
speedunit = u »kph»
pressureunit = u »mb»
αλλού:
tempunit = u »° F»
speedunit = u »mph»
pressureunit = u »σε»
αλλού:
tempunit = u »°»
speedunit = u »»
pressureunit = u »»

if startday == Κανένα: # τρέχουσες συνθήκες

αν τύπος δεδομένων == "DW":
εάν self.locale == "είναι":
αν shortweekday == True:
έξοδος = WeatherText.day_of_week_short_es [self.current_conditions [0] .day_of_week]
αλλού:
έξοδος = WeatherText.day_of_week_es [self.current_conditions [0] .day_of_week]
elif self.locale == "fr":
αν shortweekday == True:
έξοδος = WeatherText.day_of_week_short_fr [self.current_conditions [0] .day_of_week]
αλλού:
έξοδος = WeatherText.day_of_week_fr [self.current_conditions [0] .day_of_week]
αλλού:
αν shortweekday == True:
έξοδος = WeatherText.day_of_week_short [self.current_conditions [0] .day_of_week]
αλλού:
έξοδος = WeatherText.day_of_week [self.current_conditions [0] .day_of_week]
τύπος δεδομένων elif == "WF": # γραμματοσειρά καιρού
έξοδος = WeatherText.conditions_weather_font [self.current_conditions [0] .condition_code]
τύπος δεδομένων elif == "LT":
string = self.current_conditions [0]. χαμηλό
if self.isNumeric (string) == True:
αν αυτοκρατορία == Αλήθεια:
string = self.convertCelsiusToFahrenheit (συμβολοσειρά)
string = συμβολοσειρά + tempunit
έξοδος = συμβολοσειρά
τύπος δεδομένων elif == "HT":
string = self.current_conditions [0]. υψηλό
if self.isNumeric (string) == True:
αν αυτοκρατορία == Αλήθεια:
string = self.convertCelsiusToFahrenheit (συμβολοσειρά)
string = συμβολοσειρά + 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]. προετοιμασία
if self.isNumeric (string) == True:
string = string + u »%»
έξοδος = συμβολοσειρά
τύπος δεδομένων elif == "HM":
string = self.current_conditions [0]. υγρασία
if self.isNumeric (string) == True:
string = string + u »%»
έξοδος = συμβολοσειρά
τύπος δεδομένων elif == "WD":
string = self.current_conditions [0] .wind_dir
if self.isNumeric (string) == True:
string = self.getBearingText (συμβολοσειρά)

εάν self.locale == "είναι":
έξοδος = WeatherText.bearing_text_es [string]
elif self.locale == "fr":
έξοδος = WeatherText.bearing_text_fr [συμβολοσειρά]
αλλού:
έξοδος = συμβολοσειρά

τύπος δεδομένων elif == "BF":
string = self.current_conditions [0] .wind_dir
if self.isNumeric (string) == True:
string = WeatherText.bearing_arrow_font [self.getBearingText (συμβολοσειρά)]
έξοδος = συμβολοσειρά
τύπος δεδομένων elif == "WS":
string = self.current_conditions [0] .wind_speed
if self.isNumeric (string) == True:
αν αυτοκρατορία == Αλήθεια:
string = self.convertKilometresToMiles (συμβολοσειρά)
string = string + speed unit
έξοδος = συμβολοσειρά
τύπος δεδομένων elif == "WG":
string = self.current_conditions [0] .wind_gusts
if self.isNumeric (string) == True:
αν αυτοκρατορία == Αλήθεια:
string = self.convertKilometresToMiles (συμβολοσειρά)
string = string + speed unit
έξοδος = συμβολοσειρά
τύπος δεδομένων elif == "CN":
έξοδος = self.current_conditions [0] .city
τύπος δεδομένων elif == "SR":
έξοδος = self.current_conditions [0] .sunrise
τύπος δεδομένων elif == "SS":
έξοδος = self.current_conditions [0] .sunset
τύπος δεδομένων elif == "MP":
έξοδος = self.current_conditions [0] .moon_phase
τύπος δεδομένων elif == "MF":
έξοδος = WeatherText.conditions_moon_font [self.current_conditions [0] .moon_icon]
τύπος δεδομένων elif == "BR":
string = self.current_conditions [0] .bar_read
if self.isNumeric (string) == True:
αν αυτοκρατορία == Αλήθεια:
string = self.convertMillibarsToInches (συμβολοσειρά)
συμβολοσειρά = συμβολοσειρά + μονάδα πίεσης
έξοδος = συμβολοσειρά
τύπος δεδομένων elif == "BD":
έξοδος = self.current_conditions [0] .bar_desc
αλλού:
έξοδος = "\ nERROR: Ζητήθηκε άγνωστος τύπος δεδομένων"

αλλιώς: # δεδομένα πρόβλεψης

if endday == Κανένα: # αν δεν έχει οριστεί η ημέρα της ημέρας χρησιμοποιήστε την έναρξη
endday = ημέρα έναρξης

if night == True: Απαιτείται # πρόβλεψη νύχτας

για το day_number στο εύρος (ημέρα έναρξης, τέλος ημέρας + 1):

αν τύπος δεδομένων == "DW":
εάν self.locale == "είναι":
αν shortweekday == True:
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.day_of_week_short_es [self.night_forecast [day_number] .day_of_week]
αλλού:
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.day_of_week_es [self.night_forecast [day_number] .day_of_week]
elif self.locale == "fr":
αν shortweekday == True:
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.day_of_week_short_fr [self.night_forecast [day_number] .day_of_week]
αλλού:
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.day_of_week_fr [self.night_forecast [day_number] .day_of_week]
αλλού:
αν shortweekday == True:
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.day_of_week_short [self.night_forecast [day_number] .day_of_week]
αλλού:
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.day_of_week [self.night_forecast [day_number] .day_of_week]
τύπος δεδομένων elif == "WF": # γραμματοσειρά καιρού
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.conditions_weather_font [self.night_forecast [day_number] .condition_code]
τύπος δεδομένων elif == "LT":
string = self.night_forecast [day_number]. χαμηλό
if self.isNumeric (string) == True:
αν αυτοκρατορία == Αλήθεια:
string = self.convertCelsiusToFahrenheit (συμβολοσειρά)
string = συμβολοσειρά + tempunit
έξοδος = έξοδος + self.getSpaces (κενά) + συμβολοσειρά

τύπος δεδομένων elif == "HT":
string = self.night_forecast [day_number]. υψηλό
if self.isNumeric (string) == True:
αν αυτοκρατορία == Αλήθεια:
string = self.convertCelsiusToFahrenheit (συμβολοσειρά)
string = συμβολοσειρά + 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]. προετοιμασία
if self.isNumeric (string) == True:
string = string + u »%»
έξοδος = έξοδος + self.getSpaces (κενά) + συμβολοσειρά
τύπος δεδομένων elif == "HM":
string = self.night_forecast [day_number]. υγρασία
if self.isNumeric (string) == True:
string = string + u »%»
έξοδος = έξοδος + self.getSpaces (κενά) + συμβολοσειρά
τύπος δεδομένων elif == "WD":
string = self.night_forecast [day_number] .wind_dir
εάν self.locale == "είναι":
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.bearing_text_es [string]
elif self.locale == "fr":
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.bearing_text_fr [string]
αλλού:
έξοδος = έξοδος + self.getSpaces (κενά) + συμβολοσειρά

τύπος δεδομένων elif == "BF":
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.bearing_arrow_font [self.night_forecast [day_number] .wind_dir]
τύπος δεδομένων elif == "WS":
string = self.night_forecast [day_number] .wind_speed
if self.isNumeric (string) == True:
αν αυτοκρατορία == Αλήθεια:
string = self.convertKilometresToMiles (συμβολοσειρά)
string = string + speed unit
έξοδος = έξοδος + self.getSpaces (κενά) + συμβολοσειρά
τύπος δεδομένων elif == "WG":
string = self.night_forecast [day_number] .wind_gusts
if self.isNumeric (string) == True:
αν αυτοκρατορία == Αλήθεια:
string = self.convertKilometresToMiles (συμβολοσειρά)
string = string + speed unit
έξοδος = έξοδος + self.getSpaces (κενά) + συμβολοσειρά
τύπος δεδομένων elif == "CN":
έξοδος = έξοδος + self.getSpaces (κενά) + self.night_forecast [day_number] .city
τύπος δεδομένων elif == "SR":
έξοδος = έξοδος + self.getSpaces (κενά) + self.night_forecast [day_number] .sunrise
τύπος δεδομένων elif == "SS":
έξοδος = έξοδος + self.getSpaces (κενά) + self.night_forecast [day_number] .sunset
τύπος δεδομένων elif == "MP":
output = output + self.getSpaces (κενά) + self.night_forecast [day_number]
τύπος δεδομένων elif == "MF":
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.conditions_moon_font [self.night_forecast [day_number] .moon_icon]
τύπος δεδομένων elif == "BR":
έξοδος = έξοδος + self.getSpaces (κενά) + self.night_forecast [day_number] .bar_read
τύπος δεδομένων elif == "BD":
έξοδος = έξοδος + self.getSpaces (κενά) + self.night_forecast [day_number] .bar_desc
αλλού:
έξοδος = "\ nERROR: Ζητήθηκε άγνωστος τύπος δεδομένων"
σπάσει

αλλιώς: Η πρόβλεψη # ημερών ήθελε

για το day_number στο εύρος (ημέρα έναρξης, τέλος ημέρας + 1):

αν τύπος δεδομένων == "DW":
εάν self.locale == "είναι":
αν shortweekday == True:
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.day_of_week_short_es [self.day_forecast [day_number] .day_of_week]
αλλού:
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.day_of_week_es [self.day_forecast [day_number] .day_of_week]
elif self.locale == "fr":
αν shortweekday == True:
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.day_of_week_short_fr [self.day_forecast [day_number] .day_of_week]
αλλού:
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.day_of_week_fr [self.day_forecast [day_number] .day_of_week]
αλλού:
αν shortweekday == True:
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.day_of_week_short [self.day_forecast [day_number] .day_of_week]
αλλού:
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.day_of_week [self.day_forecast [day_number] .day_of_week]
τύπος δεδομένων elif == "WF": # γραμματοσειρά καιρού
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.conditions_weather_font [self.day_forecast [day_number] .condition_code]
τύπος δεδομένων elif == "LT":
string = self.day_forecast [day_number]. χαμηλό
if self.isNumeric (string) == True:
αν αυτοκρατορία == Αλήθεια:
string = self.convertCelsiusToFahrenheit (συμβολοσειρά)
string = συμβολοσειρά + tempunit
έξοδος = έξοδος + self.getSpaces (κενά) + συμβολοσειρά
τύπος δεδομένων elif == "HT":
string = self.day_forecast [day_number]. υψηλό
if self.isNumeric (string) == True:
αν αυτοκρατορία == Αλήθεια:
string = self.convertCelsiusToFahrenheit (συμβολοσειρά)
string = συμβολοσειρά + 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
if self.isNumeric (string) == True:
string = string + u »%»
έξοδος = έξοδος + self.getSpaces (κενά) + συμβολοσειρά
τύπος δεδομένων elif == "HM":
string = self.day_forecast [day_number]. υγρασία
if self.isNumeric (string) == True:
string = string + u »%»
έξοδος = έξοδος + self.getSpaces (κενά) + συμβολοσειρά
τύπος δεδομένων elif == "WD":
string = self.day_forecast [day_number] .wind_dir

εάν self.locale == "είναι":
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.bearing_text_es [string]
elif self.locale == "fr":
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.bearing_text_fr [string]
αλλού:
έξοδος = έξοδος + self.getSpaces (κενά) + συμβολοσειρά

τύπος δεδομένων elif == "BF":
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.bearing_arrow_font [self.day_forecast [day_number] .wind_dir]
τύπος δεδομένων elif == "WS":
string = self.day_forecast [day_number] .wind_speed
if self.isNumeric (string) == True:
αν αυτοκρατορία == Αλήθεια:
string = self.convertKilometresToMiles (συμβολοσειρά)
string = string + speed unit
έξοδος = έξοδος + self.getSpaces (κενά) + συμβολοσειρά
τύπος δεδομένων elif == "WG":
string = self.day_forecast [day_number] .wind_gusts
if self.isNumeric (string) == True:
αν αυτοκρατορία == Αλήθεια:
string = self.convertKilometresToMiles (συμβολοσειρά)
string = string + speed unit
έξοδος = έξοδος + self.getSpaces (κενά) + συμβολοσειρά
τύπος δεδομένων elif == "CN":
έξοδος = έξοδος + self.getSpaces (κενά) + self.day_forecast [day_number] .city
τύπος δεδομένων elif == "SR":
έξοδος = έξοδος + self.getSpaces (κενά) + self.day_forecast [day_number] .sunrise
τύπος δεδομένων elif == "SS":
έξοδος = έξοδος + self.getSpaces (κενά) + self.day_forecast [day_number] .sunset
τύπος δεδομένων elif == "MP":
έξοδος = έξοδος + self.getSpaces (κενά) + self.day_forecast [day_number] .moon_phase
τύπος δεδομένων elif == "MF":
έξοδος = έξοδος + self.getSpaces (κενά) + WeatherText.conditions_moon_font [self.day_forecast [day_number] .moon_icon]
τύπος δεδομένων elif == "BR":
έξοδος = έξοδος + self.getSpaces (κενά) + self.day_forecast [day_number] .bar_read
τύπος δεδομένων elif == "BD":
έξοδος = έξοδος + self.getSpaces (κενά) + self.day_forecast [day_number] .bar_desc
αλλού:
έξοδος = u »\ n ΠΛΗΚΤΡΟ: Ζητήθηκε άγνωστος τύπος δεδομένων»
σπάσει

έξοδος = u »» + output.strip (u »«) # χάνετε κενά / πίσω θέσεις
απόδοση εξόδου

#εκτός:
#print "getOutputText: Μη αναμενόμενο σφάλμα:", sys.exc_info () [0]

def getOutputTextFromTemplate (μόνος, πρότυπο):
#προσπαθήστε:

# κλειδιά για δεδομένα προτύπου
DATATYPE_KEY = "–datatype ="
STARTDAY_KEY = "–startday ="
ENDDAY_KEY = "–endday ="
NIGHT_KEY = "–διανυκτέρευση"
SHORTWEEKDAY_KEY = "– συντομότερη εβδομάδα"
IMPERIAL_KEY = "–permial"
HIDEUNITS_KEY = "–hideunits"
SPACES_KEY = "–διαστήματα ="

έξοδος = u »»

optionfound = Λάθος

# φορτώστε το αρχείο
δοκιμάστε:
fileinput = άνοιγμα (self.options.template)
template = fileinput.read ()
fileinput.close ()
εκτός:
έξοδος = u »Το αρχείο προτύπου δεν βρέθηκε!»

templatelist = self.getTemplateList (πρότυπο)

# ας περπατήσουμε στη λίστα προτύπων και να προσδιορίσουμε την έξοδο για κάθε στοιχείο που βρέθηκε
για i in range (0, len (templatelist) -1):

pos = templatelist [i]. εύρεση (DATATYPE_KEY)
αν pos! = -1:
optionfound = Αλήθεια
pos = pos + len (DATATYPE_KEY)
datatype = templatelist [i] [pos: pos + 4] .strip ("}"). strip ("{"). strip ("-"). strip ("")
αλλού:
τύπος δεδομένων = Κανένας

pos = templatelist [i]. εύρεση (STARTDAY_KEY)
αν pos! = -1:
optionfound = Αλήθεια
pos = pos + len (STARTDAY_KEY)
startday = int (templatelist [i] [pos: pos + 4] .strip ("}"). strip ("{"). strip ("-"). strip (""))
αλλού:
startday = Κανένα

pos = templatelist [i]. εύρεση (ENDDAY_KEY)
αν pos! = -1:
optionfound = Αλήθεια
pos = pos + len (ENDDAY_KEY)
endday = int (templatelist [i] [pos: pos + 4] .strip ("}"). strip ("{"). strip ("-"). strip (""))
αλλού:
endday = Κανένα

pos = templatelist [i]. εύρεση (NIGHT_KEY)
αν pos! = -1:
optionfound = Αλήθεια
νύχτα = αληθινό
αλλού:
νύχτα = Λάθος

pos = templatelist [i]. εύρεση (SHORTWEEKDAY_KEY)
αν pos! = -1:
optionfound = Αλήθεια
shortweekday = Αλήθεια
αλλού:
shortweekday = Λάθος

pos = templatelist [i]. εύρεση (IMPERIAL_KEY)
αν pos! = -1:
optionfound = Αλήθεια
αυτοκρατορία = αληθινό
αλλού:
imperial = Ψεύτικο

pos = templatelist [i]. εύρεση (HIDEUNITS_KEY)
αν pos! = -1:
optionfound = Αλήθεια
hideunits = Αλήθεια
αλλού:
hideunits = Λάθος

pos = templatelist [i]. εύρεση (SPACES_KEY)
αν pos! = -1:
optionfound = Αλήθεια
pos = pos + len (SPACES_KEY)
spasi = int (templatelist [i] [pos: pos + 4] .strip («}»). strip («{«). strip («-«). strip (»«))
αλλού:
κενά = 1

εάν optionfound == True:
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)

if 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 (λεπτά = self.EXPIRY_MINUTES)). timetuple ()

εάν λήξη> ημερομηνία λήξης:
RefetchData = Αληθινό
αλλού:
RefetchData = Λάθος
αλλού:
RefetchData = Αληθινό

# ανάκτηση των δεδομένων των τρεχουσών συνθηκών, είτε από τον ιστότοπο είτε από το "αποσύνδεση"
εάν RefetchData == True:

# λάβετε δεδομένα τρέχουσας κατάστασης από την υπηρεσία xoap
δοκιμάστε:

# http://xoap.weather.com/weather/local/UKXX0103?cc=*&dayf=5&link=xoap∏=xoap&par=1061785028&key=e374effbfd74930b

url = 'http://xoap.weather.com/weather/local/' + self.options.location + '? cc = * & dayf = 8 & link = xoap∏ = xoap & par = 1061785028 & key = e374effbfd74930b & μονάδα = m '
if self.options.verbose == Σωστό:
print >> sys.stdout, «ανάκτηση δεδομένων καιρού από«, url

Usock = urllib2.urlopen (url)
xml = usock.read ()
Usock.close ()
self.weatherxmldoc = minidom.parseString (xml)
εκτός:
print "fetchData: Μη αναμενόμενο σφάλμα:", 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 »Σήμερα»
καθίζηση = u »N / A»
sunrise_n = location_n.getElementsByTagName ('sunr') [0]
sunrise = self.getText (sunrise_n.childNodes)
sunset_n = location_n.getElementsByTagName ('suns') [0]
sunset = self.getText (sunset_n.childNodes)
current_condition_n = weather_n.getElementsByTagName ('cc') [0]
current_desc_n = current_condition_n.getElementsByTagName ('t') [0]
current_desc = self.getText (current_desc_n.childNodes)
current_code_n = current_condition_n.getElementsByTagName ('εικονίδιο') [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 («άνεμος») [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 ('εικονίδιο') [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, mendκ, υγρασία, άνεμος_κατεύθυνση, ταχύτητα_ ανέμου, άνεμος_στοιχεία, πόλη, ανατολή του ηλίου, ηλιοβασίλεμα, φάση φεγγαριού, moon_icon, bar_read, bar_desc)
self.current_conditions.append (current_conditions_data)

# συλλογή δεδομένων πρόβλεψης
bar_read = u »Δ / Υ»
bar_desc = u »Δ / Υ»
moon_phase = u »Δ / Υ»
moon_icon = u »na»
forecast_n = weather_n.getElementsByTagName ('dayf') [0]
day_nodes = forecast_n.getElementsByTagName ('ημέρα')

για ημέρα σε day_nodes:
day_of_week = day.getAttribute ('t')
day_of_year = day.getAttribute ('dt')
high_temp_n = day.getElementsByTagName ('γεια') [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]
sunrise = self.getText (sunrise_n.childNodes)
sunset_n = day.getElementsByTagName ('suns') [0]
sunset = self.getText (sunset_n.childNodes)

Ειδικά δεδομένα πρόβλεψης # ημέρας
daytime_n = day.getElementsByTagName ('part') [0] # ημέρα
condition_code_n = daytime_n.getElementsByTagName ('εικονίδιο') [0]
condition_code = self.getText (condition_code_n.childNodes)
condition_n = daytime_n.getElementsByTagName ('t') [0]
condition = self.getText (condition_n.childNodes)
mendχnn = daytime_n.getElementsByTagName ('ppcp') [0]
Precop = self.getText (αρχείο_n.childNodes)
humidity_n = daytime_n.getElementsByTagName ('hmid') [0]
υγρασία = self.getText (humidity_n.childNodes)
wind_n = daytime_n.getElementsByTagName ("άνεμος") [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 ,ej, υγρασία, 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 ('εικονίδιο') [0]
condition_code = self.getText (condition_code_n.childNodes)
condition_n = daytime_n.getElementsByTagName ('t') [0]
condition = self.getText (condition_n.childNodes)
mendχnn = daytime_n.getElementsByTagName ('ppcp') [0]
Precop = self.getText (αρχείο_n.childNodes)
humidity_n = daytime_n.getElementsByTagName ('hmid') [0]
υγρασία = self.getText (humidity_n.childNodes)
wind_n = daytime_n.getElementsByTagName ("άνεμος") [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 ,ej, υγρασία, 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 = άνοιγμα (file_path_current, 'w')
pickle.dump (self.current_conditions, αρχείο εξόδου)
fileoutput.close ()

fileoutput = άνοιγμα (file_path_dayforecast, 'w')
pickle.dump (self.day_forecast, αρχείο εξόδου)
fileoutput.close ()

fileoutput = άνοιγμα (file_path_nightforecast, 'w')
pickle.dump (self.night_forecast, αρχείο εξόδου)
fileoutput.close ()

εκτός:
print "fetchData: Μη αναμενόμενο σφάλμα:", sys.exc_info () [0]
εκτύπωση "Δεν είναι δυνατή η ανάκριση των δεδομένων καιρού"

αλλιώς: # ανάκτηση δεδομένων καιρού από αρχεία κλάσης τουρσί
if self.options.verbose == Σωστό:
print >> sys.stdout, «λήψη δεδομένων καιρού από το αρχείο:«, file_path_current

fileinput = άνοιγμα (file_path_current, 'r')
self.current_conditions = pickle.load (αρχείο εισόδου)
fileinput.close ()

if self.options.verbose == Σωστό:
print >> sys.stdout, "ανάκτηση δεδομένων πρόβλεψης ημέρας από αρχεία:", file_path_dayforecast, file_path_nightforecast

fileinput = άνοιγμα (file_path_dayforecast, 'r')
self.day_forecast = pickle.load (fileinput)
fileinput.close ()

if self.options.verbose == Σωστό:
print >> sys.stdout, "λήψη δεδομένων πρόβλεψης ημέρας από αρχεία:", file_path_nightforecast, file_path_nightforecast

fileinput = άνοιγμα (file_path_nightforecast, 'r')
self.night_forecast = pickle.load (αρχείο εισόδου)
fileinput.close ()

Def outputData (αυτο):
#προσπαθήστε:

εάν self.options.template! = Κανένα:

έξοδος = self.getOutputTextFromTemplate (self.options.template)

αλλού:

έξοδος = self.getOutputText (self.options.datatype, self.options.startday, self.options.endday, self.options.night, self.options.shortweekday, self.options.imperial, self.options.hideunits, self. options.spaces)

print output.encode ("utf-8")

#εκτός:
#print "outputData: Μη αναμενόμενο σφάλμα:", sys.exc_info () [0]

αν __name__ == "__main__":

parser = CommandLineParser ()
(επιλογές, args) = parser.parse_args ()

if options.verbose == Αληθές:
εκτύπωση >> sys.stdout, "location:", options.location
εκτύπωση >> sys.stdout, "imperial:", options.imperial
εκτύπωση >> sys.stdout, "datatype:", options.datatype
εκτύπωση >> sys.stdout, "night:", options.night
print >> sys.stdout, "ημέρα έναρξης:", options.startday
print >> sys.stdout, "end day:", options.endday
εκτύπωση >> sys.stdout, "κενά:", options.spaces
εκτύπωση >> sys.stdout, "verbose:", 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

και επικολλήστε τα ακόλουθα μέσα:

εισαγωγική μονάδα
εισαγωγή συμβολοσειράς

# Εισαγάγετε το όνομα χρήστη και τον κωδικό πρόσβασης παρακάτω με διπλά εισαγωγικά
# π.χ. username = »username» και password = »password»
όνομα χρήστη = »ΣΑΣ_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 με αυτό θα ξεκινήσει κάθε φορά που θα ενεργοποιήσετε τον υπολογιστή.

Αυτό είναι, ελπίζω να σας βοηθήσει.


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.