Compare commits

..

10 commits

Author SHA1 Message Date
Wolfgang Nowak
7154eed2f9 webgen devel v4.0.8 Added Style for HR-Tags, reformatted 2023-08-31 19:48:51 +02:00
Wolfgang Nowak
4bd7ec45de webgen v4.0.6 for batch usage 2023-08-31 19:48:38 +02:00
Wolfgang Nowak
0f32983003 Check for given filename 2023-08-31 19:48:18 +02:00
Wolfgang Nowak
e5401f356e modul mkindex für webgen devel v0.2 2022-11-13 01:24:50 +01:00
Wolfgang Nowak
46af61f87b Check for given filename 2022-09-29 23:18:49 +02:00
Wolfgang Nowak
dc42bd5843 modul mkindex für webgen devel v0.1 2022-09-23 18:43:55 +02:00
Wolfgang Nowak
8a66b31197 webgen v4.0.8 Added Style for HR-Tags, reformatted 2022-09-16 09:42:09 +02:00
Wolfgang Nowak
bf42a1b6c9 webgen v4.0.7 Changed parameters for markdown to have a standard lineending and footnotes 2022-09-13 04:55:32 +02:00
Wolfgang Nowak
94cb455f9e neue Datei: md2html.py markdown to html converter 1.0 2022-09-13 04:53:00 +02:00
Wolfgang Nowak
8f7004ad08 webgen v4.0.6 Changed parameters for markdown to have a standard lineending 2022-09-12 13:13:21 +02:00
4 changed files with 159 additions and 23 deletions

27
md2html.py Executable file
View file

@ -0,0 +1,27 @@
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
Liest markdownfile ein und spuckt html aus: md2html meinmarkdownfile.md
"""
import sys, markdown2 as markdown
markdown.Markdown.extras = ["break-on-newline", "footnotes"]
try:
mdfile = sys.argv[1]
except:
sys.exit("No file, honey.\n"+sys.argv[0]+ ": Liest markdownfile ein und spuckt html aus: md2html meinmarkdownfile.md")
headline = mdfile.split(".md")[0]
htmlfilename = headline + ".html"
myhead = "<!DOCTYPE HTML><html><head><title>" + headline + "</title></head><body>"
myfooter = "</body></html>"
with open(mdfile, "r", encoding="utf-8") as datafile:
md = datafile.read()
htmlcontent = markdown.markdown(md, extras=markdown.Markdown.extras)
with open(htmlfilename, "w", encoding="utf-8") as outfile:
outfile.write(myhead + htmlcontent + myfooter)

70
mkindex.py Executable file
View file

@ -0,0 +1,70 @@
#!/usr/bin/env python3
import sys, os, re, datetime, locale
webbasedir = os.path.expanduser("~/Media")
### for module mkdirindex:
targetdir = webbasedir + "/Videos"
indexfilename = "index.html"
targetdirheadline = "Something."
showsize = 0
####
def mkdirindex(targetdir, indexfilename, targetdirheadline, showsize):
"""Dig a directory and generate an index."""
head1 = (
'<!DOCTYPE HTML><html><head>\n <meta http-equiv="content-type" content="text/html; charset=UTF-8">\n<title>'
+ targetdirheadline
+ '</title>\n <meta name="syntax" content="markdown">\n <meta name="generator" content="'
+ "webgen.py"
+ ' markdown2htmlconverter">\n <meta name="settings" content="use_css,pre_wrap,no_foldcolumn,expand_tabs,prevent_copy=">'
)
style_fn = '<link rel="stylesheet" type="text/css" href="/vimstyles.css">'
head2 = "</head><body>"
body1 = '<a class="Statement" href="../">Main</a><br/><br/>'
body1 += '<div class="Statement">' + targetdirheadline + "</div> "
body1 += '<table border="0" class="Neutral">'
foot = '</table><br/><strong>Some byebye</strong><br/><hr class="myhr" ></body> </html>\n'
linecounter = 0
dirindexfile = open(targetdir + indexfilename, "w")
dirindexfile.write(head1 + style_fn + head2 + body1)
sortedtargetdir = os.listdir(targetdir)
sortedtargetdir.sort()
sortedtargetdir.reverse()
for file in sortedtargetdir:
sizestr = ""
# If showsize is 1 we have some filesdir and want to see the size of a file
if not re.match("^\.", file) and not file == indexfilename:
if showsize == 1:
size = os.lstat(targetdir + file).st_size
if size > 100000000000:
sizestr = str(int(size / 1073741824)) + " GiB"
elif size > 100000000:
sizestr = str(int(size / 1048576)) + " MiB"
elif size > 10000:
sizestr = str(int(size / 1024)) + " KiB"
else:
sizestr = str(size) + " B"
else:
entryname = re.sub(".html$", "", file)
# entryname = re.sub(".html$", "", re.sub("[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-2][0-9]:[0-6][0-9] ", "", file))
line = str('<tr><td><a href="' + str(file) + '">' + entryname + "</a></td><td>&nbsp;" + sizestr + "</td></tr>")
dirindexfile.write(line)
linecounter += 1
dirindexfile.write(foot)
return linecounter
# Dig the files-directory and generate an index.
linecounter = mkdirindex(targetdir, indexfilename, targetdirheadline, showsize)
print("Dirindex in ", targetdir, " has ", linecounter, "lines")
# Have a nice time.

View file

@ -1,20 +1,38 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
import sys, os, uuid, shutil, signal, subprocess, markdown, re, datetime, locale, glob import sys, os, uuid, shutil, signal, subprocess, markdown2 as markdown, re, datetime, locale, glob
from dialog import Dialog from dialog import Dialog
# If not choosen stdout as output, where should the generated file go to and what # If not choosen stdout as output, where should the generated file go to and what
# fileending (f.e. .html) shall it have # fileending (f.e. .html) shall it have. Preset values.
webbasedir = os.path.expanduser("~/www/i21k.de/") webbasedir = os.path.expanduser("~/www/i21k.de/")
targetdir = webbasedir + "posts/" targetdir = webbasedir + "posts/"
sourcedir = os.path.expanduser("~/python/webgen/") sourcedir = os.path.expanduser("~/python/webgen/mds/")
### for module mkdirindex: ### for module mkdirindex:
filesdir = webbasedir + "files/" filesdir = webbasedir + "files/"
indexfilename = "index.html" indexfilename = "index.html"
filesdirheadline = "Files" filesdirheadline = "Files"
#### ####
# for spellchecko
# Preferred: aspell -c filename
#
dospellcheck = os.getenv("SPELLCHECK")
spellcheck = "aspell"
spellcheckparam = "-c"
# Configure Markdown, activate "break-on-newline" for letting a line end without havin to put doublespaces there.
#
# More options:
# break-on-newline, code-friendly, cuddled-lists, fenced-code-blocks,
# footnotes, header-ids, highlightjs-lang, html-classes, link-patterns,
# markdown-in-html, numbering, pyshell, smarty-pants, spoiler, strike,
# tag-friendly, tables, toc, use-file-vars, wiki-tables, xml
markdown.Markdown.extras = ["footnotes", "break-on-newline"]
fileending = "" fileending = ""
locale.setlocale(locale.LC_ALL, "") locale.setlocale(locale.LC_ALL, "")
clear = "\x1b[2J\x1b[H" clear = "\x1b[2J\x1b[H"
@ -47,11 +65,19 @@ signal.signal(signal.SIGINT, sigint_handler)
# call favorite editor with filename to write the text # call favorite editor with filename to write the text
# i am not shure bout that spellchecko, is it nessesary?
def edit(headline): def edit(headline):
editor = os.getenv("EDITOR") editor = os.getenv("EDITOR")
if not editor: if not editor:
editor = "vim" editor = "vim"
subprocess.call([editor, headline]) subprocess.call([editor, headline])
if dospellcheck:
print(yellow)
if input("You like to spellcheck it first [y/N]?") == "y":
subprocess.call([spellcheck, spellcheckparam, headline])
print(green)
return headline return headline
@ -80,7 +106,7 @@ def selectfile():
# Nothing has been choosen, so lets ask for a topic to generate a filename # Nothing has been choosen, so lets ask for a topic to generate a filename
if ausgewaehlt[0] == "cancel": if ausgewaehlt[0] == "cancel":
# newtopic = d.inputbox("Ok, gib hier ein neues Thema an:", width=xwidth, height=ywidth, title="Ein Thema wählen:", cancel="Exit") newtopic = d.inputbox("Ok, gib hier ein neues Thema an:", width=xwidth, height=ywidth, title="Ein Thema wählen:", cancel="Exit")
if newtopic[0] == "cancel" or newtopic[1] == "": if newtopic[0] == "cancel" or newtopic[1] == "":
sys.exit(yellow + "Na, dann eben nicht...") sys.exit(yellow + "Na, dann eben nicht...")
headline = newtopic[1] headline = newtopic[1]
@ -92,7 +118,7 @@ def selectfile():
headline = re.sub("\.md$", "", tabelle[int(ausgewaehlt[1])][1]) headline = re.sub("\.md$", "", tabelle[int(ausgewaehlt[1])][1])
print(headline) print(headline)
# a = input(yellow + "What do we dooo here?") # a = input(yellow + "What do we dooo here?")
# if the searched filename doesnt match an existing file we construct a new one # if the searched filename doesnt match an existing file we construct a new one
if len(glob.glob(sourcedir + headline + ".md")) == 0: if len(glob.glob(sourcedir + headline + ".md")) == 0:
@ -110,6 +136,7 @@ def selectfile():
return sourcefile, targetfile, headline return sourcefile, targetfile, headline
def mkdirindex(filesdir, indexfilename, filesdirheadline): def mkdirindex(filesdir, indexfilename, filesdirheadline):
"""Dig the files-directory and generate an index.""" """Dig the files-directory and generate an index."""
@ -122,12 +149,12 @@ def mkdirindex(filesdir, indexfilename, filesdirheadline):
) )
style_fn = '<link rel="stylesheet" type="text/css" href="/vimstyles.css">' style_fn = '<link rel="stylesheet" type="text/css" href="/vimstyles.css">'
head2 = "</head><body>" head2 = "</head><body><div id=\'print\'><img src=\"/copyright.jpg\" /></div>\n"
body1 = '<a class="Statement" href="../">Back</a><br/><br/><hr>' body1 = '<a class="Statement" href="../">Back</a><br/><br/><hr>'
body1 += '<div class="Statement"> Some files. Maybe useful or not.</div> ' body1 += '<div class="Statement"> Some files. Maybe useful or not.</div> '
body1 += '<table border="0" class="Neutral">' body1 += '<table border="0" class="Neutral">'
foot = "</table><br/><strong>You can't avoid chaos.</strong><br/><hr></body> </html>\n" foot = '</table><br/><strong>You can\'t avoid chaos.</strong><br/><hr class="myhr" ></body> </html>\n'
linecounter=0 linecounter = 0
dirindexfile = open(filesdir + indexfilename, "w") dirindexfile = open(filesdir + indexfilename, "w")
@ -147,20 +174,19 @@ def mkdirindex(filesdir, indexfilename, filesdirheadline):
line = str('<tr><td><a href="' + str(file) + '">' + str(file) + "</a></td><td>&nbsp;" + sizestr + "</td></tr>") line = str('<tr><td><a href="' + str(file) + '">' + str(file) + "</a></td><td>&nbsp;" + sizestr + "</td></tr>")
dirindexfile.write(line) dirindexfile.write(line)
linecounter+=1 linecounter += 1
dirindexfile.write(foot) dirindexfile.write(foot)
return linecounter return linecounter
# Parse arguments "--html", "--stdout", --spellcheck and "Some Headline"
# Parse arguments "--html", "--stdout" and "Some Headline"
# there are 3 parameters. if --html is given, the fileending will be .html. # there are 3 parameters. if --html is given, the fileending will be .html.
# Else, if stdout is choosen there can be no fileending, but it will still contain html # Else, if stdout is choosen there can be no fileending, but it will still contain html
# the name of the program is stored in myname # the name of the program is stored in myname
# dont set a name to outfile, it just is initialised here and will be overwritten # dont set a name to outfile, it just is initialised here and will be overwritten
optwords = ["--html", "--stdout"] optwords = ["--html", "--stdout", "--spellcheck"]
outfile = "" outfile = ""
args = sys.argv args = sys.argv
myname = args.pop(0) myname = args.pop(0)
@ -169,6 +195,9 @@ for wish in optwords:
if wish == "--html": if wish == "--html":
fileending = ".html" fileending = ".html"
args.pop(args.index(wish)) args.pop(args.index(wish))
if wish == "--spellcheck":
dospellcheck = "y"
args.pop(args.index(wish))
if wish == "--stdout": if wish == "--stdout":
outfile = sys.stdout outfile = sys.stdout
args.pop(args.index(wish)) args.pop(args.index(wish))
@ -199,8 +228,8 @@ elif len(args) > 1:
if outfile == sys.stdout: if outfile == sys.stdout:
outputfile = "STDOUT" outputfile = "STDOUT"
print(yellow + "\nYou will edit now: '" + green + inputfile + yellow + "'\nOutputfile= '" + green + outputfile + "'") print(yellow + "\nYou will edit now: '" + green + inputfile + yellow + "'\nOutputfile= '" + green + outputfile + "'")
#a = input("\nPress <RETURN> to continue or <CTRL-C> to stop: ") # a = input("\nPress <RETURN> to continue or <CTRL-C> to stop: ")
#edit(inputfile) # edit(inputfile)
# Set ouput to stdout, if requested. Caution, the prompts of this script go there, too, # Set ouput to stdout, if requested. Caution, the prompts of this script go there, too,
@ -228,11 +257,11 @@ head1 = (
# Some fancy css for minimalistic terminal style # Some fancy css for minimalistic terminal style
style_fn = '<link rel="stylesheet" type="text/css" href="/vimstyles.css">' style_fn = '<link rel="stylesheet" type="text/css" href="/vimstyles.css">'
head2 = "</head><body>\n" head2 = "</head><body>\n<div id=\'print\'><img src=\"/copyright.jpg\" /></div>\n"
body1 = '<a href="./">Back</a><blockquote><strong>Moin</strong></p>' body1 = '<a href="./">Back</a><blockquote><strong>Moin</strong></p>'
foot = "<br /><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote></p><hr /></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></body> </html>\n" foot = '<br /><hr class="myhr" />\n</body> </html>\n'
foot = "<br /><hr width=50% /></body> </html>\n"
# write beginning of html-file # write beginning of html-file
html_out_file.write(head1 + style_fn + head2 + body1) html_out_file.write(head1 + style_fn + head2 + body1)
@ -250,7 +279,7 @@ if outfile != sys.stdout:
print(outputfile) print(outputfile)
# Dig the files-directory and generate an index. # Dig the files-directory and generate an index.
linecounter=mkdirindex(filesdir, indexfilename, filesdirheadline) linecounter = mkdirindex(filesdir, indexfilename, filesdirheadline)
print("Dirindex in ",filesdir," has ", linecounter, "lines") print("Dirindex in ", filesdir, " has ", linecounter, "lines")
# Have a nice time. # Have a nice time.

View file

@ -23,6 +23,16 @@ dospellcheck = os.getenv("SPELLCHECK")
spellcheck = "aspell" spellcheck = "aspell"
spellcheckparam = "-c" spellcheckparam = "-c"
# Configure Markdown, activate "break-on-newline" for letting a line end without havin to put doublespaces there.
#
# More options:
# break-on-newline, code-friendly, cuddled-lists, fenced-code-blocks,
# footnotes, header-ids, highlightjs-lang, html-classes, link-patterns,
# markdown-in-html, numbering, pyshell, smarty-pants, spoiler, strike,
# tag-friendly, tables, toc, use-file-vars, wiki-tables, xml
markdown.Markdown.extras = ["footnotes", "break-on-newline"]
fileending = "" fileending = ""
locale.setlocale(locale.LC_ALL, "") locale.setlocale(locale.LC_ALL, "")
clear = "\x1b[2J\x1b[H" clear = "\x1b[2J\x1b[H"
@ -139,11 +149,11 @@ def mkdirindex(filesdir, indexfilename, filesdirheadline):
) )
style_fn = '<link rel="stylesheet" type="text/css" href="/vimstyles.css">' style_fn = '<link rel="stylesheet" type="text/css" href="/vimstyles.css">'
head2 = "</head><body>" head2 = "</head><body><div id='print'><img src=\"/copyright.jpg\" />XXXXXXXX</div>\n"
body1 = '<a class="Statement" href="../">Back</a><br/><br/><hr>' body1 = '<a class="Statement" href="../">Back</a><br/><br/><hr>'
body1 += '<div class="Statement"> Some files. Maybe useful or not.</div> ' body1 += '<div class="Statement"> Some files. Maybe useful or not.</div> '
body1 += '<table border="0" class="Neutral">' body1 += '<table border="0" class="Neutral">'
foot = "</table><br/><strong>You can't avoid chaos.</strong><br/><hr></body> </html>\n" foot = '</table><br/><strong>You can\'t avoid chaos.</strong><br/><hr class="myhr" ></body> </html>\n'
linecounter = 0 linecounter = 0
dirindexfile = open(filesdir + indexfilename, "w") dirindexfile = open(filesdir + indexfilename, "w")
@ -249,9 +259,9 @@ head1 = (
style_fn = '<link rel="stylesheet" type="text/css" href="/vimstyles.css">' style_fn = '<link rel="stylesheet" type="text/css" href="/vimstyles.css">'
head2 = "</head><body>\n" head2 = "</head><body>\n<div id='print'><img src=\"/copyright.jpg\" />XXXXXXXX</div>\n"
body1 = '<a href="./">Back</a><blockquote><strong>Moin</strong></p>' body1 = '<a href="./">Back</a><blockquote><strong>Moin</strong></p>'
foot = "<br /><hr width=50% /></body> </html>\n" foot = '<br /><hr class="myhr" />\n</body> </html>\n'
# write beginning of html-file # write beginning of html-file
html_out_file.write(head1 + style_fn + head2 + body1) html_out_file.write(head1 + style_fn + head2 + body1)