środa, 24 sierpnia 2016

gDesklet GoodWeather nie działa

Podobnie jak aplet Clear Weather w Screenlets, także nie działał mi aplet gDesklet GoodWeather z powodu zmiany API w weather.com. Należy pobrać paczkę GoodWeather z: http://gdesklets.info/archive/#G i ją zainstalować w gDesklets.


Należy teraz w pliku: ~/.gdesklets/Sensors/GoodWeather/__init__.py wprowadzić takie źródło pogody:

 WEATHER_SOURCE = "http://wxdata.weather.com/weather/local/" \
                     "%(weather_code)s?cc=*&dayf=5&prod=xoap&" \
                     "par=1003832479&key=bb12936706a2d601"

Teraz aplet zacznie działać.

Screenlets nie działa Clear Weather

Od kilku miesięcy nie działał mi screenlet Clear Weather. Okazało się, że weather.com zmienił swoje API. Rozwiązanie przez przypadek znalazłem w sieci na stronie: https://ubuntu-mate.community/t/clearweather-desktop-screenlet-and-other-screenlets/813/5

Clear Weather po prawej stronie

Należy w pliku ClearWeatherScreelet.py w lokalizacji /usr/share/screenlets/screenlets-pack-all/ClearWeather zamienić dwa wystąpienia http://xoap.weather.com/weather/local na http://wxdata.weather.com/weather/local

A cały fragmęt tego pliku (ClearWeatherScreenlet.py) ma wyglądać tak:

try:
data = urlopen('http://wxdata.weather.com/weather/local/'+self.ZIP+'?cc=*&dayf=10&prod=xoap&par=1003666583&key=4128909340a9b2fc&unit='+unit + '&link=xoap',proxies=proxies).read()

dcstart = data.find('<loc ')
dcstop = data.find('</cc>')     ###### current conditions
data_current = data[dcstart:dcstop]
forecast.append(self.tokenizeCurrent(data_current))

for x in range(10):
dcstart = data.find('<day d=\"'+str(x))
dcstop = data.find('</day>',dcstart)   #####10-day forecast
day = data[dcstart:dcstop]
forecast.append(self.tokenizeForecast(day))
except (IOError, socket.error), e:
print "Error retrieving weather data", e
self.show_error((_("Error retrieving weather data"), e))

return forecast


def parseWeatherDataHourly(self):
if self.use_metric:
unit = 'm'
else:
unit = 's'

hforecast = []
try:

proxies = proxy.Proxy().get_proxy()
data = urlopen('http://wxdata.weather.com/weather/local/'+self.ZIP+'?cc=*&dayf=10&prod=xoap&par=1003666583&key=4128909340a9b2fc&unit='+unit+'&hbhf=12&link=xoap',proxies=proxies).read()
for x in range(8):
dcstart = data.find('<hour h=\"'+str(x))
dcstop = data.find('</hour>',dcstart)   ####hourly forecast
hour = data[dcstart:dcstop]
hforecast.append(self.tokenizeForecastHourly(hour))
except (IOError, socket.error), e:
print "Error retrieving weather data", e
self.show_error((_("Error retrieving weather data"), e))

return hforecast

Po zmianie aplet pogody zacznie znowu działać.