OSDN Git Service

add *b{} style
[otptools/otptools.git] / otp_imgswap.py
1 #!/bin/env python\r
2 # -*- encoding: utf-8 -*-\r
3 #\r
4 # otp_imgswap.py : otp image tag swapper\r
5 #\r
6 \r
7 usage = """usage: %s <target file> <output_file>"""\r
8 import sys\r
9 import codecs\r
10 import re\r
11 import os.path\r
12 import hashlib\r
13 \r
14 \r
15 \r
16 def get_md5(fpath):\r
17     f = open( fpath, "rb")\r
18     buf = f.read()\r
19     f.close()\r
20     m = hashlib.md5()\r
21     m.update(buf)\r
22     return m.hexdigest()\r
23 \r
24 \r
25 rex_imgtag = re.compile(r"""<img\s+src=["'](.*?)["'].*?>""")\r
26 rex_atag = re.compile(r"""<a\s+href=["'](.*?)["'].*?>""")\r
27 rex_alt = re.compile(r"""alt=["'](.*?)["']""")\r
28 try:\r
29     in_f = codecs.open(sys.argv[1], "r", "utf_8" )\r
30     out_f = codecs.open(sys.argv[2], "w", "utf_8" )\r
31 except IndexError:\r
32     sys.exit(usage)\r
33 \r
34 for line in in_f:\r
35 \r
36     # proc for IMG tag\r
37     match = rex_imgtag.search(line)\r
38     if match:\r
39         tagstr = match.group(0)\r
40         path = match.group(1)\r
41         if os.path.isfile(path):\r
42             md5 = get_md5(path)\r
43             # tag has alt ?\r
44             if rex_alt.search(tagstr):\r
45                 alt = rex_alt.search(tagstr).group(1)\r
46                 slashtag = """<SLASH-IMAGE ID="%s" TITLE="%s">""" % (md5,alt)\r
47             else:\r
48                 slashtag = """<SLASH-IMAGE ID="%s">""" % (md5,)\r
49             line = line.replace(tagstr, slashtag)\r
50 \r
51     #proc for A tag\r
52     match = rex_atag.search(line)\r
53     if match:\r
54         tagstr = match.group(0)\r
55         path = match.group(1)\r
56         if os.path.isfile(path):\r
57             md5 = get_md5(path)\r
58             # tag has alt ?\r
59             slashtag = """<A HREF="/blob.pl?id=%s">""" % (md5,)\r
60             line = line.replace(tagstr, slashtag)\r
61     \r
62     print >> out_f, line,\r