""" USAGE: python twitterhood.py username password REQUIRES: http://code.google.com/p/python-twitter/ http://www.undefined.org/python/ <--- simplejson """ import time, sys, urllib2 import twitter GO_SLOW = 0 def get_friends(u): while 1: if GO_SLOW: time.sleep(3 * 60) # avoid exceeding Twitter request limit try: return api.GetFriends(u) # fails with 50x errors sometimes except urllib2.HTTPError, e: print e # wait three minutes, then try again (username, password) = sys.argv[1 : ] outf = open("twitter.ctm", "w") outf.write("%prefix tweep http://twitter.com/\n") outf.write("%prefix t http://psi.garshol.priv.no/experimental/twitter/\n") outf.write('tweep:%s isa t:twitterer;\n - "%s".\n' % (username, username)) api = twitter.Api() api.SetCredentials(username, password) ix = 0 friends = api.GetFriends() # gets the 100 latest people followed, which sucks for friend in friends: s = friend.GetScreenName() outf.write('tweep:%s isa t:twitterer;\n - "%s".\n' % (s, s)) outf.write("t:is-following(t:follower: tweep:%s, t:following: tweep:%s)\n" % \ (username, s)) # COMMENT OUT THIS BIT TO RUN QUICKLY ix += 1 print ix, friend.GetScreenName() for friend2 in get_friends(s): outf.write("t:is-following(t:follower: tweep:%s, t:following: tweep:%s)\n" % (friend.GetScreenName(), friend2.GetScreenName())) outf.flush() # END COMMENT OUT outf.close()