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
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ć.
Brak komentarzy:
Prześlij komentarz