1 2 #!/usr/bin/env python 3 4 __author__="Andrew Pennebaker (andrew.pennebaker@gmail.com)" 5 __date__="9 Dec 2006 - 10 Dec 2006" 6 __copyright__="Copyright 2006 Andrew Pennebaker" 7 __license__="GPL" 8 __version__="0.0.1" 9 __credits__="Based on Yubnub for Windows (http://www.opbarnes.com/blog/Programming/OPB/Utilities/yubnub.html)" 10 __URL__="http://snippets.dzone.com/posts/show/3120" 11 12 from html2txt import html2txt 13 14 import webbrowser 15 from urllib import urlopen 16 import re 17 18 import sys 19 from getopt import getopt 20 21 PARSER="http://yubnub.org/parser/parse?command=" 22 23 BROWSER_MODE="BROWSER" 24 PLAIN_MODE="PLAIN" 25 26 def space2plus(s): 27 return "+".join(s.split()) 28 29 def yubnub(command=""): 30 global PARSER 31 32 return PARSER+space2plus(command) 33 34 def yubnubBrowser(command): 35 return webbrowser.open(yubnub(command)) 36 37 def cleanHTML(html): 38 h=html2txt() 39 h.feed(html) 40 h.close() 41 42 return h.output() 43 44 def yubnubPlain(command, clean=True): 45 command=yubnub(command) 46 47 try: 48 url=urlopen(command) 49 lines=url.readlines() 50 url.close() 51 52 lines="".join(lines) 53 54 if clean: 55 return cleanHTML(lines) 56 57 return lines 58 59 except IOError, e: 60 return "Error connecting to "+command 61 62 def usage(): 63 print "Usage: "+sys.argv[0]+" [options] <command>" 64 print "-b --browser" 65 print "\n--plain (default)" 66 print "\t-c --clean (default)" 67 print "\t-d --dirty" 68 print "\n--parser <parser> (experimental)" 69 print "\n-h --help" 70 71 sys.exit() 72 73 def main(): 74 global PARSER 75 76 global BROWSER_MODE 77 global PLAIN_MODE 78 79 mode=PLAIN_MODE 80 parser=PARSER 81 clean=True 82 83 systemArgs=sys.argv[1:] 84 optlist, args=[], [] 85 try: 86 optlist, args=getopt(systemArgs, "bhcd", ["browser", "plain", "clean", "dirty", "parser=", "help"]) 87 except: 88 usage() 89 90 for option, value in optlist: 91 if option=="-h" or option=="--help": 92 usage() 93 94 elif option=="-b" or option=="--browser": 95 mode=BROWSER_MODE 96 elif option=="--plain": 97 mode=PLAIN_MODE 98 elif option=="-c" or option=="--clean": 99 clean=True 100 elif option=="-d" or option=="--dirty": 101 clean=False 102 elif option=="--parser": 103 parser=value 104 105 command=" ".join(args) 106 107 if mode==BROWSER_MODE: 108 yubnubBrowser(command) 109 elif mode==PLAIN_MODE: 110 for line in yubnubPlain(command, clean): 111 sys.stdout.write(line) 112 print "" 113 114 if __name__=="__main__": 115 main()
You need to create an account or log in to post comments to this site.