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
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
# 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/")
targetdir = webbasedir + "posts/"
sourcedir = os.path.expanduser("~/python/webgen/")
sourcedir = os.path.expanduser("~/python/webgen/mds/")
### for module mkdirindex:
filesdir = webbasedir + "files/"
indexfilename = "index.html"
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 = ""
locale.setlocale(locale.LC_ALL, "")
clear = "\x1b[2J\x1b[H"
@ -47,11 +65,19 @@ signal.signal(signal.SIGINT, sigint_handler)
# call favorite editor with filename to write the text
# i am not shure bout that spellchecko, is it nessesary?
def edit(headline):
editor = os.getenv("EDITOR")
if not editor:
editor = "vim"
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
@ -80,7 +106,7 @@ def selectfile():
# Nothing has been choosen, so lets ask for a topic to generate a filename
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] == "":
sys.exit(yellow + "Na, dann eben nicht...")
headline = newtopic[1]
@ -110,6 +136,7 @@ def selectfile():
return sourcefile, targetfile, headline
def mkdirindex(filesdir, indexfilename, filesdirheadline):
"""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">'
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 += '<div class="Statement"> Some files. Maybe useful or not.</div> '
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
dirindexfile = open(filesdir + indexfilename, "w")
@ -153,14 +180,13 @@ def mkdirindex(filesdir, indexfilename, filesdirheadline):
return linecounter
# Parse arguments "--html", "--stdout" and "Some Headline"
# Parse arguments "--html", "--stdout", --spellcheck and "Some Headline"
# 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
# the name of the program is stored in myname
# dont set a name to outfile, it just is initialised here and will be overwritten
optwords = ["--html", "--stdout"]
optwords = ["--html", "--stdout", "--spellcheck"]
outfile = ""
args = sys.argv
myname = args.pop(0)
@ -169,6 +195,9 @@ for wish in optwords:
if wish == "--html":
fileending = ".html"
args.pop(args.index(wish))
if wish == "--spellcheck":
dospellcheck = "y"
args.pop(args.index(wish))
if wish == "--stdout":
outfile = sys.stdout
args.pop(args.index(wish))
@ -228,11 +257,11 @@ head1 = (
# Some fancy css for minimalistic terminal style
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>'
foot = "<br /><blockquote><blockquote><blockquote><blockquote><blockquote><blockquote></p><hr /></blockquote></blockquote></blockquote></blockquote></blockquote></blockquote></body> </html>\n"
foot = "<br /><hr width=50% /></body> </html>\n"
foot = '<br /><hr class="myhr" />\n</body> </html>\n'
# write beginning of html-file
html_out_file.write(head1 + style_fn + head2 + body1)

View file

@ -23,6 +23,16 @@ 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 = ""
locale.setlocale(locale.LC_ALL, "")
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">'
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 += '<div class="Statement"> Some files. Maybe useful or not.</div> '
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
dirindexfile = open(filesdir + indexfilename, "w")
@ -249,9 +259,9 @@ head1 = (
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>'
foot = "<br /><hr width=50% /></body> </html>\n"
foot = '<br /><hr class="myhr" />\n</body> </html>\n'
# write beginning of html-file
html_out_file.write(head1 + style_fn + head2 + body1)