python script converter to html
1. Title and download link are given at top
2. Comments are shown in red
3. Image files (jpg, jpeg, png) are shown at last

Download script from py2html.py


import sys
import re
import os
import glob


"""
python script converter to html
1. Title and download link are given at top
2. Comments are shown in red
3. Image files (jpg, jpeg, png) are shown at last
"""



argv = sys.argv

infile = None
outfile = None
if len(argv) >= 2:
    infile = argv[1]

# global variables
red1 = ''
red2 = '
'
blue1 = ''
blue2 = '
'
green1 = ''
green2 = '
'


def escape(t):
    """HTML-escape the text in `t`."""
    return (t
#        .replace("&", "&")
#        .replace("<", "<").replace(">", ">")
#        .replace("'", "'").replace('"', """)
        .replace(" ", " ")
        )

outfile = re.sub(r'\.[^\.]*?$', '.html', infile)
fmask = re.sub(r'\.[^\.]*?$', '*.*', infile)
imagefiles = glob.glob(fmask)
nf = len(imagefiles)
for i in range(nf-1, -1, -1):
    if not re.search(r'\.(jpg|jpeg|png)$', imagefiles[i]):
        del imagefiles[i]
if len(imagefiles) == 0:
    imagefiles.append(re.sub(r'\.[^\.]*?$', '.jpg', infile))

print("in file :", infile)
print("out file :", outfile)
print("Image files ({}):".format(fmask))
for f in imagefiles:
    print(" :", f)

fin = open(infile, 'r', encoding='utf-8')
lines = fin.readlines()
fin.close()

fout = open(outfile, 'w')

IsComment = False
title = 'No title'
title1 = 'No title'
for i in range(len(lines)):
    line = lines[i]
    line = line.rstrip()
    ret = re.search(r"^(.*?)('''|\"\"\")(.*)$", line)
    if ret:
        title = ''
        for j in range(i+1, len(lines)):
            if re.search(r"('''|\"\"\")", lines[j]):
                break
            title += lines[j]
            if j == i+1:
                title1 = lines[j]

        title = re.sub(r'\n', r'
\n', title.rstrip())
        break

print("Title1:", title1)
print("Title :", title)

fout.write("\n" + "\n")
fout.write('\n')
fout.write('\n')
fout.write("{}\n".format(title1))
fout.write("\n" + "\n")

fout.write('\n')
fout.write('' + blue1 + title + blue2 + '

\n')
fout.write('Download script from ' + blue1 + '{}'.format(infile, infile)
            + blue2 +'

\n')
fout.write('\n')
fout.write('


\n')
fout.write('\n')

for i in range(len(lines)):
    line = lines[i]
    line = line.rstrip()

#    ret = re.search(r"^(\s*)(.*)$", line)
    ret = re.search(r"^(\s*#?\s*)(.*)$", line)
#    ret = re.search(r"^(#?\s*)(.*)$", line)
    if ret:
        spc = ret[1]
        line = ret[2]
        spc = re.sub(r' ', ' ', spc)
    else:
        spc = ''

    spc = re.sub('\t', '    ', spc)

    line = spc + line

    ret = re.search(r"^(.*?)(''')(.*)$", line)
    if ret:
        if not IsComment:
            IsComment = True
            line = ret[1] + '' + ret[2] + ret[3]
        else:
            IsComment = True
            line = ret[1] + ret[2] + '
' + ret[3]

    ret = re.search(r'^(.*?)(""")(.*)$', line)
    if ret:
        if not IsComment:
            IsComment = True
            line = ret[1] + '' + ret[2] + ret[3]
        else:
            IsComment = True
            line = ret[1] + ret[2] + '
' + ret[3]

#    print("line: ", line)
    if re.search(r'^(.*?)(#.*?\?\?\?.*)$', line):
        line = re.sub(r'^(.*?)(#.*?\?\?\?.*)$', r'\1\2', line)
    else:
        line = re.sub(r'^(.*?)(#)(.*)$', r'\1\2\3', line)

    line = re.sub(r'', red1, line)
    line = re.sub(r'
', red2, line)
    line = re.sub(r'', blue1, line)
    line = re.sub(r'
', blue2, line)
#    line = re.sub(r'(https?://\S+)', '$1', line)
    match = re.search(r'((http|ftp)s?://\S+)', line)
    if match is not None:
        print("link = ", match[1])
        line = re.sub(r'(https?://\S+)', '%s' % (match[1],match[1]), line)

    fout.write(line + "
\n")

fout.write("
\n")

fout.write("\n")
fout.write("
\n")
for f in imagefiles:
    fout.write('\n\n\n'.format(f, f))
    fout.write('
\n')


fout.write("\n")

fout.close()