Twitter Development – Friends und Followers II

twitter-tDer vergangene Blogpost verdeutlichte die Beziehung von Benutzer untereinander und die Möglickeit entsprechende Follower via API zu ermitteln. Zur Vervollständigung des Serienteils fehlt noch die Ermittlung der Benutzer, denen man selber folgt. Besonders wichtig ist hierbei das Verständnis für den Aufbau der API. Alle Objekte innerhalb des Twitter-Universums haben eindeutige IDs. Benutzer und Tweets können somit logisch verknüpft werden.
Ein Beispiel:
Benutzer A (ID 342354) antwortet Benutzer B (ID 434545) mit dem Tweet “Ich bin der selben Meinung” (ID 16676) auf den Tweet “Sehr ihr das auch so” (ID 45463). Mit diesen vier künstlichen Schlüsselelementen lässt sich jegliche Beziehung zwischen den Benutzer und deren Nachrichten erstellen. Dies ermöglicht verschiedenen Clients wie z. B. Nambu Replies einem ursprünglichen Tweets zuzuordnen. Twitter ist also weit mehr als eine ordnungslose Abfolge von Nachrichten. Mit Hilfe dieser IDs lassen sich auch komplexe Kommunikationsszenarien nachstellen.
Aber zurück zu den Friends bzw. Following. Die Methodensignatur ist identisch zur Ermittlung der Follower:

package org.netways.api.twitter;
import java.util.List;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;
public class TwitterFunctions {
Twitter twitter;
public TwitterFunctions(String user, String password) {
twitter = new Twitter(user, password);
}
public List getFollowing() throws TwitterException {
List following = twitter.getFriends();
return following;
}
}

Hier der Aufruf:

package org.netways.api.twitter;
import java.util.Iterator;
import java.util.List;
import twitter4j.User;
public class TwitterApi {
/**
* @param args
*/
public static void main(String[] args) {
try {
TwitterFunctions tf = new TwitterFunctions("netways", "password");
List users = tf.getFollowing();
Iterator it = users.iterator();
while(it.hasNext()) {
System.out.println(it.next().getScreenName());
}
} catch (Exception e) {
System.err.println(e.toString());
}
}
}

Output der Konsole:

goern
ratgeber24
stayfriendsde
derjoern
ffiene
RicRaftis
sherz
mfekry
stereofix
beginlinux
AdventureHarry
Ubuntuu
........

Der nächste Blogpost widmet sich dem Thema Twitter Timelines.

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.

Twitter Development – Friends und Followers I

twitter-tFreunde und Verfolger, wobei zweites hier nicht negativ gemeint sind, sind (waren) das entsprechende Wording für die Beziehungsbeschreibung zwischen unterschiedlichen Benutzern bei Twitter.
Ein Beispiel:
Benutzer A bekommt über alle Statusänderungen von Benutzer B ein Update seiner Timeline (dazu in einem späteren Post mehr). Er ist also ein Follower von Benutzer B. Aus Sicht von Benutzer B folgt ihm Benutzer A und ist somit Following. Früher gab es bei Twitter noch die Terminology des Freundes, welche jedoch vor einiger Zeit verändert wurde. Grund hierfür ist, dass nicht jeder dem Benutzer A folgt auch ihm folgen muss. Da es somit meist zu asymetrischen Beziehungen gekommen ist, war das Modell eher verwirrend.
Näheres zur Anpassung dieser Beschreibung sind im APIWiki von Twitter zu finden.
Die Beziehungen zwischen verschiedenen Benutzern lassen sich mit Hilfe der API sehr einfach ermitteln und ggf. auch weiterverarbeiten. Nachfolgendes Beispiel zeigt ein paar Möglichkeiten auf:

package org.netways.api.twitter;
import java.util.List;
import twitter4j.Paging;
import twitter4j.Twitter;
import twitter4j.TwitterException;
import twitter4j.User;
public class TwitterFunctions {
	Twitter twitter;
	public TwitterFunctions(String user, String password) {
		twitter = new Twitter(user, password);
	}
	public List getMyFollowers() throws TwitterException {
		List followers = twitter.getFollowers();
		return followers;
	}
	public List getFollowers(String username) throws TwitterException {
		List followers = twitter.getFollowers(username);
		return followers;
	}
	public List getFollowerPage(int side) throws TwitterException {
		Paging paging = new Paging(side);
		List followers = twitter.getFollowers(paging);
		return followers;
	}
}

Zur Ermittlung von Followers und Following gibt es verschiedene Methoden Signaturen, welche auch die seitenweise Ermittlung der Daten und deren Rückgabe ermöglichen. Erstes Beispiel ermittelt alle Follower des angemeldeten Accounts:

package org.netways.api.twitter;
import java.util.Iterator;
import java.util.List;
import twitter4j.User;
public class TwitterApi {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			TwitterFunctions tf = new TwitterFunctions("netways", "password");
			List users = tf.getMyFollowers();
			Iterator it = users.iterator();
                        while(it.hasNext()) {
                               System.out.println(it.next().getScreenName());
                        }
                      } catch (Exception e) {
                        System.err.println(e.toString());
                      }
          }
}

Output der Konsole:

ferrari9135
mariana4724
infinity1817
Seminaraccount
stephaniemuths
andel7
jrgptr
AddisonWesley
pugnacity
ratgeber24
goern
derjoern
ffiene
stayfriendsde
........

Unter Verwendung der Paging Funktion können auch nur bestimmte Ausschnitte der Ergebnisliste verarbeitet werden. Dies ist z. B. bei der Wiederverwendung von eigenen Applikation und seitenweise Ermittlung der Ergebnisse sinnvoll.

package org.netways.api.twitter;
import java.util.Iterator;
import java.util.List;
import twitter4j.User;
public class TwitterApi {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			TwitterFunctions tf = new TwitterFunctions("netways", "password");
			List users = tf.getFollowerPage(2);
			Iterator it = users.iterator();
			while(it.hasNext()) {
				System.out.println(it.next().getScreenName());
			}
		} catch (Exception e) {
			System.err.println(e.toString());
		}
	}
}

Der nächste Teil dieses Posts verdeutlicht die Ermittlung der Following Benutzer (früher Friends genannt).

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.