]> jfr.im git - z_archive/twitter.git/commitdiff
adding list action
authorAnton P. Linevich <redacted>
Tue, 9 Nov 2010 03:09:59 +0000 (05:09 +0200)
committerAnton P. Linevich <redacted>
Tue, 9 Nov 2010 03:09:59 +0000 (05:09 +0200)
twitter/cmdline.py

index fcb58923de1af24f7c2e45d46d50a8172eb8324a..59113de35c26ae928da52803b2a2a171fb547895 100644 (file)
@@ -13,6 +13,7 @@ ACTIONS:
  help           print this help text that you are currently reading
  leave          remove the specified user from your following list
  public         get latest public tweets
  help           print this help text that you are currently reading
  leave          remove the specified user from your following list
  public         get latest public tweets
+ list           get list of user lists
  replies        get latest replies
  search         search twitter (Beware: octothorpe, escape it)
  set            set your twitter status
  replies        get latest replies
  search         search twitter (Beware: octothorpe, escape it)
  set            set your twitter status
@@ -172,6 +173,30 @@ class URLStatusFormatter(object):
         urls = self.urlmatch.findall(status['text'])
         return u'\n'.join(urls) if urls else ""
 
         urls = self.urlmatch.findall(status['text'])
         return u'\n'.join(urls) if urls else ""
 
+class ListsFormatter(object):
+    def __call__(self, list):
+        if list['description']:
+            list_str = u"%-30s (%s)" % (list['name'], list['description'])
+        else:
+            list_str = u"%-30s" % (list['name'])
+        return u"%s\n" % list_str
+
+class ListsVerboseFormatter(object):
+    def __call__(self, list):
+        list_str = u"%-30s\n description: %s\n members: %s\n mode:%s\n" % (list['name'], list['description'], list['member_count'], list['mode'])
+        return list_str
+
+class AnsiListsFormatter(object):
+    def __init__(self):
+        self._colourMap = ansi.ColourMap()
+
+    def __call__(self, list):
+        colour = self._colourMap.colourFor(list['name'])
+        return (u"%s%-15s%s %s" %(
+            ansi.cmdColour(colour), list['name'],
+            ansi.cmdReset(), list['description']))
+
+
 class AdminFormatter(object):
     def __call__(self, action, user):
         user_str = u"%s (%s)" %(user['screen_name'], user['name'])
 class AdminFormatter(object):
     def __call__(self, action, user):
         user_str = u"%s (%s)" %(user['screen_name'], user['name'])
@@ -250,6 +275,14 @@ search_formatters = {
 }
 formatters['search'] = search_formatters
 
 }
 formatters['search'] = search_formatters
 
+lists_formatters = {
+    'default': ListsFormatter,
+    'verbose': ListsVerboseFormatter,
+    'urls': None,
+    'ansi': AnsiListsFormatter
+}
+formatters['lists'] = lists_formatters
+
 def get_formatter(action_type, options):
     formatters_dict = formatters.get(action_type)
     if (not formatters_dict):
 def get_formatter(action_type, options):
     formatters_dict = formatters.get(action_type)
     if (not formatters_dict):
@@ -365,6 +398,16 @@ class AdminAction(Action):
         else:
             printNicely(af(options['action'], user))
 
         else:
             printNicely(af(options['action'], user))
 
+class ListsAction(StatusAction):
+    def getStatuses(self, twitter, options):
+        screen_name = twitter.account.verify_credentials()['screen_name']
+        if not (options['extra_args'] and options['extra_args'][0]):
+            for list in twitter.user.lists(user=screen_name)['lists']:
+                lf = get_formatter('lists', options)
+                printNicely(lf(list))
+            raise SystemExit(0)
+        return reversed(twitter.user.lists.list.statuses(user=screen_name, list=options['extra_args'][0]))
+
 class FriendsAction(StatusAction):
     def getStatuses(self, twitter, options):
         return reversed(twitter.statuses.friends_timeline(count=options["length"]))
 class FriendsAction(StatusAction):
     def getStatuses(self, twitter, options):
         return reversed(twitter.statuses.friends_timeline(count=options["length"]))
@@ -452,6 +495,7 @@ actions = {
     'authorize' : DoNothingAction,
     'follow'    : FollowAction,
     'friends'   : FriendsAction,
     'authorize' : DoNothingAction,
     'follow'    : FollowAction,
     'friends'   : FriendsAction,
+    'list'      : ListsAction,
     'help'      : HelpAction,
     'leave'     : LeaveAction,
     'public'    : PublicAction,
     'help'      : HelpAction,
     'leave'     : LeaveAction,
     'public'    : PublicAction,