549
|
1 #!/usr/bin/env python
|
|
2
|
|
3 """
|
|
4 compare differences of url contents
|
|
5 """
|
|
6
|
|
7 import difflib
|
|
8 import optparse
|
|
9 import os
|
|
10 import sys
|
|
11 import urllib2
|
|
12
|
|
13 here = os.path.dirname(os.path.realpath(__file__))
|
|
14
|
|
15 def main(args=sys.argv[1:]):
|
|
16
|
|
17 usage = '%prog [options] from-url to-url'
|
|
18 parser = optparse.OptionParser(usage=usage, description=__doc__)
|
|
19 parser.add_option('--bash', '--command', dest='command',
|
|
20 action='store_true', default=False,
|
|
21 help="prepend output with bash command")
|
|
22 options, args = parser.parse_args(args)
|
|
23 if len(args) != 2:
|
|
24 parser.print_usage()
|
|
25 parser.exit(1)
|
|
26
|
|
27 contents = {}
|
|
28 for url in args:
|
|
29 contents[url] = urllib2.urlopen(url).read()
|
|
30
|
|
31 diff = difflib.unified_diff(contents[args[0]],
|
|
32 contents[args[1]],
|
|
33 fromfile=args[0],
|
|
34 tofile=args[1],
|
|
35 lineterm='')
|
|
36
|
|
37 # output
|
|
38 if options.command:
|
|
39
|
|
40 template = """%(PS1)s diff <(curl --location %(fromfile)s 2> /dev/null) <(curl --location %(tofile)s 2> /dev/null)"""
|
|
41 print template % dict(PS1='#',
|
|
42 fromfile=args[0],
|
|
43 tofile=args[1])
|
|
44
|
|
45 print '\n'.join(list(diff))
|
|
46
|
|
47 if __name__ == '__main__':
|
|
48 main()
|