Guest User

[Prof] EX.4 - Twitter trends / stream

a guest
Feb 4th, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 10.96 KB | None | 0 0
  1. /*TwitterRestTest.java*/
  2.  
  3. import java.text.*;
  4. import twitter4j.*;
  5. import twitter4j.conf.*;            // for ConfigurationBuilder
  6. import java.util.*;
  7.  
  8. class TwitterRestClient
  9. {
  10.     private static final String CONSUMER_KEY        = "6AwlMb76WsqeEbNDSFWOEVczU";
  11.     private static final String CONSUMER_SECRET     = "WyRrB51aWnHtEf9OSngb2Yy77IsA2E1xKSi4bOMLgDXhHiqlNM";
  12.     private static final String ACCESS_TOKEN        = "3691829772-zaXsHmCEKnMo5l2SSZoA7SDBipUMIyEpUwOwTAm";
  13.     private static final String ACCESS_TOKEN_SECRET = "1s5228cE5CHSyNDTXBD5kXOHvjug75D1a02uZMLnplp1B";
  14.    
  15.     private static final String PROXY_HOST = "proxy-sa.mahidol";
  16.     private static final int    PROXY_PORT = 8080;
  17.    
  18.     private Twitter twitter;
  19.    
  20.     public TwitterRestClient()
  21.     {
  22.         // (1) set up connection to Twitter
  23.         ConfigurationBuilder cb = new ConfigurationBuilder();
  24.         cb.setDebugEnabled(true);
  25.         cb.setOAuthConsumerKey(CONSUMER_KEY);
  26.         cb.setOAuthConsumerSecret(CONSUMER_SECRET);
  27.         cb.setOAuthAccessToken(ACCESS_TOKEN);
  28.         cb.setOAuthAccessTokenSecret(ACCESS_TOKEN_SECRET);    
  29.  
  30.         /*
  31.         // Actually, we don't need this even when behind proxy
  32.         cb.setHttpProxyHost(PROXY_HOST);
  33.         cb.setHttpProxyPort(PROXY_PORT);    
  34.        
  35.         String username, password;
  36.         Scanner scan = new Scanner(System.in);
  37.         System.out.printf("User name for %s = ", PROXY_HOST); username = scan.next();
  38.         System.out.printf("Password  for %s = ", PROXY_HOST); password = scan.next();
  39.         cb.setHttpProxyUser(username);
  40.         cb.setHttpProxyPassword(password);
  41.         */
  42.  
  43.         // (2) create twitter object for batch job
  44.         TwitterFactory tf = new TwitterFactory(cb.build());
  45.         twitter = tf.getInstance();
  46.     }
  47.    
  48.     public void searchByKeyword()
  49.     {
  50.         Scanner scan = new Scanner(System.in);
  51.         System.out.print("Keyword (or hashtag) = "); String keyword = scan.next();
  52.         Query query = new Query(keyword);
  53.         //query.setLang("en");
  54.         //query.setSince("2018-01-01");
  55.         //query.setUntil("2018-02-15");
  56.         //query.setResultType(Query.POPULAR);
  57.         //query.setResultType(Query.RECENT);
  58.         //query.setResultType(Query.MIXED);
  59.        
  60.         int page = 0;
  61.         QueryResult result;
  62.         do
  63.         {
  64.             page++;
  65.             System.out.printf("============== PAGE %d ============== \n", page);
  66.             try { result = twitter.search(query); }
  67.             catch(Exception e) { e.printStackTrace(); return; }
  68.             List<Status> allTweets = result.getTweets();
  69.             for (Status oneTweet : allTweets)
  70.             {
  71.                 //if (!oneTweet.isRetweet())
  72.                     printOneTweet(oneTweet);
  73.             }
  74.             query = result.nextQuery();
  75.         } while (query != null && page < 3);
  76.     }
  77.    
  78.     public void searchByUser()
  79.     {
  80.         Scanner scan = new Scanner(System.in);
  81.         System.out.print("Seed's screen name = "); String user = scan.next();  
  82.         System.out.printf("\n");
  83.         ResponseList<Status> result;
  84.         try {
  85.             result = twitter.getUserTimeline(user);         // posted by this user
  86.             //result = twitter.getFavorites(user);            // liked by this user
  87.         }
  88.         catch(Exception e) { e.printStackTrace(); return; }
  89.         for (Status oneTweet : result)
  90.             printOneTweet(oneTweet);
  91.     }
  92.    
  93.     public void printOneTweet(Status tweet)
  94.     {
  95.         String user  = tweet.getUser().getScreenName();
  96.         String text  = tweet.getText();
  97.         int rtcount  = tweet.getRetweetCount();
  98.         int fvrcount = tweet.getFavoriteCount();
  99.        
  100.         //System.out.printf("%s >> (%d rt, %d fvr) %s \n\n", user, rtcount, fvrcount, text);
  101.        
  102.         // date format
  103.         //DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
  104.         //String timestampText = df.format(timestamp);
  105.        
  106.         if(tweet.isRetweet()) {
  107.             Date rtdate = tweet.getCreatedAt();
  108.             Status rtstatus = tweet.getRetweetedStatus();
  109.             Date crdate = rtstatus.getCreatedAt();
  110.             String cruser = rtstatus.getUser().getScreenName();
  111.             System.out.printf("%s\n", text);
  112.             System.out.printf("Retweet date : %s, by %s\n", rtdate, user);
  113.             System.out.printf("Original date : %s, by %s\n", crdate, cruser);
  114.             System.out.printf("\n");
  115.         }
  116.        
  117.         /*
  118.         HashtagEntity[] allHashtags = tweet.getHashtagEntities();
  119.         System.out.printf("%s >> ", user);
  120.         for (HashtagEntity oneHashtag : allHashtags)
  121.             System.out.printf("#%s  ", oneHashtag.getText());
  122.         System.out.println();
  123.         */
  124.     }
  125.    
  126.     public void searchUserInfo()
  127.     {
  128.         Scanner scan = new Scanner(System.in);
  129.         System.out.print("User name = "); String user = scan.next();
  130.        
  131.         User userObj;
  132.         try { userObj = twitter.showUser(user); }
  133.         catch(Exception e) { e.printStackTrace(); return; }
  134.        
  135.         System.out.println();
  136.         System.out.printf("Full   name = %s \n", userObj.getName());
  137.         System.out.printf("Screen name = %s \n", userObj.getScreenName());
  138.         System.out.printf("Verified  = %b \n", userObj.isVerified());
  139.         System.out.printf("Friends   = %,d \n", userObj.getFriendsCount());
  140.         System.out.printf("Followers = %,d \n", userObj.getFollowersCount());
  141.     }
  142.    
  143.     public String[] searchTrends()
  144.     {
  145.         int woeidBKK = 1225448;
  146.  
  147.         int numOfTrends=0;
  148.         String[]  words = new String[100];
  149.        
  150.         Trends allTrends;
  151.         try { allTrends = twitter.getPlaceTrends(woeidBKK); }
  152.         catch(Exception e) { e.printStackTrace(); return words;}
  153.        
  154.        
  155.         System.out.printf("Trends as of %s \n", allTrends.getAsOf());
  156.         for (Trend oneTrend : allTrends.getTrends()) {
  157.             System.out.printf("   %s \n", oneTrend.getName());
  158.             words[numOfTrends] = oneTrend.getName();
  159.             numOfTrends++;
  160.         }
  161.        
  162.         Scanner scan = new Scanner(System.in);
  163.         System.out.print("Number of top rends for steam retrival = "); String n = scan.next();
  164.  
  165.         int num = Integer.parseInt(n);
  166.        
  167.         String[] wordsToReturn = new String[words.length];
  168.        
  169.         for (int i=0; i<num; i++) {
  170.             wordsToReturn[i] = words[i];
  171.         }
  172.        
  173.         return wordsToReturn;
  174.     }
  175.    
  176.     public void ourTimeline()
  177.     {
  178.         //Scanner scan = new Scanner(System.in);
  179.         //System.out.print("Message = "); String message = scan.nextLine();          
  180.         //try { twitter.updateStatus(message); }
  181.         //catch(Exception e) { e.printStackTrace(); }
  182.        
  183.         ResponseList<Status> result;
  184.         try {
  185.             result = twitter.getUserTimeline();         // just our tweets
  186.             //result = twitter.getHomeTimeline();         // our tweets & friends' tweets
  187.         }
  188.         catch(Exception e) { e.printStackTrace(); return; }
  189.         for (Status oneTweet : result)
  190.             printOneTweet(oneTweet);
  191.     }
  192. }
  193.  
  194. public class TwitterRestTest
  195. {
  196.     public static void main(String[] args) {
  197.         TwitterRestClient client = new TwitterRestClient();
  198.         //client.searchByKeyword();
  199.         //client.searchByUser();
  200.        
  201.         //client.searchUserInfo();
  202.         String[] trends = client.searchTrends();
  203.        
  204.                
  205.         TwitterStreamClient sclient = new TwitterStreamClient();
  206.         sclient.readStream(trends);
  207.         //client.ourTimeline();
  208.     }  
  209. }
  210.  
  211. /* TwitterStreamTest.java */
  212.  
  213. import twitter4j.*;
  214. import twitter4j.conf.*;            // for ConfigurationBuilder
  215. import java.util.*;
  216.  
  217. class TwitterStreamClient
  218. {
  219.     private static final String CONSUMER_KEY        = "6AwlMb76WsqeEbNDSFWOEVczU";
  220.     private static final String CONSUMER_SECRET     = "WyRrB51aWnHtEf9OSngb2Yy77IsA2E1xKSi4bOMLgDXhHiqlNM";
  221.     private static final String ACCESS_TOKEN        = "3691829772-zaXsHmCEKnMo5l2SSZoA7SDBipUMIyEpUwOwTAm";
  222.     private static final String ACCESS_TOKEN_SECRET = "1s5228cE5CHSyNDTXBD5kXOHvjug75D1a02uZMLnplp1B";
  223.    
  224.     private static final String PROXY_HOST = "proxy-sa.mahidol";
  225.     private static final int    PROXY_PORT = 8080;
  226.    
  227.     private TwitterStream twitterStream;
  228.    
  229.     public TwitterStreamClient()
  230.     {
  231.         // (1) set up connection to Twitter
  232.         ConfigurationBuilder cb = new ConfigurationBuilder();
  233.         cb.setDebugEnabled(true);
  234.         cb.setOAuthConsumerKey(CONSUMER_KEY);
  235.         cb.setOAuthConsumerSecret(CONSUMER_SECRET);
  236.         cb.setOAuthAccessToken(ACCESS_TOKEN);
  237.         cb.setOAuthAccessTokenSecret(ACCESS_TOKEN_SECRET);    
  238.  
  239.         /*
  240.         // Actually, we don't need this even when behind proxy
  241.         cb.setHttpProxyHost(PROXY_HOST);
  242.         cb.setHttpProxyPort(PROXY_PORT);    
  243.        
  244.         String username, password;
  245.         Scanner scan = new Scanner(System.in);
  246.         System.out.printf("User name for %s = ", PROXY_HOST); username = scan.next();
  247.         System.out.printf("Password  for %s = ", PROXY_HOST); password = scan.next();
  248.         cb.setHttpProxyUser(username);
  249.         cb.setHttpProxyPassword(password);
  250.         */
  251.  
  252.         // (2) create twitter object for batch job
  253.         TwitterStreamFactory tsf = new TwitterStreamFactory(cb.build());
  254.         twitterStream = tsf.getInstance();
  255.        
  256.         // (3) add listener
  257.         twitterStream.addListener(new StatusAdapter() {
  258.             public void onStatus(Status status)
  259.             {
  260.                 printOneTweet(status);
  261.             }
  262.             public void onException(Exception e)
  263.             {
  264.                 e.printStackTrace();
  265.                 System.exit(-1);
  266.             }
  267.         });
  268.     }
  269.        
  270.     public void printOneTweet(Status tweet)
  271.     {
  272.         String user  = tweet.getUser().getName();
  273.         String text  = tweet.getText();
  274.         System.out.printf("%s >> %s \n\n", user, text);
  275.        
  276.         /*
  277.         HashtagEntity[] allHashtags = tweet.getHashtagEntities();
  278.         System.out.printf("%s >> ", user);
  279.         for (HashtagEntity oneHashtag : allHashtags)
  280.             System.out.printf("#%s  ", oneHashtag.getText());
  281.         System.out.println();
  282.         */
  283.     }
  284.    
  285.     public void readStream(String[] trends)
  286.     {
  287.         //Scanner scan = new Scanner(System.in);
  288.         //System.out.print("Enter words separated by space = "); String line = scan.nextLine();
  289.         //String [] words = line.split("\\s+");
  290.         twitterStream.filter(trends);
  291.  
  292.         //twitterStream.sample();
  293.         //twitterStream.sample("en");
  294.         try { Thread.sleep(5000); } catch(Exception e) {}
  295.         twitterStream.shutdown();
  296.     }
  297. }
  298. /*
  299. public class TwitterStreamTest
  300. {
  301.     public static void main(String[] args) {
  302.         TwitterStreamClient client = new TwitterStreamClient();
  303.         client.readStream();
  304.     }  
  305. }
  306. */
Add Comment
Please, Sign In to add comment