2012-09-11 25 views
7

私はお気に入りのツイートをお気に入りに追加したユーザーについての情報を得ようとしていますが、ドキュメントで見つけることはできません。Twitter API:ユーザーIDを取得するにはどうすればいいですか?

Twitterがこれを行うことはできませんが、このメソッドはAPIとして提供されません。

+0

はhttps://stackoverflow.com/questions/を見ます28982850/twitter-api-getting-list-of-users-who-favorited-a-status – sovon

答えて

6

短い答え:これを完全に行うことはできません。

長い答え:これは何らかの努力で行うことができますが、完璧に近づくことはありません。 twitter apiを使用して、最大4000のユーザーIDの活動を監視することができます。あなたが監視している4k人のうちの1人によってツイートが作成された場合、そのツイートに好意を持った人々を含むすべての情報を得ることができます。これはまた、監視する人に関するすべての情報をデータベースにプッシュする必要があります(私はmongodbを使用します)。次に、あなたのツイートに関する情報をデータベースに問い合わせることができます。

+1

私は短い答えが好きです。もしTwitterが私にお気に入りを見せたくなければ、それは私のトラブルではなく、apiの問題です。 – gaussblurinc

+0

https://dev.twitter.com/docs/api/1.1/get/favorites/listを使用して、ユーザーの最新のお気に入り20件を取得し、その中の自分のツイートを検索することができます。しかし、これはわずか20を返すので、これは非常に限られています。 – Amitash

+3

ええ、私はすべてのユーザーIDを取得できません。私は 'statuses/favorites/users'のような方法が必要です – gaussblurinc

3

どうやら、これを行うための唯一の方法は、現時点ではそうのように、Webサーバから直接get the infoになっている。

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') 
関連する問題