import sqlite3 import urllib import xml.etree.ElementTree as ET TWITTER_URL = 'http://api.twitter.com/l/statuses/friends/ACCT.xml' conn = sqlite3.connect('twdata.db') cur = conn.cursor() cur.execute(''' CREATE TABLE IF NOT EXISTS Twitter (name TEXT, retrieved INTEGER, friends INTEGER)''') while True: acct = raw_input('Enter a Twitter account, or quit: ') if ( acct == 'quit' ) : break if ( len(acct) < 1 ) : cur.execute('SELECT name FROM Twitter WHERE retrieved = 0 LIMIT 1') try: acct = cur.fetchone()[0] except: print 'No unretrieved Twitter accounts found' continue url = TWITTER_URL.replace('ACCT', acct) print 'Retrieving', url document = urllib.urlopen (url).read() tree = ET.fromstring(document) cur.execute('UPDATE Twitter SET retrieved=1 WHERE name = ?', (acct, ) ) countnew = 0 countold = 0 for user in tree.findall('user'): friend = user.find('screen_name').text cur.execute('SELECT friends FROM Twitter WHERE name = ? LIMIT 1', (friend, ) ) try: count = cur.fetchone()[0] cur.execute('UPDATE Twitter SET friends = ? WHERE name = ?', (count+1, friend) ) countold = countold + 1 except: cur.execute('''INSERT INTO Twitter (name, retrieved, friends) VALUES ( ?, 0, 1 )''', ( friend, ) ) countnew = countnew + 1 print 'New accounts=',countnew,' revisited=',countold conn.commit() cur.close()