Exemplo n.º 1
0
def main():
    '''Script is used to post an image from the renvotion of the bot's
    fictional restaurant.'''
    try:
        sleep_time = randrange(120)
        logger.info(
            'Starting post renovation progress script by sleeping %s minutes'
            % sleep_time
            )
        sleep(sleep_time*60)
        logger.info('Waking up post_renovation script.')
        tweets = twitter_api.statuses.user_timeline(screen_name=USER,
                                                    count=200
                                                    )
        filtered_tweets = []
        for tweet in tweets:
            text = tweet.get('text')
            if ('#renovation' in text
                    or '#comingsoon' in text
                    or '#refurbishment' in text):
                if tweet.get('entities').get('media'):
                    for media in tweet.get('entities').get('media'):
                        filtered_tweets.append(tweet)
        # TODO: Check with previous tweets...
        db.init_db()
        filtered_statuses = db.session.query(Status).all()
        # source ids of previously posted statuses
        filtered_statuses = [status.source_id for status in filtered_statuses
                             if status.source_id]
        # ids of found tweets
        filtered_tweet_ids = [tweet.get('id_str') for tweet in filtered_tweets]
        # Removing previously posted source tweets
        possible_statuses = [tweet_id for tweet_id in filtered_tweet_ids
                             if tweet_id not in filtered_statuses]
        # Setting the new tweet id, to the newest possible one
        possible_statuses = sorted(possible_statuses)
        if possible_statuses:
            new_source_id = possible_statuses[0]
        # Getting the source tweet
        new_source = [tweet for tweet in filtered_tweets
                      if tweet.get('id_str') == new_source_id][0]
        # TODO: Find next image to post
        medias = new_source.get('entities').get('media')
        media_url = None
        for media in medias:
            media_url = media.get('media_url')
            break
        image = urlopen(media_url)
        params = {"media[]": image.read(),
                  "status": generate_text(),
                  'source_id': new_source_id
                  }
        # Post tweet
        updateStatus(params)
    except Exception, err:
        logger.error('%s: %s' % (Exception, err))
Exemplo n.º 2
0
def main():
    logger.info("Started Intervention script")
    try:
        for date, tweet, media_url in INTERVENTION_SCHEDULE:
            if date == datetime.datetime.now().date():
                sleep_time = randrange(15)
                logger.info("Sleeping %s minutes before tweeting" % sleep_time)
                sleep(sleep_time * 60)
                if date == datetime.datetime.now().date():
                    params = {"status": tweet, "location": "home"}
                    if media_url:
                        image = urlopen(media_url)
                        params["media[]"] = image.read()
                    updateStatus(params)
    except Exception, err:
        logger.error("%s: %s" % (Exception, err))