2012-04-07 10 views
5

Devo eseguire una query che restituisce un elenco di utenti, insieme ai dati relativi a tali utenti. Supponiamo che io consideri una persona e voglio sapere dove sono tutti i suoi seguaci. Questa query:Query batch in Twitter API?

http://api.twitter.com/1/followers/ids.json?screen_name={screen_name} 

restituisce un elenco di ID utente dei follower della persona. Posso quindi collegare ogni utente id in questa query:

http://api.twitter.com/1/users/lookup.json?user_id={user_id} 

per ottenere informazioni sull'utente, compresa l'ubicazione. Ma questo significa che se la persona ha 1000 follower, dovrei chiamare la seconda query 1000 volte. Sarebbe meglio fare un "join" (come sarebbe chiamato in SQL), dove potremmo chiedere i follower e le loro posizioni, e farlo in una query, ma non riesco a vedere come farlo.

È possibile? Inoltre, quando si richiede la ricerca dell'utente, è possibile specificare che si desidera solo un campo e non l'intero record utente (un po 'come chiedere select single_field invece di select * in SQL)?

risposta

7

È possibile enumerare più user_id s nella query. Esempio:
http://api.twitter.com/1/users/lookup.xml?user_id=351927492,8602462,132533067,16984020,131217651,125764179

Ma si capped per 100 valori (nomi, IDS) per query, quindi per l'utente con 1000 followers devi fare 10 domande.

Aggiornamento Per 1.1 versione di API URL corretto sarebbe http://api.twitter.com/1.1/users/lookup.json?user_id=351927492,8602462,132533067,16984020,131217651,125764179

+0

Grazie. Non è un bel join, ma riduce il numero di query da 1001 a 11, quindi credo sia abbastanza buono. Sai qualcosa sull'altra domanda, limitando i risultati nella ricerca degli utenti solo ai campi di interesse? –

+0

@JoshuaFrank Come noto, tale possibilità non è integrata nell'API di Twitter, ma dal momento che le manipolazioni JSON sono piuttosto semplici nella maggior parte delle lingue, non sarebbe un problema (eccetto se si è a conoscenza della quantità di dati scaricati). –

+0

Non capisco cosa intendi. Di conseguenza ottieni il JSON come risultato, ma se inviano molti più dati di quelli di cui hai realmente bisogno, spreca larghezza di banda. D'accordo, ottenere i dati necessari dal risultato non sarà difficile, ma sarebbe meglio non chiedere molto più del necessario. –