特定のツイートをお気に入りに追加したユーザーに関する情報を取得しようとしていますが、ドキュメントで見つけることができません。
twitter でそれができるのは不公平ですが、このメソッドを API として提供していません。
どうやら、これを行う唯一の方法は、Twitter の Web サイトをスクレイピングすることです。
import urllib2
from lxml.html import parse
#returns list(retweet users),list(favorite users) for a given screen_name and status_id
def get_twitter_user_rts_and_favs(screen_name, status_id):
url = urllib2.urlopen('https://twitter.com/' + screen_name + '/status/' + status_id)
root = parse(url).getroot()
num_rts = 0
num_favs = 0
rt_users = []
fav_users = []
for ul in root.find_class('stats'):
for li in ul.cssselect('li'):
cls_name = li.attrib['class']
if cls_name.find('retweet') >= 0:
num_rts = int(li.cssselect('a')[0].attrib['data-tweet-stat-count'])
elif cls_name.find('favorit') >= 0:
num_favs = int(li.cssselect('a')[0].attrib['data-tweet-stat-count'])
elif cls_name.find('avatar') >= 0 or cls_name.find('face-pile') >= 0:#else face-plant
for users in li.cssselect('a'):
#apparently, favs are listed before retweets, but the retweet summary's listed before the fav summary
#if in doubt you can take the difference of returned uids here with retweet uids from the official api
if num_favs > 0:#num_rt > 0:
#num_rts -= 1
num_favs -= 1
#rt_users.append(users.attrib['data-user-id'])
fav_users.append(users.attrib['data-user-id'])
else:
#fav_users.append(users.attrib['data-user-id'])
rt_users.append(users.attrib['data-user-id'])
return rt_users, fav_users
#example
if __name__ == '__main__':
print get_twitter_user_rts_and_favs('alien_merchant', '674104400013578240')
簡単な答え: これを完璧に行うことはできません。
長い答え: ある程度の努力でこれを行うことはできますが、完璧にはほど遠いでしょう。Twitter API を使用して、最大 4000 のユーザー ID のアクティビティを監視できます。監視している 4k 人のいずれかによってツイートが作成された場合、そのツイートをお気に入りにした人を含むすべての情報を取得できます。これには、監視する人々に関するすべての情報をデータベースにプッシュすることも必要です (私は mongodb を使用しています)。次に、ツイートに関する情報をデータベースに照会できます。
max_id を探しているツイートに設定して、エンドポイントのお気に入り/リストを使用します。