import twitter
import urllib2

NOAA_URL = "http://weather.noaa.gov/pub/data/observations/metar/stations/*station_id*.TXT"

def retrieve_and_post(conf):
    post = False

    pull_url = NOAA_URL.replace('*station_id*', conf['station'])
    request = urllib2.Request(pull_url, None)
    response = urllib2.urlopen(request)
    metar = response.read().split('\n')[1] # NOAA includes a "real" timestamp as the first line of the response

    if getattr(conf, 'hashtag', False):
        metar = '%s #%s' % (metar, conf['hashtag'])

    api = twitter.Api(username=conf['twitter_user'], password=conf['twitter_password'])

    # get the last posted message and make sure it's different before attempting to post. Twitter isn't supposed to allow dupes through but I'm seeing it happen anyway
    past_statuses = api.GetUserTimeline(conf['twitter_user'])
    if past_statuses[-0].text != metar:
        post = True

    if post:
        api.PostUpdate(metar)

if __name__ == '__main__':
    retrieve_and_post({'station': '<station_id>', 'twitter_user': '<twitter_user>', 'twitter_password': '<twitter_pass>'})

import twitter
import urllib2

NOAA_URL = "http://weather.noaa.gov/pub/data/observations/metar/stations/*station_id*.TXT"

def retrieve_and_post(conf):
    post = False

    pull_url = NOAA_URL.replace('*station_id*', conf['station'])
    request = urllib2.Request(pull_url, None)
    response = urllib2.urlopen(request)
    metar = response.read().split('\n')[1] # NOAA includes a "real" timestamp as the first line of the response

    if conf.get('hashtag', False):
        metar = '%s #%s' % (metar, conf['hashtag'])

    api = twitter.Api(username=conf['twitter_user'], password=conf['twitter_password'])

    # get the last posted message and make sure it's different before attempting to post. Twitter isn't supposed to allow dupes through but I'm seeing it happen anyway
    past_statuses = api.GetUserTimeline(conf['twitter_user'])
    if past_statuses[-0].text != metar:
        post = True

    if post:
        api.PostUpdate(metar)

if __name__ == '__main__':
    retrieve_and_post({'station': '<station_id>', 'twitter_user': '<twitter_user>', 'twitter_password': '<twitter_pass>'})

Use .get instead of getattr, dummy.
Use .get instead of getattr, dummy.

  import twitter
  import urllib2
  
  NOAA_URL = "http://weather.noaa.gov/pub/data/observations/metar/stations/*station_id*.TXT"
  
  def retrieve_and_post(conf):
      post = False
  
      pull_url = NOAA_URL.replace('*station_id*', conf['station'])
      request = urllib2.Request(pull_url, None)
      response = urllib2.urlopen(request)
      metar = response.read().split('\n')[1] # NOAA includes a "real" timestamp as the first line of the response
  
-     if getattr(conf, 'hashtag', False):
+     if conf.get('hashtag', False):
          metar = '%s #%s' % (metar, conf['hashtag'])
  
      api = twitter.Api(username=conf['twitter_user'], password=conf['twitter_password'])
  
      # get the last posted message and make sure it's different before attempting to post. Twitter isn't supposed to allow dupes through but I'm seeing it happen anyway
      past_statuses = api.GetUserTimeline(conf['twitter_user'])
      if past_statuses[-0].text != metar:
          post = True
  
      if post:
          api.PostUpdate(metar)
  
  if __name__ == '__main__':
      retrieve_and_post({'station': '<station_id>', 'twitter_user': '<twitter_user>', 'twitter_password': '<twitter_pass>'})
  
Use .get instead of getattr, dummy.
## Code Before:
import twitter
import urllib2

NOAA_URL = "http://weather.noaa.gov/pub/data/observations/metar/stations/*station_id*.TXT"

def retrieve_and_post(conf):
    post = False

    pull_url = NOAA_URL.replace('*station_id*', conf['station'])
    request = urllib2.Request(pull_url, None)
    response = urllib2.urlopen(request)
    metar = response.read().split('\n')[1] # NOAA includes a "real" timestamp as the first line of the response

    if getattr(conf, 'hashtag', False):
        metar = '%s #%s' % (metar, conf['hashtag'])

    api = twitter.Api(username=conf['twitter_user'], password=conf['twitter_password'])

    # get the last posted message and make sure it's different before attempting to post. Twitter isn't supposed to allow dupes through but I'm seeing it happen anyway
    past_statuses = api.GetUserTimeline(conf['twitter_user'])
    if past_statuses[-0].text != metar:
        post = True

    if post:
        api.PostUpdate(metar)

if __name__ == '__main__':
    retrieve_and_post({'station': '<station_id>', 'twitter_user': '<twitter_user>', 'twitter_password': '<twitter_pass>'})

## Instruction:
Use .get instead of getattr, dummy.
## Code After:
import twitter
import urllib2

NOAA_URL = "http://weather.noaa.gov/pub/data/observations/metar/stations/*station_id*.TXT"

def retrieve_and_post(conf):
    post = False

    pull_url = NOAA_URL.replace('*station_id*', conf['station'])
    request = urllib2.Request(pull_url, None)
    response = urllib2.urlopen(request)
    metar = response.read().split('\n')[1] # NOAA includes a "real" timestamp as the first line of the response

    if conf.get('hashtag', False):
        metar = '%s #%s' % (metar, conf['hashtag'])

    api = twitter.Api(username=conf['twitter_user'], password=conf['twitter_password'])

    # get the last posted message and make sure it's different before attempting to post. Twitter isn't supposed to allow dupes through but I'm seeing it happen anyway
    past_statuses = api.GetUserTimeline(conf['twitter_user'])
    if past_statuses[-0].text != metar:
        post = True

    if post:
        api.PostUpdate(metar)

if __name__ == '__main__':
    retrieve_and_post({'station': '<station_id>', 'twitter_user': '<twitter_user>', 'twitter_password': '<twitter_pass>'})
