Introdução ao Twitter4J

Introdução ao Twitter4J

1. Visão geral

Neste artigo, veremos como usarTwitter4J em um aplicativo Java para se comunicar com o Twitter.

2. Twitter4J

Twitter4J é uma biblioteca Java de software livre, que fornece uma API conveniente para acessarTwitter API.

Simplificando, aqui está como podemos interagir com a API do Twitter; podemos:

  • Postar um tweet

  • Obtenha a linha do tempo de um usuário, com uma lista dos tweets mais recentes

  • Envie e receba mensagens diretas

  • Pesquise tweets e muito mais

Essa biblioteca garante que possamos executar essas operações com facilidade e também garante a segurança e a privacidade de um usuário - para o qual naturalmente precisamos ter credenciais OAuth configuradas em nosso aplicativo.

3. Dependências do Maven

Precisamos começar definindo a dependência para Twitter4J em nossopom.xml:


    org.twitter4j
    twitter4j-stream
    4.0.6

Para verificar se alguma nova versão da biblioteca foi lançada -track the releases here.

4. Configuração

A configuração do Twitter4J é fácil e pode ser feita de várias maneiras - por exemplo, em um arquivo de texto sem formatação ou em uma classe Java ou mesmo usando variáveis ​​de ambiente.

Vejamos cada uma dessas formas, uma de cada vez.

4.1. Arquivo de Texto Simples

Podemos usar um arquivo de texto simples - denominadotwitter4j.properties - para armazenar nossos detalhes de configuração. Vejamos as propriedades que precisam ser fornecidas:

oauth.consumerKey =       // your key
oauth.consumerSecret =    // your secret
oauth.accessToken =       // your token
oauth.accessTokenSecret = // your token secret

Todos esses atributos podem ser obtidos no console do Twitter Developer apósmake a new app.

4.2. Classe Java

Também podemos usar uma classeConfigurationBuilder para configurar o Twitter4J programaticamente em Java:

ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
  .setOAuthConsumerKey("your consumer key")
  .setOAuthConsumerSecret("your consumer secret")
  .setOAuthAccessToken("your access token")
  .setOAuthAccessTokenSecret("your access token secret");
TwitterFactory tf = new TwitterFactory(cb.build());
Twitter twitter = tf.getInstance();

Observe que usaremos a instânciaTwitter na próxima seção - quando começarmos a buscar dados.

4.3. variáveis ​​ambientais

Configurar através de variáveis ​​de ambiente é outra opção que temos. Se fizermos isso, observe que precisaremos de um prefixotwitter4j em nossas variáveis:

$ export twitter4j.oauth.consumerKey =       // your key
$ export twitter4j.oauth.consumerSecret =    // your secret
$ export twitter4j.oauth.accessToken =       // your access token
$ export twitter4j.oauth.accessTokenSecret = // your access token secret

5. Adicionar / recuperar dados de tweet em tempo real

Com um aplicativo totalmente configurado, podemos finalmente interagir com o Twitter.

Vejamos alguns exemplos.

5.1. Postar um tweet

Começaremos atualizando um tweet no Twitter:

public String createTweet(String tweet) throws TwitterException {
    Twitter twitter = getTwitterinstance();
    Status status = twitter.updateStatus("creating example API");
    return status.getText();
}

Usandostatus.getText(),, podemos recuperar o tweet que acabamos de postar.

5.2. Obtenha a linha do tempo

Também podemos obter uma lista de tweets na linha do tempo do usuário:

public List getTimeLine() throws TwitterException {
    Twitter twitter = getTwitterinstance();

    return twitter.getHomeTimeline().stream()
      .map(item -> item.getText())
      .collect(Collectors.toList());
}

Usandotwitter.getHomeTimeline(),, obtemos todos os tweets postados pelo ID da conta atual.

5.3. Envie uma mensagem direta

Também é possível enviar e receber uma mensagem direta para os seguidores usando o Twitter4j:

public static String sendDirectMessage(String recipientName, String msg)
  throws TwitterException {

    Twitter twitter = getTwitterinstance();
    DirectMessage message = twitter.sendDirectMessage(recipientName, msg);
    return message.getText();
}

O métodosendDirectMessage leva dois parâmetros:

  • RecipientName: o nome de usuário do Twitter de um destinatário da mensagem

  • msg: conteúdo da mensagem

Se o destinatário não for encontrado, osendDirectMessage lançará uma exceção com o código de exceção150.

5.4. Pesquisar Tweets

Também podemos procurar tweets contendo algum texto. Fazendo isso, obteremos uma lista de tweets com o nome de usuário dos usuários.

Vamos ver como essa pesquisa pode ser realizada:

public static List searchtweets() throws TwitterException {

    Twitter twitter = getTwitterinstance();
    Query query = new Query("source:twitter4j example");
    QueryResult result = twitter.search(query);

    return result.getTweets().stream()
      .map(item -> item.getText())
      .collect(Collectors.toList());
}

Claramente, podemos iterar cada tweet recebido em umQueryResulte buscar dados relativos.

5.5. API de streaming

Twitter Streaming API é útil quando as atualizações são necessárias em tempo real; ele lida com a criação de thread e escuta os eventos.

Vamos criar um ouvinte que ouve atualizações de tweet de um usuário:

public static void streamFeed() {

    StatusListener listener = new StatusListener() {

        @Override
        public void onException(Exception e) {
            e.printStackTrace();
        }
        @Override
        public void onDeletionNotice(StatusDeletionNotice arg) {
        }
        @Override
        public void onScrubGeo(long userId, long upToStatusId) {
        }
        @Override
        public void onStallWarning(StallWarning warning) {
        }
        @Override
        public void onStatus(Status status) {
        }
        @Override
        public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
        }
    };

    TwitterStream twitterStream = new TwitterStreamFactory().getInstance();

    twitterStream.addListener(listener);

    twitterStream.sample();
}

Podemos colocar alguma instruçãoprintln() para verificar o fluxo de saída do tweet em todos os métodos. Todos os tweets têm metadados de localização associados a ele.

Observe que todos os dados de tweets buscados pela API estão no formato UTF-8 e, como o Twitter é uma plataforma multilíngue, alguns formatos de dados podem ficar irreconhecíveis com base em sua origem.

6. Conclusão

Este artigo foi uma introdução rápida, mas abrangente, ao uso do Twitter4J com Java.

A implementação dos exemplos mostradoscan be found on GitHub - este é um projeto baseado em Maven, portanto, deve ser fácil de importar e executar como está. The only change we need to do is to insert our own OAuth credentials.