Beispiel #1
0
 def getTweetsforCandidate(self, screen_name):
     storedTweets = Tweet.query().filter(
         Tweet.candidate == screen_name).order(Tweet.id).fetch()
     if not storedTweets:
         tweets = self.api.GetUserTimeline(screen_name=screen_name,
                                           count=100)
     else:
         tweets = self.api.GetUserTimeline(screen_name=screen_name,
                                           since_id=storedTweets[-1].id,
                                           count=100)
     for t in tweets:
         tweet = Tweet()
         tweet.candidate = screen_name
         tweet.text = t.text
         tweet.id = t.id
         tweet.dateCreated = datetime.strptime(
             t.created_at, '%a %b %d %H:%M:%S +0000 %Y')
         tweet.put()
         self.response.write('\n' + str(tweet))
    def _extract_tweet(self, soup: BeautifulSoup) -> Tweet:
        stats_container = soup.find('div',
                                    class_='ProfileTweet-actionCountList')
        stats = self._extract_stats(stats_container)

        header_container = soup.select('div.stream-item-header')[0]
        account = self._extract_account(header_container)

        texts = soup.select('p.TweetTextSize.tweet-text')[0].findAll(text=True)

        tweet = Tweet()
        tweet.retweets = stats['retweet']
        tweet.likes = stats['favorite']
        tweet.replies = stats['reply']
        tweet.text = ''.join(texts)
        tweet.hashtags = re.findall(r"(#\w+)", tweet.text)
        tweet.date = datetime.utcfromtimestamp(
            int(
                header_container.find('span',
                                      class_='_timestamp').attrs['data-time']))
        tweet.account = account

        return tweet