view smartopen/smartopen.py @ 0:d6fa501af82f

initial commit of smartopen
author k0s <k0scist@gmail.com>
date Sat, 21 Nov 2009 15:46:01 -0500
parents
children 10fc4904c10f
line wrap: on
line source

#!/usr/bin/python

""" smart open the data passed in """

import os
import sys
import urllib
import urllib2

from optparse import OptionParser

from handlers import *

def main(args=sys.argv[1:]):

    # parse command line optioins
    parser = OptionParser()
    parser.add_option('-u', '--url', dest="url", 
                      action='store_true', default=False,
                      help="print the first url handled")
    parser.add_option('-a', '--all', dest="all", 
                      action='store_true', default=False,
                      help="print all handlers that match the query")
    options, args = parser.parse_args(args)

    # sanity check
    assert not (options.url and options.all)

    # get data to be operated on
    if args:
        data = ' '.join(args)
    else:
        data = sys.stdin.read()

    locations = [ URL, 
                  GoogleMap,
                  Revision,
                  TracTicket,
                  Wikipedia,
                  Google
                  ]

    for loc in locations:
        loc = loc()
        if options.url: # print url
            if loc.test(data):
                print loc.url(data)
                sys.exit(0)
        elif options.all: 
            if loc.test(data):
                print '%s: %s' % (loc.__class__.__name__, loc.url(data))
        else:
            if loc.open(data):
                sys.exit(0)

if __name__ == '__main__':
    main()