Пример #1
0
 def listen(self):
     # slopppy way to keep it running and reconnecting if it hits a bump.
     # @NOTE you MUST kill the process to get this to stop because of this hack.  I know.... I suck, deal with it..
     while True:  # Keeps it going and reconnecting if it crashes.  See 'sloppy' above.
         try:
             with tweetstream.FilterStream(self.username, self.password, track=self.track) as stream:
                 for tweet in stream:
                     try:
                         tuser = self.handle_user(tweet)
                         obj = Tweet(twitter_user=tuser)
                         obj.text = tweet["text"].encode('utf-8')
                         obj.tweet_id = tweet["id_str"]
                         obj.created_at = self.make_datetime(tweet["created_at"])
                         obj.save()
                         if TWAP_ARCHIVE:
                             self.archive_json(obj, tweet)
                         for tag in self.hashtags(tweet):
                             obj.tags.add(tag)
                         if tweet["geo"]:
                             self.handle_geo(obj, tweet["geo"])
                         if tweet["coordinates"]:
                             self.handle_coordinates(obj, tweet["coordinates"])
                         print "%s - %s" % (stream.count, self.hashtags(tweet))
                     except:
                         print "Error Reading Record, skipping."
         except tweetstream.ConnectionError, e:
             print "Twitter Connection Error:", e.reason
             break
         except:
Пример #2
0
    def _handle_tweet(self, tweet_data):
        """
        Bases raw tweet data into various django models.

        :param tweet_data:
        :return:
        """
        try:
            tweet = Tweet.objects.get(tweet_id=tweet_data['id'])
            return None # Already exists, skip it.
        except Tweet.DoesNotExist:
            tweet = Tweet(
                twitter_user = self._handle_user(tweet_data),
                tweet_id = tweet_data['id'],
                created_at = self._parse_datetime(tweet_data['created_at']),
                text = tweet_data['text']
            )
            tweet.save()
            hashtags = self._parse_hashtags(tweet_data['text'])
            if hashtags:
                tweet.tags.add(*hashtags)
            return tweet