【问题标题】:Twitter API: How to get users ID, who favorite specific tweet?Twitter API:如何获取用户 ID,谁最喜欢特定的推文?
【发布时间】:2012-09-04 07:44:56
【问题描述】:

我正在尝试获取有关将特定推文添加到收藏夹的用户的信息,但我在文档中找不到。

twitter 可以做到这一点是不公平的,但没有将这种方法作为 API 提供。

【问题讨论】:

标签: get twitter favorites


【解决方案1】:

显然,这样做的唯一方法是scrape Twitter 的网站:

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')

【讨论】:

    【解决方案2】:

    简短的回答:你不能完美地做到这一点。

    长答案:您可以通过一些努力来做到这一点,但它甚至不会接近完美。您可以使用 twitter api 监控多达 4000 个用户 ID 的活动。如果一条推文是由您监控的 4k 人之一创建的,那么您可以获得所有信息,包括收藏该推文的人。这还要求您将有关您监视的人员的所有信息推送到数据库(我使用 mongodb)。然后,您可以查询数据库以获取有关您的推文的信息。

    【讨论】:

    • 我喜欢简短的回答。如果 twitter 不想显示我的收藏夹,那不是我的麻烦,而是 api 的麻烦,呃:\ 谢谢!
    • 您可以使用dev.twitter.com/docs/api/1.1/get/favorites/list 获取用户的 20 个最新收藏夹并在其中搜索您的推文。但这非常有限,因为它只返回 20 个。
    • 是的,我无法获取所有用户 ID,是吗?我需要这样的方法:statuses/favorites/users
    【解决方案3】:

    Twitter API v2 具有新的点赞功能:

    https://twittercommunity.com/t/announcing-twitter-api-v2-likes-lookup-and-blocks-lookup/154353

    要获得赞过推文的用户,请使用GET /2/tweets/:id/liking_users 端点。

    他们还在github repo 上提供了示例代码。

    【讨论】:

      【解决方案4】:

      使用端点收藏夹/列表并将 max_id 设置为您要查找的推文。

      https://dev.twitter.com/rest/reference/get/favorites/list

      【讨论】:

      • 对于那些想知道反对意见的人来说,这个 API 可以获得 用户 的最爱/喜欢。是的,您可以使用某些参数来查找特定用户是否喜欢这条推文,但您不能用它来表示“在 Twitter 上的每个用户中,有哪些 42 位用户喜欢推文 123456?”跨度>
      猜你喜欢
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 2021-07-23
      • 2019-05-20
      • 2015-04-07
      • 1970-01-01
      相关资源
      最近更新 更多