我正在尝试获取有关用户的信息,他们向收藏夹添加了特定的推文,但我在文档中找不到它。
twitter可以做到这一点是不公平的,但不会将此方法作为API。
答案 0 :(得分:8)
简短的回答:你不能完美地做到这一点。
答案很长:你可以通过一些努力来做到这一点,但它不会接近完美。您可以使用twitter api监控最多4000个用户ID的活动。如果您监控的4k人之一创建了推文,那么您可以获得所有信息,包括赞成推文的人。这还要求您将有关监视人员的所有信息推送到数据库(我使用mongodb)。然后,您可以在数据库中查询有关推文的信息。
答案 1 :(得分:6)
显然,实现此目的的唯一方法是直接从网络服务器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')
答案 2 :(得分:0)
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 上提供了示例代码。
答案 3 :(得分:-6)
使用端点收藏夹/列表,并将max_id设置为您正在寻找的推文。