Подтвердить что ты не робот

API Twitter: Как получить идентификатор пользователей, кто предпочитает конкретный твит?

Я пытаюсь получить информацию о пользователях, которые добавили конкретный твит в избранное, но я не могу найти его в документации.

Нечестно, что twitter может это сделать, но не дает этот метод API.

4b9b3361

Ответ 1

Короткий ответ: вы не можете сделать это отлично.

Длинный ответ: вы можете сделать это с некоторыми усилиями, но он не будет даже близок к совершенству. Вы можете использовать twitter api для контроля активности до 4000 идентификаторов пользователя. Если твит создан одним из 4k людей, которых вы контролируете, вы можете получить всю информацию, включая людей, которые воспользовались твитом. Это также требует, чтобы вы выталкивали всю информацию о людях, которых вы контролируете, в базу данных (я использую mongodb). Затем вы можете запросить базу данных для получения информации о вашем твиттере.

Ответ 2

По-видимому, единственный способ сделать это - очистить веб-сайт 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 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')