2012-12-17 2 views
8

Можно ли получить твиты, содержащие фотографии? В настоящее время я использую twitter search api и получаю все твиты с данными о сущности, установив include_entities = true. Я вижу детали изображения в медиа-объекте, но есть все равно, чтобы фильтровать и получать объекты твитов, которые имеют только эти элементы мультимедиа. Или все равно в Twitter4j, чтобы сделать этот запрос?Получить твиты с картинками, используя twitter search api

ответ

16

Там нет конкретного способа определить, что мне нужно только фотографии или видео, но вы можете фильтровать результаты, основанные на filter:links или filter:images или filter:videos в запросе наряду с include_entities=true.

Для примера: Для того, чтобы получить сообщения, содержащие ссылки, так как 2012-01-31, вы запрос должен иметь include_entities параметр, а также filter:links, как показано в следующем:

https://search.twitter.com/search.json?q=from%3Agoogle%20since%3A2012-01-31%20filter%3Alinks&include_entities=true" 

Как ваша потребность фильтровать твиты на основе изображений/фотографии, я думаю, вы должны использовать filter:images.

Пример вашего случая будет выглядеть следующим образом:

https://search.twitter.com/search.json?q=from%3Agoogle%20since%3A2012-01-31%20filter%3Aimages&include_entities=true" 

Надеется, что это помогает.

+0

Поиск с использованием фильтра: Изображения не возвращают никаких результатов. Пример URL-адреса google в приведенном выше примере не возвращает твиты, содержащие изображения, хотя есть твиты из Google, у которых есть изображения. Я что-то упускаю? Я удалил фильтр: изображения, и он возвращает твиты, некоторые из которых имеют изображения. –

+0

Забыл добавить - фильтр: видео работает как ожидалось. –

+1

ОК, я понял. filter: изображения возвращают только изображения, которые не загружаются напрямую через twitter изображения a.k.a, имеющие URL-адрес, начинающийся с pic.twitter.com. поэтому я изменил свой запрос следующим образом: «https://search.twitter.com/search.json?q=pic.twitter.com%20OR%20filter%3Aimages%20from%3Agoogle%20since%3A2012-01-31&include_entities=true ' –

2

С последним API twitter я не мог работать с фильтрами, и я не мог найти ни одного объяснения в своих документах. Хотя вы можете получить все твиты, а затем разобрать только мультимедийные. Вы можете запустить это, если внутри синтаксического анализа сценария:

if(this.entities.media != null){ 
    //Parse the tweet 
} 

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

0

В Lastest твиттер API вы можете сделать это в случае ConfigurationBuilder, перед созданием экземпляра 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(); 

Кроме того, после включения сущностей, в строке поиска нужно было условие «фильтр :изображений".

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); 

И вы получите только результаты с изображениями (проверено с помощью twitter4j-core 4.0.4).

Смежные вопросы