X-Git-Url: https://jfr.im/git/z_archive/twitter.git/blobdiff_plain/1fc85ab1aed3e44b834dc2bb6c28b3b74233d372..de072195b64f3535375f1a20b25f457586a29125:/twitter/cmdline.py diff --git a/twitter/cmdline.py b/twitter/cmdline.py index f57dbf9..061c0f2 100644 --- a/twitter/cmdline.py +++ b/twitter/cmdline.py @@ -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: 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)