Twitter4j для получения твитов

twitter twitter4j sentiment-analysis

291 просмотра

2 ответа

8 Репутация автора

Я написал этот простой код для получения твитов из твиттера

public static void main(String[] args) throws TwitterException {
        // TODO code application logic here
        ConfigurationBuilder cb = new ConfigurationBuilder();
        cb.setDebugEnabled(true)
                .setOAuthConsumerKey("**********")
                .setOAuthConsumerSecret("**************")
                .setOAuthAccessToken("***************")
                .setOAuthAccessTokenSecret("**************");

        TwitterFactory tf= new TwitterFactory(cb.build());
        twitter4j.Twitter tw= tf.getInstance();

        List<Status> statuses = tw.getHomeTimeline();
        for(Status status1 : statuses){
        System.out.println(status1.getUser().getName()+ "  :  "+ status1.getText());

        }

Но я хочу получить около 4000 твитов на языке урду. Я не знаю как это сделать. Помогите мне, пожалуйста

Автор: Rahim Ullah Rudbari Источник Размещён: 18.07.2016 09:51

Ответы (2)


0 плюса

1298 Репутация автора

С этим кодом вы будете получать твиты только с временной шкалы зарегистрированного пользователя из Twitter4j :

ResponseList getHomeTimeline () Возвращает 20 самых последних статусов, включая ретвиты, опубликованные аутентифицирующим пользователем и его друзьями. Это эквивалент / timeline / home в Интернете. "

Если вы хотите получить как минимум 4000 твитов в урду, вы можете сделать несколько вещей, например, вы можете получить пример потока из Twitter:

  ConfigurationBuilder cb = new ConfigurationBuilder();
    cb.setDebugEnabled(true)
            .setOAuthConsumerKey("**********")
            .setOAuthConsumerSecret("**************")
            .setOAuthAccessToken("***************")
            .setOAuthAccessTokenSecret("**************");
         TwitterStream twitterStream = new TwitterStreamFactory(cb.build())
                  .getInstance();
          StatusListener listener = new StatusListener() {

              @Override
              public void onStatus(Status status) {

                  System.out.println("@"+status.getUser().getScreenName()+": "+status.getText());
                  // HERE YOU STORE YOUR TWEETS
              }

              @Override
              public void onException(Exception ex) {
                  ex.printStackTrace();
              }

              @Override
              public void onDeletionNotice(StatusDeletionNotice arg0) {
                  // TODO Auto-generated method stub
              }

              @Override
              public void onScrubGeo(long arg0, long arg1) {

              }

              @Override
              public void onStallWarning(StallWarning arg0) {
                  // TODO Auto-generated method stub
                  System.out.println(arg0);
              }

              @Override
              public void onTrackLimitationNotice(int arg0) {
                  // TODO Auto-generated method stub
                  System.out.println(arg0);
              }
          };
      twitterStream.addListener(listener);
      twitterStream.sample("ur");

Пока вы не получите 4000 твитов, которые вы хотите.

Автор: FeanDoe Размещён: 18.07.2016 05:41

0 плюса

155 Репутация автора

Вы можете использовать поиск в Твиттере вместо того, чтобы просто получать твиты конкретного пользователя. То, что я сделал для получения твитов на турецком языке, это просто использование функции расширенного поиска в твиттере. В моей ситуации добавление lang:trпосле указанной поисковой фразы вернуло мне твиты на турецком языке. Вы можете использовать lang:urвместо того, lang:trчтобы получать твиты на языке урду.

Вот мой код:

public class TwitterDataGetter implements Runnable {
    private Thread twitterDataGetterThread;

    final static Logger logger = Logger.getLogger(TwitterDataGetter.class);

    public TwitterDataGetter() {
        try {
            ConfigurationBuilder cb = new ConfigurationBuilder();
            cb.setDebugEnabled(true);
            cb.setOAuthConsumerKey("your consumer key");
            cb.setOAuthConsumerSecret("your consumer secret");
            cb.setOAuthAccessToken("your access token");
            cb.setOAuthAccessTokenSecret("your access token secret");
            cb.setIncludeEntitiesEnabled(true);

            this.twitter = new TwitterFactory(cb.build()).getInstance();

            logger.info("Twitter API Configuration Successful");
        } catch (Exception e) {
            logger.error("Twitter API Configuration Error", e);
        }
    }

    public void getTweet(String keyword){
        List<Status> statuses = null;
        Query query;
        QueryResult result;

        try {
            query = new Query(keyword + " lang:tr");
            query.setCount(100);
            do {
                final long startTime = System.nanoTime();
                result = twitter.search(query);
                statuses = result.getTweets();
                for (Status status : statuses) {
                    System.out.println(status.getText());
                }

                final long duration = System.nanoTime() - startTime;
                if((5500 - duration/1000000) > 0){
                    Thread.sleep((5500 - duration/1000000));
                }
            } while ((query = result.nextQuery()) != null);
        } catch (TwitterException e) {
            logger.error("TwitterException", e);
        } catch (InterruptedException e) {
            logger.error("InterruptedException", e);
            throw new RuntimeException(e);
        }
    }

    @Override
    public void run() {
        while(true){
            this.getTweet("");
        }
    }

    public void start(){
        if(twitterDataGetterThread == null){
            twitterDataGetterThread = new Thread(this, "Twitter Thread");
        }
        twitterDataGetterThread.start();
        logger.info("Twitter Thread started");
    }

}

Вызов метода getTweet (String keyword) с пустой строкой возвращает последние твиты на вашем языке, не фильтруя их по любому ключевому слову.

Надеюсь, это поможет.

PS: вы также можете проверить результаты поиска для вашего языка по этой ссылке https://twitter.com/search?f=tweets&vertical=default&q=lang%3Aur

Автор: kadir Размещён: 30.07.2016 09:49
Вопросы из категории :
32x32