Twitter Development – Suche von Tweets

twitter-tZwar hat Twitter die Suchfunktion inzwischen stark ausgebaut, das Webinterface bietet aber immer noch recht wenig Komfort. Dieses Feld wurde jedoch in der Zwischenzeit von vielen Drittanbietern wie z.B. AskTwitr oder Monitter bestellt und ist mit Realtimesuchen, Suchen in der Region und verschiedenen Mitteilungsdiensten vollends versorgt. Ein ziemlich vollständige Liste der vorhandenen Suchanbieter ist hier zu finden. Selbst Google und Bing sind hier ebenfalls gut unterwegs und die entsprechenden Bots führen häufige Aktualisierungen der zentralen Indizes durch.
Selbstverständlich gilt dies auch für die API, welche diverse Methoden zur Suche und Speicherung von Suchaufträgen bietet. Nachfolgendes Beispiel listet diverse Möglichkeiten zur individuellen Suche und Weiterverarbeitung.
Let’s go:

package org.netways.api.twitter;
import java.util.List;
import twitter4j.Query;
import twitter4j.QueryResult;
import twitter4j.SavedSearch;
import twitter4j.Twitter;
import twitter4j.TwitterException;
public class TwitterFunctions {
Twitter twitter;
public TwitterFunctions(String user, String password) {
twitter = new Twitter(user, password);
}
public SavedSearch saveSearch(String query) throws TwitterException {
SavedSearch search = twitter.createSavedSearch(query);
return search;
}
public List getSavedSearches() throws TwitterException {
List searches = twitter.getSavedSearches();
return searches;
}
public SavedSearch getSavedSearch(int id) throws TwitterException {
SavedSearch search = twitter.showSavedSearch(id);
return search;
}
public QueryResult getTweets(String searchString) throws TwitterException {
Query query = new Query(searchString);
QueryResult qs = twitter.search(query);
return qs;
}
public QueryResult getLocalTweets(String searchString,
double latitude,
double longtitude,
double radius) throws TwitterException {
Query query = new Query(searchString);
query.setGeoCode(latitude, longtitude, radius, Query.KILOMETERS);
QueryResult qs = twitter.search(query);
return qs;
}
}

Der Aufruf wird nun schon ein bisschen komplexer, da wir die diversen Ergebnisse kombinieren. Natürlich kein Hexenwerk.

package org.netways.api.twitter;
import java.util.Iterator;
import java.util.List;
import twitter4j.QueryResult;
import twitter4j.SavedSearch;
import twitter4j.Tweet;
public class TwitterApi {
/**
* @param args
*/
public static void main(String[] args) {
try {
TwitterFunctions tf = new TwitterFunctions("netways", "password");
List tweets;
Tweet tweet;
QueryResult qs;
Iterator it;
//create search
SavedSearch search = tf.saveSearch("nagios");
int searchId = search.getId();
//load search through api
search = null;
search = tf.getSavedSearch(searchId);
System.out.println("Saved Search: " + search.getId()
+ " with query " +  search.getQuery());
//search for netways
qs = tf.getTweets(search.getQuery());
tweets = qs.getTweets();
it = tweets.iterator();
while(it.hasNext()) {
tweet = it.next();
System.out.println("User " + tweet.getFromUser());
System.out.println("Text " + tweet.getText() + "\n");
}
//search for local netways tweets in nuremberg
qs = tf.getLocalTweets(search.getQuery(), 49.4477778, 11.0683333, 50);
tweets = qs.getTweets();
it = tweets.iterator();
while(it.hasNext()) {
tweet = it.next();
System.out.println("Tweets near Nurmberg");
System.out.println("User " + tweet.getFromUser());
System.out.println("Text " + tweet.getText() + "\n");
}
} catch (Exception e) {
System.err.println(e.toString());
}
}
}

Und hier der Output:

Saved Search: 931824 with query nagios
User freddrake
Text @vinodkk I don't know of any Nagios plugin libraries for Python.
Nagios plugins are simple enough not to need much.
User zhodd
Text Playing with the Netapp checks in Nagios
User darowh
Text Just installed Nagios, that was pretty easy - http://bit.ly/1VSy5v
....
Tweets near Nurmberg
User kandaras
Text Ich spiel hier grade mit nagios rum und das ist ja ein niedliches tool, hübsch.
Tweets near Nurmberg
User netways
Text New blog post: Nagios Benachrichtigungen per iPhone Push http://bit.ly/CJ2J9
....

Wer noch mehr Tweets aus Nürnberg rund um das Thema Nagios sucht, sollte vor allem auch unserem NETWAYS Twitter Account folgen.

Bernd Erk
Bernd Erk
CEO

Bernd ist Geschäftsführer der NETWAYS Gruppe und verantwortet die Strategie und das Tagesgeschäft. Bei NETWAYS kümmert er sich eigentlich um alles, was andere nicht machen wollen oder können (meistens eher wollen). Darüber hinaus startet er das wöchentliche Lexware-Backup und investiert seine ganze Energie in den Rest der Truppe und versucht für kollektives Glück zu sorgen. In seiner Freizeit macht er mit sinnlosen Ideen seine Frau verrückt und verbündet sich dafür mit seinem Sohn.