annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
1 #!/usr/bin/python
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
2
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
3 """ smart open the data passed in """
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
4
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
5 import os
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
6 import sys
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
7 import urllib
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
8 import urllib2
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
9
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
10 from optparse import OptionParser
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
11
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
12 from handlers import *
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
13
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
14 def main(args=sys.argv[1:]):
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
15
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
16 # parse command line optioins
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
17 parser = OptionParser()
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
18 parser.add_option('-u', '--url', dest="url",
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
19 action='store_true', default=False,
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
20 help="print the first url handled")
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
21 parser.add_option('-a', '--all', dest="all",
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
22 action='store_true', default=False,
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
23 help="print all handlers that match the query")
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
24 options, args = parser.parse_args(args)
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
25
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
26 # sanity check
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
27 assert not (options.url and options.all)
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
28
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
29 # get data to be operated on
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
30 if args:
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
31 data = ' '.join(args)
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
32 else:
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
33 data = sys.stdin.read()
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
34
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
35 locations = [ URL,
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
36 GoogleMap,
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
37 Revision,
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
38 TracTicket,
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
39 Wikipedia,
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
40 Google
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
41 ]
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
42
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
43 for loc in locations:
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
44 loc = loc()
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
45 if options.url: # print url
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
46 if loc.test(data):
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
47 print loc.url(data)
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
48 sys.exit(0)
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
49 elif options.all:
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
50 if loc.test(data):
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
51 print '%s: %s' % (loc.__class__.__name__, loc.url(data))
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
52 else:
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
53 if loc.open(data):
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
54 sys.exit(0)
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
55
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
56 if __name__ == '__main__':
d6fa501af82f initial commit of smartopen
k0s <k0scist@gmail.com>
parents:
diff changeset
57 main()