API Twitter - получение списка пользователей, которые предпочитают статус
Я хочу получить список пользователей, которые предпочитают определенный статус через API Twitter.
Я вижу, что у каждого статуса есть количество избранных, но мне нужен список пользователей, которые сделали фаворитов.
Любые идеи, как это можно достичь?
Ответы
Ответ 1
Вот обходной путь или взлом, реализованный в Python 2.7.x
:
import urllib2
import re
def get_user_ids_of_post_likes(post_id):
try:
json_data = urllib2.urlopen('https://twitter.com/i/activity/favorited_popup?id=' + str(post_id)).read()
found_ids = re.findall(r'data-user-id=\\"+\d+', json_data)
unique_ids = list(set([re.findall(r'\d+', match)[0] for match in found_ids]))
return unique_ids
except urllib2.HTTPError:
return False
# Example:
# https://twitter.com/golan/status/731770343052972032
print get_user_ids_of_post_likes(731770343052972032)
# ['13520332', '416273351', '284966399']
#
# 13520332 +> @TopLeftBrick
# 416273351 => @Berenger_r
# 284966399 => @FFrink
Ответ 2
Это распечатает URL для каждой учетной записи Twitter, которой понравился указанный твит
import requests
from bs4 import BeautifulSoup
url = "https://twitter.com/golan/status/731770343052972032"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
likes = soup.findAll("a", {"class": "js-profile-popup-actionable js-tooltip"})
for like in likes:
print("https://twitter.com" + like['href'])
Ответ 3
Для тех, кто использует Python 3, вам нужно декодировать строку HTML, чтобы избежать получения TypeError.
import urllib
import re
def get_user_ids_of_post_likes(post_id):
try:
json_data = urllib.request.urlopen('https://twitter.com/i/activity/favorited_popup?id=' + str(post_id)).read()
json_data = json_data.decode('utf-8')
found_ids = re.findall(r'data-user-id=\\"+\d+', json_data)
unique_ids = list(set([re.findall(r'\d+', match)[0] for match in found_ids]))
return unique_ids
except urllib.request.HTTPError:
return False
# Example:
# https://twitter.com/golan/status/731770343052972032
print get_user_ids_of_post_likes(731770343052972032)
# ['13520332', '416273351', '284966399']
#
# 13520332 +> @TopLeftBrick
# 416273351 => @Berenger_r
# 284966399 => @FFrink