summaryrefslogtreecommitdiffstats
path: root/konversation/scripts/weather
diff options
context:
space:
mode:
Diffstat (limited to 'konversation/scripts/weather')
-rwxr-xr-xkonversation/scripts/weather70
1 files changed, 70 insertions, 0 deletions
diff --git a/konversation/scripts/weather b/konversation/scripts/weather
new file mode 100755
index 0000000..5d3dafb
--- /dev/null
+++ b/konversation/scripts/weather
@@ -0,0 +1,70 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+#
+# Copyright 2005,2007 by İsmail Dönmez <ismail@pardus.org.tr>
+# Licensed under GPL v2 or later at your option
+
+import sys
+from subprocess import *
+
+port = sys.argv[1]
+server = sys.argv[2]
+target = sys.argv[3]
+
+msg_template = "Current weather for %%B%s%%B : Temperature: %%B%s%%B, Pressure: %%B%s%%B, Wind: %%B%s%%B"
+msg_detailed_template = "Current weather for %%B%s%%B : %%B%s%%B, Temperature: %%B%s%%B, Pressure: %%B%s%%B, Wind: %%B%s%%B"
+
+def printMessage(message=None):
+ Popen(['dcop', port, 'default', 'say', server, target, message]).communicate()
+
+def printError(message=None):
+ Popen(['dcop', port, 'default', 'error', message]).communicate()
+
+def getData(section, station=None):
+ if station:
+ data = Popen(['dcop','KWeatherService','WeatherService', section, station], stdout=PIPE).communicate()[0].rstrip("\n")
+ else:
+ data = Popen(['dcop','KWeatherService','WeatherService', section], stdout=PIPE).communicate()[0].rstrip("\n")
+
+ return data
+
+def stationMessage(station):
+ city = getData("stationName", station)
+ temperature = getData("temperature", station)
+ pressure = getData("pressure", station)
+ wind = getData("wind", station)
+ detail = getData("weather", station)
+ detail2 = getData("cover", station)
+
+ if detail2:
+ if detail:
+ detail = detail+', '+detail2
+ else:
+ detail = detail2
+
+ if detail:
+ return msg_detailed_template % (city,detail,temperature,pressure,wind)
+ else:
+ return msg_template % (city,temperature,pressure,wind)
+
+def printWeather(index):
+ stations = getData("listStations").split("\n")
+
+ if index != None:
+ if index <= 0:
+ printError("Station index should be bigger than zero!")
+ elif index > len(stations):
+ printError("Station index is out of range")
+ else:
+ printMessage(stationMessage(stations[index-1]))
+ else:
+ for station in stations:
+ printMessage(stationMessage(station))
+
+if __name__ == "__main__":
+ try:
+ index = int(sys.argv[4])
+ except IndexError:
+ index = None
+
+ printWeather(index)