<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def api(feature='conditions', city='Portland', state='OR', key=None):
 """Use the wunderground API to get current conditions instead of scraping Please be kind and use your own key (they're FREE!):
 http://www.wunderground.com/weather/api/d/login.html References: http://www.wunderground.com/weather/api/d/terms.html Examples: >> everything = [api(f, 'Portland') for f in features] >> js = api('alerts', 'Portland', 'OR') >> js = api('condit', 'Sacramento', 'CA') >> js = api('forecast', 'Mobile', 'AL') >> js = api('10day', 'Fairhope', 'AL') >> js = api('geo', 'Decatur', 'AL') >> js = api('hist', 'history', 'AL') >> js = api('astro') """

    features = ('alerts astronomy conditions currenthurricane forecast forecast10day geolookup history hourly hourly10day ' +
                'planner rawtide satellite tide webcams yesterday').split(' ')
    feature = util.fuzzy_get(features, feature)
    # Please be kind and use your own key (they're FREE!):
    # http://www.wunderground.com/weather/api/d/login.html
    key = key or env.get('WUNDERGROUND', None, verbosity=-1) or env.get('WUNDERGROUND_KEY', 'c45a86c2fc63f7d0', verbosity=-1)
    url = 'http://api.wunderground.com/api/{key}/{feature}/q/{state}/{city}.json'.format(
        key=key, feature=feature, state=state, city=city)
    return json.load(urllib.urlopen(url))