W ramach treningu o zabawy, w wyniku pewnego zapytania napisałem takie coś - może się komuś przyda. Jako parametr należy podać nazwy plików html w których należy uzupełnić tagi <img /> o wymiary obrazków.
#!/usr/bin/env python
# -*- coding: iso-8859-2 -*-
import os.path
import re
import Image
import sys
if len(sys.argv) == 1:
print 'Podaj nazwy plików'
def replace(html):
rx = r'''(?im)(<\\s*img\\s*src=(["'])(?P
.*?)\\2.*?/>)'''
imgs = re.findall(rx, html) #, re.I|re.M)
if imgs:
for imgtag, tmp, fname in imgs:
if imgtag.find('width=') == -1 and\\
imgtag.find('height=') == -1 and\\
os.path.isfile(fname):
intag = 'width="%dpx" height="%dpx"' % Image.open(fname).size
ntag = imgtag[:-2] + intag + ' />'
html = html.replace(imgtag, ntag)
return html
files = sys.argv[1:]
for f in files:
if not os.path.isfile(f):
print 'Nie znaleziono:', f
continue
html = replace(open(f).read())
open(f, 'w').write(html)
Wymagany jest moduł PIL.
Oczywiście jest to mocno niedopracowane, ale napisanie tego to było dosłownie kilka minut, dla zabawy, a jako że to jest python, to łatwo samemu to dopracować i poprawić :) Ważne, że działa jak powinno…
A Ty? Co o tym myślisz?