107 lines
3.4 KiB
Python
Executable file
107 lines
3.4 KiB
Python
Executable file
#!/usr/bin/env python3
|
|
|
|
import sys, os, uuid, shutil, subprocess, markdown, re, datetime
|
|
|
|
|
|
targetdir = os.path.expanduser("~/www/i21k.de/posts/")
|
|
fileending = ""
|
|
|
|
|
|
def edit(headline):
|
|
editor = os.getenv("EDITOR")
|
|
if not editor:
|
|
editor = "vim"
|
|
subprocess.call([editor, headline])
|
|
return headline
|
|
|
|
|
|
# Parse arguments "--html" and "Some Headline"
|
|
# there are 2 parameters. if --html is given, the fileending will be .html.
|
|
# Else there will be no fileending, but it will still contain html
|
|
|
|
# there is no parameter:
|
|
if len(sys.argv) == 1:
|
|
headline = input("Bitte gib eine Headline ein: ")
|
|
# there is 1 parameter
|
|
elif len(sys.argv) == 2:
|
|
if sys.argv[1] == "--html":
|
|
fileending = ".html"
|
|
headline = input("Bitte gib eine Headline ein: ")
|
|
else:
|
|
headline = str(sys.argv[1])
|
|
# there are 2 parameters. if --html is given, the fileending will be .html. E
|
|
elif len(sys.argv) == 3:
|
|
if sys.argv[1] == "--html":
|
|
fileending = ".html"
|
|
headline = str(sys.argv[2])
|
|
elif sys.argv[2] == "--html":
|
|
fileending = ".html"
|
|
headline = str(sys.argv[1])
|
|
else:
|
|
sys.exit(str(sys.argv[0]) + ' [--html] "some Headline"\n')
|
|
|
|
|
|
headlinemd = headline + ".md"
|
|
headlinehtml = headline + fileending
|
|
creationtime = datetime.datetime.now().strftime("%Y-%m-%d %H:00 ")
|
|
creationtimeheader = datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
|
|
new_file_name = targetdir + creationtime + " " + headline + fileending
|
|
|
|
print("You will edit now: ", headlinemd, "\n", "Outputfile= ", new_file_name)
|
|
a = input("Press <RETURN> to continue or <CTRL-C> to stop: ")
|
|
edit(headlinemd)
|
|
|
|
html_out_file = open(new_file_name, "w")
|
|
|
|
|
|
head1 = (
|
|
'<!DOCTYPE HTML><html><head>\n\
|
|
<meta http-equiv="content-type" content="tfileending/html; charset=UTF-8">\n<title>'
|
|
+ headline
|
|
+ '</title>\n\
|
|
<meta name="syntax" content="markdown">\n\
|
|
<meta name="generator" content="'
|
|
+ sys.argv[0]
|
|
+ ' markdown2htmlconverter">\n\
|
|
<meta name="settings" content="use_css,pre_wrap,no_foldcolumn,expand_tabs,prevent_copy=">\n\
|
|
<meta name="ctime" content="'
|
|
+ creationtimeheader
|
|
+ '"> '
|
|
)
|
|
|
|
# Some fancy css for minimalistic terminal style
|
|
|
|
styles = " <!--\n\
|
|
* { font-family: monospace; color: #00f020; background-color: #1c1414; font-size: 1.15em; }\n\
|
|
a { font-size: 1.0em;}\n\
|
|
ul { font-size: 1.15em;}\n\
|
|
p { font-size: 1.15em;}\n\
|
|
li { font-size: 1.15em;}\n\
|
|
ol { font-size: 1.0em;}\n\
|
|
em { font-size: 1.0em;}\n\
|
|
table { background-color: #1c1414; }\n\
|
|
blockquote { font-size: 1.15em; }\n\
|
|
body { font-family: monospace; color: #00f020; background-color: #1c1414; }\n\
|
|
pre { white-space: pre-wrap; font-family: monospace; color: #00f020; font-background-color: #1c1414; }\n\
|
|
.Statement { color: #00f020; font-weight: bold; }\n\
|
|
.Headandfoot { color: #00f020; font-weight: bold; } "
|
|
|
|
style_fn = '<link rel="stylesheet" type="text/css" href="/vimstyles.css">'
|
|
head2 = "</head><body>\n"
|
|
body1 = '<a href="./">Back</a>'
|
|
foot = "</body> </html>"
|
|
|
|
|
|
html_out_file.write(head1 + style_fn + head2 + body1)
|
|
|
|
# Centerpiece - read md-file, convert to html, add head and foot and write result
|
|
|
|
with open(headlinemd, "r", encoding="utf-8") as infile:
|
|
md_data = infile.read()
|
|
html_output = markdown.markdown(md_data)
|
|
html_out_file.write(html_output)
|
|
html_out_file.write(foot)
|
|
html_out_file.close()
|
|
|
|
# return new filename to stdout, so some calling shellscript can use it.
|
|
print(new_file_name)
|