View Javadoc

1   /**
2    * Copyright (c) 2011, The University of Southampton and the individual contributors.
3    * All rights reserved.
4    *
5    * Redistribution and use in source and binary forms, with or without modification,
6    * are permitted provided that the following conditions are met:
7    *
8    *   * 	Redistributions of source code must retain the above copyright notice,
9    * 	this list of conditions and the following disclaimer.
10   *
11   *   *	Redistributions in binary form must reproduce the above copyright notice,
12   * 	this list of conditions and the following disclaimer in the documentation
13   * 	and/or other materials provided with the distribution.
14   *
15   *   *	Neither the name of the University of Southampton nor the names of its
16   * 	contributors may be used to endorse or promote products derived from this
17   * 	software without specific prior written permission.
18   *
19   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21   * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22   * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
23   * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24   * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25   * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26   * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29   */
30  package org.openimaj.demos.twitter;
31  
32  import org.apache.commons.lang3.StringUtils;
33  import org.openimaj.logger.LoggerUtils;
34  import org.openimaj.stream.provider.twitter.TwitterStreamFilterDataset;
35  import org.openimaj.util.api.auth.DefaultTokenFactory;
36  import org.openimaj.util.api.auth.common.TwitterAPIToken;
37  import org.openimaj.util.stream.Stream;
38  
39  import twitter4j.Query;
40  import twitter4j.Status;
41  
42  /**
43   *
44   * @author Sina Samangooei (ss@ecs.soton.ac.uk)
45   */
46  public class TweetHashEmotes {
47  	public static void main(String[] args) {
48  		
49  		String[] hashes = new String[]{
50  				"#amazed",
51  				"#angry",
52  				"#annoyed",
53  				"#awesome",
54  				"#awkward",
55  				"#bored",
56  				"#calm",
57  				"#confused",
58  				"#delighted",
59  				"#depressed",
60  				"#elated",
61  				"#excited",
62  				"#happy",
63  				"#helpless",
64  				"#hopeful",
65  				"#hurt",
66  				"#jealous",
67  				"#joyful",
68  				"#lonely",
69  				"#love",
70  				"#neat",
71  				"#nervous",
72  				"#proud",
73  				"#relaxed",
74  				"#sad",
75  				"#scared",
76  				"#sexy",
77  				"#sleepy",
78  				"#sorry",
79  				"#sweet",
80  				"#thrilled",
81  				"#upset"
82  			
83  		};
84  		LoggerUtils.prepareConsoleLogger();
85  		final PrettyTagRenderer renderer = new PrettyTagRenderer(hashes);
86  		final TwitterAPIToken token = DefaultTokenFactory.get(TwitterAPIToken.class);
87  		String q = StringUtils.join(hashes, " OR ");
88  		Query query = new Query(q);
89  //		final Stream<Status> stream = new TwitterStreamDataset(token);
90  //		final Stream<Status> stream = new TwitterSearchDataset(query, token);
91  		final Stream<Status> stream = new TwitterStreamFilterDataset(hashes, token);
92  		stream
93  			.map(new HashTagMatch(hashes ))
94  			.forEach(renderer);
95  	}
96  }