]> jfr.im git - z_archive/twitter.git/blobdiff - twitter/cmdline.py
Transition from httplib to urllib2.
[z_archive/twitter.git] / twitter / cmdline.py
index f57dbf93b0e45d97213ef781f4270ee62358c9cf..061c0f2d04d1c1189367e95ff575b23c0bc1aa3e 100644 (file)
@@ -6,6 +6,7 @@ USAGE:
 ACTIONS:
  follow         add the specified user to your follow list
  friends        get latest tweets from your friends (default action)
+ help           print this help text that you are currently reading
  leave          remove the specified user from your following list
  public         get latest public tweets
  replies        get latest replies
@@ -40,7 +41,7 @@ password: <password>
 
 import sys
 import time
-from getopt import getopt
+from getopt import getopt, GetoptError
 from getpass import getpass
 import re
 import os.path
@@ -48,6 +49,10 @@ from ConfigParser import SafeConfigParser
 
 from api import Twitter, TwitterError
 
+# Please don't change this, it was provided by the fine folks at Twitter.
+# If you change it, it will not work.
+AGENT_STR = "twittercommandlinetoolpy"
+
 options = {
     'email': None,
     'password': None,
@@ -63,7 +68,7 @@ def parse_args(args, options):
     long_opts = ['email', 'password', 'help', 'format', 'refresh',
                  'refresh-rate', 'config']
     short_opts = "e:p:f:h?rR:c:"
-    opts, extra_args = getopt(args, short_opts, long_opts)
+    opts, extra_args = getopt(args, short_opts, long_opts)        
 
     for opt, arg in opts:
         if opt in ('-e', '--email'):
@@ -182,6 +187,7 @@ class AdminAction(Action):
             print "  Or the user may not exist."
             print "  Sorry."
             print
+            print e
         else:
             print af(options['action'], user).encode(sys.stdout.encoding, 'replace')
 
@@ -213,9 +219,14 @@ class SetStatusAction(Action):
         status = (statusTxt.encode('utf8', 'replace'))
         twitter.statuses.update(status=status)
 
+class HelpAction(Action):
+    def __call__(self, twitter, options):
+        print __doc__
+
 actions = {
     'follow': FollowAction,
     'friends': FriendsAction,
+    'help': HelpAction,
     'leave': LeaveAction,
     'public': PublicAction,
     'replies': RepliesAction,
@@ -236,7 +247,12 @@ def main():
     return main_with_args(sys.argv[1:])
 
 def main_with_args(args):
-    parse_args(args, options)
+    try:
+        parse_args(args, options)
+    except GetoptError, e:
+        print >> sys.stderr, "I can't do that, %s." %(e)
+        print >> sys.stderr
+        sys.exit(1)
 
     email, password = loadConfig(options['config_filename'])
     if not options['email']: options['email'] = email
@@ -250,8 +266,10 @@ def main_with_args(args):
         
     if options['email'] and not options['password']:
         options['password'] = getpass("Twitter password: ")
-    twitter = Twitter(options['email'], options['password'])
+        
+    twitter = Twitter(options['email'], options['password'], agent=AGENT_STR)
     action = actions.get(options['action'], NoSuchAction)()
+    
     try:
         doAction = lambda : action(twitter, options)