2015-03-11 10 views
11

Desidero ottenere un elenco di utenti che hanno preferito uno stato specifico tramite l'API di Twitter. Posso vedere che ogni stato ha la quantità di preferiti che ha ma ho bisogno dell'elenco di utenti che hanno creato il preferito.API Twitter - Ottenere l'elenco degli utenti che hanno preferito uno stato

Qualche idea su come raggiungere questo obiettivo?

+0

Questo non è esposto nella API. –

+0

qualsiasi soluzione alternativa per ottenere questi dati? Ho visto persone parlare dell'uso dello stream per questo, non esattamente dello stesso scenario ... – Ran

+0

Puoi usare gli stream per vedere chi ti ha preferito * i tweet * personali - ma non quelli di altre persone. –

risposta

6

Ecco una soluzione o hack implementato in 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 
+0

Ha funzionato! Sai anche a quale limite di velocità è soggetto? 15/min o 180/min? – yjc

+0

La soluzione alternativa non utilizza l'API ufficiale di Twitter, quindi non ci dovrebbe essere un limite di velocità. Ma potrebbe esserci un rilevamento di crawler alternativo da parte di Twitter, quindi provalo. –

+1

Ottimo, serve un po 'di modifica del codice per gli utenti python3. 'urllib2' sarà 'urllib.request' e ha bisogno di decodificare da byte quindi metti un uso 'decode ("utf8")' prima della corrispondenza – sovon

Problemi correlati