È possibile ottenere tweet contenenti foto? Attualmente sto utilizzando twitter search api e ricevo tutti i tweet con dettagli sull'entità impostando include_entities = true. Vedo i dettagli delle immagini sotto l'oggetto multimediale, ma è comunque in grado di filtrare e ottenere oggetti tweet che contengono solo questi elementi multimediali. O c'è comunque in Twitter4j per fare questa domanda?Ottieni Tweet con immagini usando Twitter search api
risposta
Non v'è alcun modo specifico per specificare che ho bisogno solo foto o video, ma è possibile filtrare i risultati in base filter:links
o filter:images
o filter:videos
nella query con include_entities=true
.
Per esempio: Per ottenere i tweet che contengono link dal 2012-01-31
, si query dovrebbe avere include_entities
parametro così come filter:links
come mostrato nel seguente modo:
https://search.twitter.com/search.json?q=from%3Agoogle%20since%3A2012-01-31%20filter%3Alinks&include_entities=true"
Come la vostra necessità è quella di filtrare i tweet sulla base di immagini/foto, penso che dovresti usare filter:images
.
Un esempio del suo caso sarà simile:
https://search.twitter.com/search.json?q=from%3Agoogle%20since%3A2012-01-31%20filter%3Aimages&include_entities=true"
Spero che questo aiuti.
Con l'ultima API di Twitter, non sono riuscito a far funzionare i filtri e non sono riuscito a trovare alcuna spiegazione nei loro documenti. Anche se è possibile ottenere tutti i tweet e quindi analizzare solo quelli multimediali. Si può sparare questo se all'interno dello script di analisi:
if(this.entities.media != null){
//Parse the tweet
}
Questa non è la soluzione migliore, ma la parte peggiore viene a Twitter che si sta dando ulteriori informazioni e l'utilizzo di più delle sue risorse proprie.
Nel lastest Twitter API si può fare nel caso ConfigurationBuilder, prima di creare l'istanza Twitter:
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(false);
cb.setOAuthConsumerKey(API_KEY);
cb.setOAuthConsumerSecret(API_SECRET);
cb.setOAuthAccessToken(ACCESS_TOKEN);
cb.setOAuthAccessTokenSecret(SECRET_KEY);
// enabling include_entities parameters
cb.setIncludeEntitiesEnabled(true);
Twitter twitterInstance = new TwitterFactory(cb.build()).getInstance();
Inoltre, dopo aver attivato le entità, nella stringa di ricerca si deve ha avuto il filtro per condizione " :immagini".
List<String> keywords = new ArrayList<String>();
keywords.add("#pet");
keywords.add("cat");
// String.join for Java 8
String twitterSearchString = "((" + String.join(" OR ", keywords) + ")";
// adding the filter condition
twitterSearchString += " AND filter:images)";
Query q = new Query(twitterSearchString);
E si otterrà solo risultati con immagini (testati con twitter4j-core 4.0.4).
Ricerca tramite filtro: le immagini non restituiscono alcun risultato. L'esempio di URL di Google nell'esempio sopra riportato non restituisce i tweet contenenti immagini anche se ci sono tweet di Google che contengono immagini. Mi sto perdendo qualcosa? Ho rimosso il filtro: immagini e restituisce tweet, alcuni dei quali hanno immagini. –
Hai dimenticato di aggiungere - filtro: i video funzionano come previsto. –
ok ho capito. filtro: le immagini restituiscono solo le immagini che non vengono caricate direttamente su twitter a.k.una immagine che ha url a partire da pic.twitter.com. quindi ho modificato la mia richiesta in seguito: 'https://search.twitter.com/search.json?q=pic.twitter.com%20OR%20filter%3Aimages%20da%3Agoogle%20since%3A2012-01-31&include_entities=true ' –