tw.conf
1 2 config = "tw.conf" 3 username = "mcandre" 4 rootauthurl = "http://twitter.com/statuses/" 5 useragent = "tw.py 0.0.1" 6 statusdelimeter1 = "<p class=\"entry-title entry-content\">" 7 statusdelimeter2 = "</p>"
DZone Snippets > mcandre > twitter
13525 users tagging and storing useful source code snippets
Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world
Andrew Pennebaker http://mcandre.devjavu.com/wiki
1 2 config = "tw.conf" 3 username = "mcandre" 4 rootauthurl = "http://twitter.com/statuses/" 5 useragent = "tw.py 0.0.1" 6 statusdelimeter1 = "<p class=\"entry-title entry-content\">" 7 statusdelimeter2 = "</p>"
1 2 #!/usr/bin/env python 3 4 __author__="Andrew Pennebaker (andrew.pennebaker@gmail.com)" 5 __date__="17 Jun 2007 - 28 Jun 2007" 6 __copyright__="Copyright 2007 Andrew Pennebaker" 7 __license__="GPL" 8 __version__="0.0.1" 9 __credits__="Based on tweetyPy (http://muffinresearch.co.uk/archives/2007/03/24/tweetypy-python-based-cli-client-for-twitter/)" 10 __URL__="http://snippets.dzone.com/posts/show/4150" 11 12 import sys, getopt, getpass, urllib, urllib2 13 14 import configreader 15 16 STATUS_MODE="STATUS" 17 VIEW_MODE="VIEW" 18 COMMAND_MODE="COMMAND" 19 20 COMMANDS="""Command\t\tMeaning 21 22 d username\tDirect Text 23 @username\tReply 24 follow username\tReceive updates via phone or IM 25 leave username\tStop following username 26 leave all\tStop following all friends 27 remove username\tRemove username from friends list 28 delete username\tDelete username from friends list 29 get username\tGet the last update from username 30 get\tGet the most recent updates from all friends 31 nudge username\tTwitter aks what the person is currently up to 32 whois username\tGet username's bio 33 add phonenumber\tSend text invite. If already a member, invite will turn into a friend request. 34 accept username\tAccept username as a friend 35 deny username\tDeny username as friend""" 36 37 def usage(): 38 print "Usage: %s [options]" % (sys.argv[0]) 39 print "\nWithout any options, uses status mode. Leftover args are concatenated to form message." 40 print "\n-u|--username <username> specified in tw.conf" 41 print "-s|--status mode" 42 print "-v|--view status" 43 print "-l|--list-commands List Twitter commands" 44 print "-c|--config <configfile>" 45 print "-h|--help" 46 47 sys.exit() 48 49 def set_status(settings, status): 50 auth=urllib2.HTTPPasswordMgrWithDefaultRealm() 51 auth.add_password(None, settings["rootauthurl"], settings["username"], settings["password"]) 52 authHandler=urllib2.HTTPBasicAuthHandler(auth) 53 opener=urllib2.build_opener(authHandler) 54 55 url="http://twitter.com/statuses/update.xml" 56 post=urllib.urlencode({"status":status}) 57 58 request=urllib2.Request(url, post) 59 request.add_header("User-Agent", settings["useragent"]) 60 61 try: 62 response=opener.open(request) 63 except IOError, e: 64 raise "Could not connect." 65 66 def view_status(settings): 67 url="http://twitter.com/"+settings["username"] 68 message="" 69 70 statusdelimeter1=settings["statusdelimeter1"] 71 statusdelimeter2=settings["statusdelimeter2"] 72 73 try: 74 instream=urllib.urlopen(url) 75 for line in instream: 76 if statusdelimeter1 in line: 77 message=line[ 78 line.index(statusdelimeter1)+len(statusdelimeter1):line.index(statusdelimeter2) 79 ] 80 break 81 instream.close() 82 83 return message 84 85 except IOError, e: 86 raise "Could not connect." 87 88 def main(): 89 global STATUS_MODE 90 global VIEW_MODE 91 global COMMAND_MODE 92 global COMMANDS 93 94 sysArgs=sys.argv[1:] 95 96 mode=STATUS_MODE 97 98 settings={ 99 "config":"tw.conf", 100 "username":"mcandre", 101 "rootauthurl":"http://twitter.com/statuses/", 102 "useragent":sys.argv[0]+" "+__version__, 103 "statusdelimeter1":"<p class=\"entry-title entry-content\">", 104 "statusdelimeter2":"</p>" 105 } 106 107 optlist, args=[], [] 108 try: 109 optlist, args=getopt.getopt(sysArgs, "u:svlc:h", ["username=", "status", "view", "list-commands", "config=", "help"]) 110 except: 111 usage() 112 113 for option, value in optlist: 114 if option=="-c" or option=="--config": 115 settings["config"]=value 116 117 try: 118 configreader.load(open(settings["config"], "r"), settings) 119 except IOError, e: 120 pass 121 122 for option, value in optlist: 123 if option=="-h" or option=="--help": 124 usage() 125 126 elif option=="-u" or option=="--username": 127 settings["username"]=value 128 elif option=="-s" or option=="--status": 129 mode=STATUS_MODE 130 elif option=="-v" or option=="--view": 131 mode=VIEW_MODE 132 elif option=="-l" or option=="--list=commands": 133 mode=COMMAND_MODE 134 135 if mode==STATUS_MODE: 136 if len(args)<1: 137 usage() 138 139 message=" ".join(args) 140 141 settings["password"]=getpass.getpass() 142 143 set_status(settings, message) 144 elif mode==VIEW_MODE: 145 print view_status(settings) 146 elif mode==COMMAND_MODE: 147 print COMMANDS 148 149 if __name__=="__main__": 150 try: 151 main() 152 except KeyboardInterrupt, e: 153 pass