twitter.stream.PrintFilterStream.java Source code

Java tutorial

Introduction

Here is the source code for twitter.stream.PrintFilterStream.java

Source

package twitter.stream;

/*
 * Copyright 2007 Yusuke Yamamoto
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import twitter4j.*;

import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Arrays;

import twitter.database.ConnectionManager;

/**
 * <p>
 * This is a code example of Twitter4J Streaming API - filter method support.
 * <br>
 * Usage: java twitter4j.examples.stream.PrintFilterStream [follow(comma
 * separated numerical user ids)] [track(comma separated filter terms)]<br>
 * </p>
 *
 * @author Yusuke Yamamoto - yusuke at mac.com
 */
public final class PrintFilterStream {
    /**
     * Main entry of this application.
     *
     * @param args
     *            follow(comma separated user ids) track(comma separated filter
     *            terms)
     * @throws TwitterException
     *             when Twitter service or network is unavailable
     */
    public static int counter = 0;

    public static void main(String[] args) throws TwitterException, IOException {

        if (args.length < 1) {
            System.out.println(
                    "Usage: java twitter4j.examples.PrintFilterStream [follow(comma separated numerical user ids)] [track(comma separated filter terms)]");
            System.exit(-1);
        }

        final ConnectionManager c = new ConnectionManager();
        try {
            c.createConnection();
            c.createDB();
            c.closeConnection();

        } catch (SQLException e) {
            // TODO Auto-generated catch block
            System.out.println(e);
        }
        System.out.println("conexion creada");

        StatusListener listener = new StatusListener() {
            @Override
            public void onStatus(Status status) {

                //            pw.println("@" + status.getUser().getScreenName() + " - " + status.getText());
                //            if (status.getGeoLocation() != null)
                //               pw.println("Lat:" + status.getGeoLocation().getLatitude() + "Long"
                //                     + status.getGeoLocation().getLongitude());

                //            User u = status.getUser();
                //            try {
                //               System.out.println("User: id: " + u.getId() + " name: " + u.getName());
                //               c.insertTwitterUser(u);
                //            } catch (SQLException e1) {
                //               // TODO Auto-generated catch block
                //               System.out.println(e1);
                //            }
                //            
                //            if (status.isRetweet()) {
                //               
                //               System.out.println("RT Found!, getting the original tweet");
                //               Status retweetedStat = status.getRetweetedStatus();
                //               u = retweetedStat.getUser();
                //               System.out.println("RT User: id: " + u.getId() + " name: " + u.getName());
                //
                //               try {
                //            
                //                     c.insertTwitterUser(u);
                //                     
                //                     c.insertTweet(retweetedStat);
                //                     
                //                  
                //                  
                //                  
                //               } catch (SQLException e) {
                //                  // TODO Auto-generated catch block
                //                  System.out.println(e);
                //               }
                //               
                //            }
                //            if(status.getQuotedStatus() != null){
                //               
                //               System.out.println("Quoted Found!, getting the original tweet");
                //               Status quotedStatus = status.getQuotedStatus();
                //               u = quotedStatus.getUser();
                //               System.out.println("Quoted User: id: " + u.getId() + " name: " + u.getName());
                //
                //               try {
                //                  c.insertTwitterUser(u);
                //                  c.insertTweet(quotedStatus);
                //               } catch (SQLException e) {
                //                  // TODO Auto-generated catch block
                //                  System.out.println(e);
                //               }
                //            }
                //            
                //      
                //            
                //            try {
                //               c.insertTweet(status);
                //            } catch (SQLException e) {
                //               // TODO Auto-generated catch block
                //               System.out.println(e);
                //            }

                try {
                    c.recursiveInsert(status, 0);
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

            }

            @Override
            public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {
                System.out.println("Got a status deletion notice id:" + statusDeletionNotice.getStatusId());
            }

            @Override
            public void onTrackLimitationNotice(int numberOfLimitedStatuses) {
                System.out.println("Got track limitation notice:" + numberOfLimitedStatuses);
            }

            @Override
            public void onScrubGeo(long userId, long upToStatusId) {
                System.out.println("Got scrub_geo event userId:" + userId + " upToStatusId:" + upToStatusId);
            }

            @Override
            public void onStallWarning(StallWarning warning) {
                System.out.println("Got stall warning:" + warning);
            }

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

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

        FilterQuery fq = new FilterQuery();

        String keywords[] = { "election2016", "NeverTrump", "Hillary2016", "Trump", "HillarysEmail",
                "2016election" };

        fq.track(keywords);

        twitterStream.addListener(listener);
        twitterStream.filter(fq);
    }
}