def action(self, say=True): tweets = set() def already_said(id): if id in tweets: return True tweets.add(id) q = self.bot.session.query(Tweets).filter(Tweets.id == id) return self.bot.session.query(q.exists()).scalar() for user in self.users: last_tweet = self.bot.session.query(LastTweets).filter(LastTweets.user == user).first() try: timeline = self.twitter.get_user_timeline(screen_name=user) except TwythonError as err: if self.err: raise Pasteque("TWITTER IS DOWN OMG OMG OMG\n%s" % err) self.err = True return self.err = False for tweet in timeline: if tweet['id'] <= last_tweet.last: break if say and not (self.avoid_rt and RT in tweet and already_said(tweet[RT]['id'])): if RT in tweet: fmt = u'Tweet de %s retweeté par %s: ' % (tweet[RT][u'user'][u'screen_name'], user) else: fmt = u'Tweet de %s: ' % user self.bot.say({'text': fmt + unescape(tweet['text']), 'xhtml': fmt + Twython.html_for_tweet(tweet)}) tweets.add(tweet['id']) last_tweet.last = timeline[0]['id'] for tweet in tweets: self.bot.session.merge(Tweets(id=tweet)) self.bot.session.commit()
def action(self, say=True): tweets = set() def already_said(id): if id in tweets: return True tweets.add(id) q = self.bot.session.query(Tweets).filter(Tweets.id == id) return self.bot.session.query(q.exists()).scalar() for user in self.users: last_tweet = self.bot.session.query(LastTweets).filter( LastTweets.user == user).first() try: timeline = self.twitter.get_user_timeline(screen_name=user) except TwythonError as err: if self.err >= self.max_errors: raise Pasteque("TWITTER IS DOWN OMG OMG OMG\n%s" % err) self.err += 1 return self.err = 0 for tweet in timeline: if tweet['id'] <= last_tweet.last: break if say and not (self.avoid_rt and RT in tweet and already_said(tweet[RT]['id'])): text = tweet['text'] if RT in tweet: fmt = u'Tweet de %s retweeté par %s : ' initial = tweet[RT][u'user'][u'screen_name'] fmt_text = fmt % (initial, user) fmt_html = fmt % (user_url(initial), user_url(user)) text = tweet[RT]['text'] elif REPLY_NAME in tweet and tweet[ REPLY_NAME] is not None and tweet[ REPLY_TWEET] is not None: fmt = u'Tweet de %s en réponse à %s : ' url_text = '%s/%s/status/%s' % (URL, tweet[REPLY_NAME], tweet[REPLY_TWEET]) url_html = '<a href="%s">%s</a>' % (url_text, tweet[REPLY_NAME]) fmt_text = fmt % (user, url_text) fmt_html = fmt % (user_url(user), url_html) else: fmt = u'Tweet de %s : ' fmt_text = fmt % user fmt_html = fmt % user_url(user) self.bot.say({ 'text': fmt_text + unescape(text), 'xhtml': fmt_html + Twython.html_for_tweet(tweet) }) tweets.add(tweet['id']) if timeline: last_tweet.last = timeline[0]['id'] for tweet in tweets: self.bot.session.merge(Tweets(id=tweet)) self.bot.session.commit()
def action(self, say=True): tweets = set() def already_said(id): if id in tweets: return True tweets.add(id) q = self.bot.session.query(Tweets).filter(Tweets.id == id) return self.bot.session.query(q.exists()).scalar() for user in self.users: last_tweet = self.bot.session.query(LastTweets).filter(LastTweets.user == user).first() try: timeline = self.twitter.get_user_timeline(screen_name=user) except TwythonError as err: if self.err >= self.max_errors: raise Pasteque("TWITTER IS DOWN OMG OMG OMG\n%s" % err) self.err += 1 return self.err = 0 for tweet in timeline: if tweet['id'] <= last_tweet.last: break if say and not (self.avoid_rt and RT in tweet and already_said(tweet[RT]['id'])): text = tweet['text'] if RT in tweet: fmt = u'Tweet de %s retweeté par %s : ' initial = tweet[RT][u'user'][u'screen_name'] fmt_text = fmt % (initial, user) fmt_html = fmt % (user_url(initial), user_url(user)) text = tweet[RT]['text'] elif REPLY_NAME in tweet and tweet[REPLY_NAME] is not None and tweet[REPLY_TWEET] is not None: fmt = u'Tweet de %s en réponse à %s : ' url_text = '%s/%s/status/%s' % (URL, tweet[REPLY_NAME], tweet[REPLY_TWEET]) url_html = '<a href="%s">%s</a>' % (url_text, tweet[REPLY_NAME]) fmt_text = fmt % (user, url_text) fmt_html = fmt % (user_url(user), url_html) else: fmt = u'Tweet de %s : ' fmt_text = fmt % user fmt_html = fmt % user_url(user) self.bot.say({'text': fmt_text + unescape(text), 'xhtml': fmt_html + Twython.html_for_tweet(tweet)}) tweets.add(tweet['id']) if timeline: last_tweet.last = timeline[0]['id'] for tweet in tweets: self.bot.session.merge(Tweets(id=tweet)) self.bot.session.commit()