#! /usr/bin/env python2.5 import twitter import sys import getpass def print_menu(): valid = ('get', 'answer', 'post', 'private', 'friends', 'follow', 'inbox', 'user', 'luser', 'exit') print '\nChoose an option:' print '\t (get) See last updates of friends' print '\t (answer) Answer one twit' print '\t (post) What are you doing?' print '\t (private) Send private messages' print '\t (inbox) Check your private messages' print '\t (friends) List someone\'s friends' print '\t (follow) Start following someone' print '\t (user) User information' print '\t (luser) List last 20 twits of an user\n' print '\t (exit) Quit the Twittero' option = raw_input('Option: ') if not option in valid: print 'Not a valid option.' return print_menu() else: return option if __name__ == '__main__': user = raw_input("Username: ") password = getpass.getpass("Password: ") print 'Connecting to twitter' try: api = twitter.Api(user,password) except: print 'Error connecting to twitter api.' sys.exit(1) lista = [] while True: action = print_menu() if action == 'get': lista = api.GetFriendsTimeline() lista.reverse() for a in range(len(lista)): print '(%d) %s said (on %s): \n\t %s\n'%(a, lista[a].GetUser().GetScreenName(), lista[a].GetCreatedAt(), lista[a].GetText()) if action == 'answer': number, answer = raw_input('Syntax: (number in list to answer) (text)').split() number = int(number) if number < 20: if len(answer) <= 140: try: answer = unicode(answer.decode('utf-8')) api.PostUpdate(answer, lista[number].GetId()) print 'Success!' except: print 'Error updating state' else: print 'Error: more than 140 characters' if action == 'post': text = raw_input('Insert text:\n') if len(text) <= 140: try: text = unicode(text.decode('utf-8')) api.PostUpdate(text) print 'Success!' except: print 'Error Twitting' if action == 'user': name_user = raw_input('Insert username:\n') usuario = api.GetUser(name_user) print '======================' print 'Real name: '+usuario.GetName() print 'From: '+usuario.GetLocation() print 'Description: \n\t'+usuario.GetDescription() print 'Website: %s\n'%usuario.GetUrl() print '%d followers, %d following, %d twits\n'%(usuario.GetFollowersCount(), usuario.GetFriendsCount(), usuario.GetStatusesCount()) print 'Last twit (on %s): \n\t%s'%(usuario.GetStatus().GetCreatedAt(),usuario.GetStatus().GetText()) if action == 'luser': name_user = raw_input('Insert username:\n') lista = api.GetPublicTimeline(name_user) lista.reverse() for i in range(len(lista)): print '(%d) twit on %s:\n\t %s'%(i, lista[i].GetCreatedAt(), lista[i].GetText()) if action == 'private': name_user = raw_input('Insert username:\n') text = raw_input('Insert text:\n') api.PostDirectMessage(name_user, unicode(text.decode('utf-8'))) if action == 'inbox': listita = api.GetDirectMessages() for i in listita: print '%s said to you (on %s): \n\t %s\n'%(i.GetSenderScreenName(), i.GetCreatedAt(), i.GetText()) if action == 'friends': name_user = raw_input('Insert username:\n') listita = api.GetFriends(name_user) print [i.GetScreenName() for i in listita] if action == 'follow': name_user = raw_input('Insert username:\n') try: api.GetFriends(name_user) print 'Success!' except: print 'Error trying to follow %s!'%name_user if action == 'exit': sys.exit(0)