Как выполнить «ближний» поиск твитов с использованием библиотеки twitter4j?

#java #twitter #twitter4j

#java #Twitter #twitter4j

Вопрос:

Я пытаюсь выполнить «ближний» поисковый запрос для извлечения твитов, приближенных к определенному местоположению, используя

twitter4j, но получает исключение.

 public static void main(String[] args) {
    Twitter twitter = new TwitterFactory().getInstance();
    try {
        String searchTerm = "jobs near:"san francisco"";
        QueryResult result = twitter.search(new Query(searchTerm));
        List<Tweet> tweets = result.getTweets();
        for (Tweet tweet : tweets) {
            System.out.println("@"   tweet.getFromUser()   " - "   tweet.getText());
        }
    } catch (TwitterException te) {
        te.printStackTrace();
        System.out.println("Failed to search tweets: "   te.getMessage());
    }
}
  

Исключение, которое я получаю

403: Запрос понят, но в нем отказано. Сопроводительное сообщение об ошибке объяснит, почему. Этот код используется, когда запросы отклоняются из-за ограничений на обновление (https://support.twitter.com/articles/15364-about-twitter-limits-update-api-dm-and-following ). {«ошибка»: «Недопустимый параметр»} Соответствующие обсуждения можно найти в Интернете по адресу:http://www.google.co.jp/search?q=d35baff5 или http://www.google.co.jp/search?q=08c3b248 TwitterException{ExceptionCode=[d35baff5-08c3b248], StatusCode=403, retryAfter=-1, rateLimitStatus=null, featureSpecificRateLimitStatus=null, version= 2.2.5} Не удалось выполнить поиск твитов: 403: Запрос понят, но он был отклонен. Сопроводительное сообщение об ошибке объяснит, почему. Этот код используется, когда запросы отклоняются из-за ограничений на обновление (https://support.twitter.com/articles/15364-about-twitter-limits-update-api-dm-and-following ). {«ошибка»: «Недопустимый параметр»}

 at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:185)
at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65)
at twitter4j.internal.http.HttpClientWrapper.get(HttpClientWrapper.java:85)
at twitter4j.TwitterImpl.get(TwitterImpl.java:1895)
at twitter4j.TwitterImpl.search(TwitterImpl.java:98)
at com.xebia.lightning.scheduler.JobTweetsArchiver.main(JobTweetsArchiver.java:115)
  

Ответ №1:

Смотрите здесь: «оператор near нельзя использовать для поисковых запросов. Вместо этого используйте параметр geocode «.

Итак, передайте параметр geocode в поиск:

Возвращает твиты пользователей, расположенных в пределах заданного радиуса заданной широты / долготы. Местоположение предпочтительно выбирается из API геотегирования, но будет возвращено к их профилю Twitter. Значение параметра задается «широта, долгота, радиус», где единицы измерения радиуса должны быть указаны либо как «mi» (мили), либо как «km» (километры). Обратите внимание, что вы не можете использовать оператор near через API для геокодирования произвольных местоположений; однако вы можете использовать этот параметр geocode для прямого поиска ближних геокодов.

Комментарии:

1. можете ли вы поделиться какой-либо ссылкой, которая показывает, как использовать API геотегирования для получения геолокации с помощью twitter4j?