webgen v4.0.6 for batch usage

This commit is contained in:
Wolfgang Nowak 2023-08-31 19:48:38 +02:00
parent 0f32983003
commit 4bd7ec45de

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]
@ -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,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\" /></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")
@ -153,14 +180,13 @@ def mkdirindex(filesdir, indexfilename, filesdirheadline):
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))
@ -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)