OSDN Git Service

add IMG tag swapper, and tiny fix.
[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>\r
8 result is written to stdout.\r
9 """\r
10 import sys\r
11 import codecs\r
12 import re\r
13 import os.path\r
14 import hashlib\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 rex_imgtag = re.compile(r"""<img\s+src=["'](.*?)["'].*?>""")\r
25 rex_atag = re.compile(r"""<a\s+href=["'](.*?)["'].*?>""")\r
26 rex_alt = re.compile(r"""alt=["'](.*?)["']""")\r
27 try:\r
28     in_f = codecs.open(sys.argv[1], "r", "utf_8" )\r
29 except IndexError:\r
30     sys.exit(usage)\r
31 \r
32 for line in in_f:\r
33 \r
34     # proc for IMG tag\r
35     match = rex_imgtag.search(line)\r
36     if match:\r
37         tagstr = match.group(0)\r
38         path = match.group(1)\r
39         if os.path.isfile(path):\r
40             md5 = get_md5(path)\r
41             # tag has alt ?\r
42             if rex_alt.search(tagstr):\r
43                 alt = rex_alt.search(tagstr).group(1)\r
44                 slashtag = """<SLASH-IMAGE ID="%s" TITLE="%s">""" % (md5,alt)\r
45             else:\r
46                 slashtag = """<SLASH-IMAGE ID="%s">""" % (md5,)\r
47             line = line.replace(tagstr, slashtag)\r
48 \r
49     #proc for A tag\r
50     match = rex_atag.search(line)\r
51     if match:\r
52         tagstr = match.group(0)\r
53         path = match.group(1)\r
54         if os.path.isfile(path):\r
55             md5 = get_md5(path)\r
56             # tag has alt ?\r
57             slashtag = """<A HREF="/blob.pl?id=%s">""" % (md5,)\r
58             line = line.replace(tagstr, slashtag)\r
59     \r
60     print line,\r