import requests class OpenWeatherMapError(RuntimeError): pass def openweathermap_json(apikey, cityid): """Returns parsed JSON as returned by openweathermap for the given cityid. In case of errors, an OpenWeatherMapError is raised.""" baseurl = 'http://api.openweathermap.org/data/2.5/weather' query = baseurl + '?units=metric&APPID={}&id={}&lang=de'.format(apikey, cityid) try: response = requests.get(query) if response.status_code != 200: raise OpenWeatherMapError('Got status code {} ({}).'.format(response.status_code, response.reason)) else: return response.json() except requests.exceptions.RequestException as error: raise OpenWeatherMapError('Request not successful: {}'.format(error))