]>
jfr.im git - z_archive/twitter.git/blob - twitter/cmdline.py
4 twitter [action] [options]
8 friends get latest tweets from your friends (default action)
9 public get latest public tweets
10 set set your twitter status
14 -e --email <email> your email to login to twitter
15 -p --password <password> your twitter password
19 from getopt
import getopt
20 from getpass
import getpass
22 from api
import Twitter
, TwitterError
34 def parse_args(args
, options
):
35 long_opts
= ['email', 'password', 'help', 'verbose']
36 short_opts
= "e:p:vh?"
37 opts
, extra_args
= getopt(args
, short_opts
, long_opts
)
40 if opt
in ('-e', '--email'):
41 options
['email'] = arg
42 elif opt
in ('-p', '--password'):
43 options
['password'] = arg
44 elif opt
in ('-v', '--verbose'):
45 options
['verbose'] = options
.get('verbose', 0) + 1
46 elif opt
in ('-?', '-h', '--help'):
51 options
['action'] = extra_args
[0]
52 options
['extra_args'] = extra_args
[1:]
54 class StatusFormatter(object):
55 def __call__(self
, status
):
57 status
['user']['screen_name'], status
['text'])).encode(
58 sys
.stdout
.encoding
, 'replace')
60 class VerboseStatusFormatter(object):
61 def __call__(self
, status
):
62 return (u
"-- %s (%s) on %s\n%s\n" %(
63 status
['user']['screen_name'],
64 status
['user']['location'],
66 status
['text'])).encode(
67 sys
.stdout
.encoding
, 'replace')
69 def get_status_formatter(options
):
70 if options
['verbose']:
71 return VerboseStatusFormatter()
72 return StatusFormatter()
74 def no_action(twitter
, options
):
75 print >> sys
.stderr
, "No such action: ", options
['action']
78 def action_friends(twitter
, options
):
79 statuses
= reversed(twitter
.statuses
.friends_timeline())
80 sf
= get_status_formatter(options
)
81 for status
in statuses
:
84 def action_public(twitter
, options
):
85 statuses
= reversed(twitter
.statuses
.public_timeline())
86 sf
= get_status_formatter(options
)
87 for status
in statuses
:
90 def action_set_status(twitter
, options
):
91 status
= (u
" ".join(options
['extra_args'])).encode(
93 twitter
.statuses
.update(status
=status
)
96 'friends': action_friends
,
97 'public': action_public
,
98 'set': action_set_status
,
103 return main_with_args(sys
.argv
[1:])
105 def main_with_args(args
):
106 parse_args(args
, options
)
107 if options
['email'] and not options
['password']:
108 options
['password'] = getpass("Twitter password: ")
109 twitter
= Twitter(options
['email'], options
['password'])
110 action
= actions
.get(options
['action'], no_action
)
112 action(twitter
, options
)
113 except TwitterError
, e
:
114 print >> sys
.stderr
, e
.message
115 print >> sys
.stderr
, "Use 'twitter -h' for help."