あるツイートをRTしたひとがその次になにをつぶやいたか?
公式RTが普及してから、非公式RTでコメントする代わりに、公式RTした次のツイートでコメントするのをよく見かけるようになりました。
しかし、それがどのようなものかを発信者は知ることができません。
一回、最大101回のAPIリクエストを消費する頭の悪いコードですが、もっとスマートなやり方ないんかなぁ。
Webアプリ化したいけど、サーバ代払えなくて先日レンタルサーバが消えたばかりなので、ちょっと無理…orz
だれか、Webアプリにしてくれないかなぁ…。
#!/usr/bin/env python # -*- coding:utf-8 -*- import tweepy consumer_token = "" consumer_secret = "" access_token = "" access_token_secret = "" auth = tweepy.OAuthHandler(consumer_token, consumer_secret) auth.set_access_token(access_token, access_token_secret) oauth_api = tweepy.API(auth) def rt_users_ids(tweet_id): users_ids = [] try: retweeted_by_ids = oauth_api.retweeted_by_ids(id=tweet_id, count=100) users_ids += retweeted_by_ids except tweepy.error.TweepError: try: limit = oauth_api.rate_limit_status() print 'remaining hits is ' + str(limit['remaining_hits']) + ' of ' + str(limit['hourly_limit']) except tweepy.error.TweepError: print 'Error. Try again one more hour later.' return users_ids status_id = raw_input("ツイートのステータスIDを入力してください > ") rt_users_ids = rt_users_ids(int(status_id)) print str(len(rt_users_ids)) + u"件のRTしたユーザーのIDを取得しました。" num_get_tweet = raw_input(str(len(rt_users_ids)) + "件のうち、なん件のツイートを取得しますか? > ") for rt_user_id in rt_users_ids[:int(num_get_tweet)]: tweets = oauth_api.user_timeline(user_id=rt_user_id, count=200, include_rts=True) rts = [tweet for tweet in tweets if hasattr(tweet, 'retweeted_status')] rt_tweet_id = -1 for rt in rts: if rt.retweeted_status.id == int(status_id): rt_tweet_id = rt.id status_ids = [tweet.id for tweet in tweets] if rt_tweet_id != -1: index = status_ids.index(rt_tweet_id) - 1 while hasattr(tweets[index], "retweeted_status"): index -= 1 if index < 0: print u"%s\t該当するツイートはありません。" % tweets[0].user.screen_name else: print u"%s\t%s\n" % (tweets[index].user.screen_name, tweets[index].text) else: print u"%s\t該当するツイートはありません。" % tweets[0].user.screen_name