Added the necessary to handle custom search and replace
This commit is contained in:
parent
cb0acf7ea6
commit
c4e79eb4cd
@ -1,7 +1,7 @@
|
|||||||
Blogit
|
Blogit
|
||||||
======
|
======
|
||||||
|
|
||||||
A git based blogging software. Just as Jekyll and so, it takes your articles as html files and computes them to generate static page and RSS feed to serve behind a webserver. It uses git as a backend file manager (as git provide some useful features like history and hooks) and Python for scripting the conversion process. You can customize the python scripts to handle special tags (ie, not standard HTML tags) just as <code> for example.
|
A git based blogging software. Just as Jekyll and so, it takes your articles as html files and computes them to generate static page and RSS feed to serve behind a webserver. It uses git as a backend file manager (as git provide some useful features like history and hooks) and Python for scripting the conversion process. You can customize the python scripts to handle special tags (ie, not standard HTML tags) just as <code> for example. See params file in raw dir to modify this.
|
||||||
|
|
||||||
This project is still a WIP.
|
This project is still a WIP.
|
||||||
|
|
||||||
|
3
TODO
3
TODO
@ -1,4 +1,3 @@
|
|||||||
What happen when a file is moved with git ?
|
What happen when a file is moved with git ?
|
||||||
Flake8 the whole thing ! :)
|
Flake8 the whole thing ! :) + Clean the code
|
||||||
basepath ?
|
|
||||||
tags / smileys / ...
|
tags / smileys / ...
|
||||||
|
@ -8,6 +8,7 @@ import shutil
|
|||||||
import os
|
import os
|
||||||
import datetime
|
import datetime
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import re
|
||||||
|
|
||||||
from time import gmtime, strftime, mktime
|
from time import gmtime, strftime, mktime
|
||||||
|
|
||||||
@ -75,6 +76,12 @@ def auto_dir(path):
|
|||||||
sys.exit("[ERROR] An error occured while creating "+path+" file \
|
sys.exit("[ERROR] An error occured while creating "+path+" file \
|
||||||
and parent dirs.")
|
and parent dirs.")
|
||||||
|
|
||||||
|
|
||||||
|
def replace_tags(article, search_list, replace_list):
|
||||||
|
for search, replace in zip(search_list, replace_list):
|
||||||
|
re.sub(search, replace, article)
|
||||||
|
|
||||||
|
|
||||||
try:
|
try:
|
||||||
opts, args = getopt.gnu_getopt(sys.argv, "hf", ["help", "force-regen"])
|
opts, args = getopt.gnu_getopt(sys.argv, "hf", ["help", "force-regen"])
|
||||||
except getopt.GetoptError:
|
except getopt.GetoptError:
|
||||||
@ -94,13 +101,20 @@ for opt, arg in opts:
|
|||||||
force_regen = True
|
force_regen = True
|
||||||
|
|
||||||
#Set parameters
|
#Set parameters
|
||||||
|
search_list = []
|
||||||
|
replace_list = []
|
||||||
with open("raw/params", "r") as params_fh:
|
with open("raw/params", "r") as params_fh:
|
||||||
params = {}
|
params = {}
|
||||||
for line in params_fh.readlines():
|
for line in params_fh.readlines():
|
||||||
if line.strip() == "" or line.strip()[0] == "#":
|
if line.strip() == "" or line.strip()[0] == "#":
|
||||||
continue
|
continue
|
||||||
option, value = line.split("=", 1)
|
option, value = line.split("=", 1)
|
||||||
params[option.strip()] = value.strip()
|
if option == "SEARCH":
|
||||||
|
search_list = value.strip().split(",")
|
||||||
|
elif option == "REPLACE":
|
||||||
|
replace_list = value.strip().split(",")
|
||||||
|
else:
|
||||||
|
params[option.strip()] = value.strip()
|
||||||
|
|
||||||
#Fill lists for modified, deleted and added files
|
#Fill lists for modified, deleted and added files
|
||||||
modified_files = []
|
modified_files = []
|
||||||
@ -336,6 +350,7 @@ for filename in added_files+modified_files:
|
|||||||
|
|
||||||
fh.seek(0)
|
fh.seek(0)
|
||||||
article = fh.read()
|
article = fh.read()
|
||||||
|
article = replace_tags(article, search_list, replace_list)
|
||||||
date = "Le "+date[0:2]+"/"+date[2:4]+"/"+date[4:8]+" à "+date[9:11]+":"+date[11:13]
|
date = "Le "+date[0:2]+"/"+date[2:4]+"/"+date[4:8]+" à "+date[9:11]+":"+date[11:13]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@ -422,7 +437,7 @@ try:
|
|||||||
index = header_gen_fh.read()
|
index = header_gen_fh.read()
|
||||||
for article in last_articles_index:
|
for article in last_articles_index:
|
||||||
with open(article, "r") as article_fh:
|
with open(article, "r") as article_fh:
|
||||||
index += article_fh.read()
|
index += replace_tags(article_fh.read(), search_list, replace_list)
|
||||||
with open("gen/footer.gen") as footer_gen_fh:
|
with open("gen/footer.gen") as footer_gen_fh:
|
||||||
index += footer_gen_fh.read()
|
index += footer_gen_fh.read()
|
||||||
|
|
||||||
@ -447,7 +462,7 @@ for tag in list_directory("gen/tags"):
|
|||||||
for line in tag_gen_fh_lines:
|
for line in tag_gen_fh_lines:
|
||||||
line = line.replace(".html", ".gen")
|
line = line.replace(".html", ".gen")
|
||||||
with open("gen/"+line.strip(), "r") as article_handler:
|
with open("gen/"+line.strip(), "r") as article_handler:
|
||||||
tag_content += article_handler.read()
|
tag_content += replace_tags(article_handler.read(), search_list, replace_list)
|
||||||
with open("gen/footer.gen", "r") as footer_handler:
|
with open("gen/footer.gen", "r") as footer_handler:
|
||||||
tag_content += footer_handler.read()
|
tag_content += footer_handler.read()
|
||||||
tag_fh.write(tag_content)
|
tag_fh.write(tag_content)
|
||||||
@ -457,6 +472,7 @@ for tag in list_directory("gen/tags"):
|
|||||||
|
|
||||||
#Finish articles pages generation
|
#Finish articles pages generation
|
||||||
for filename in added_files+modified_files:
|
for filename in added_files+modified_files:
|
||||||
|
|
||||||
try:
|
try:
|
||||||
auto_dir("blog/"+filename[4:])
|
auto_dir("blog/"+filename[4:])
|
||||||
with open("blog/"+filename[4:], "w") as article_fh:
|
with open("blog/"+filename[4:], "w") as article_fh:
|
||||||
@ -472,7 +488,7 @@ for filename in added_files+modified_files:
|
|||||||
article_gen_fh.seek(0)
|
article_gen_fh.seek(0)
|
||||||
|
|
||||||
article = article.replace("@titre", params["BLOG_TITLE"]+" - "+title, 1)
|
article = article.replace("@titre", params["BLOG_TITLE"]+" - "+title, 1)
|
||||||
article += article_gen_fh.read()
|
article += replace_tags(article_gen_fh.read(), search_list, replace_list)
|
||||||
with open("gen/footer.gen", "r") as footer_gen_fh:
|
with open("gen/footer.gen", "r") as footer_gen_fh:
|
||||||
article += footer_gen_fh.read()
|
article += footer_gen_fh.read()
|
||||||
article_fh.write(article)
|
article_fh.write(article)
|
||||||
@ -512,7 +528,7 @@ for i in years_list:
|
|||||||
for article in articles_list:
|
for article in articles_list:
|
||||||
try:
|
try:
|
||||||
with open(article, "r") as article_fh:
|
with open(article, "r") as article_fh:
|
||||||
article_content = article_fh.read()
|
article_content = replace_tags(article_fh.read(), search_list, replace_list)
|
||||||
page_month += article_content
|
page_month += article_content
|
||||||
page_year += article_content
|
page_year += article_content
|
||||||
except IOError:
|
except IOError:
|
||||||
@ -570,7 +586,7 @@ for article in last_articles_index:
|
|||||||
<title>"+title+"</title> \
|
<title>"+title+"</title> \
|
||||||
<link>"+params["BLOG_URL"]+article[5:]+"</link> \
|
<link>"+params["BLOG_URL"]+article[5:]+"</link> \
|
||||||
<guid isPermaLink=\"false\">"+params["BLOG_URL"]+article[5:]+"</guid> \
|
<guid isPermaLink=\"false\">"+params["BLOG_URL"]+article[5:]+"</guid> \
|
||||||
<description><![CDATA["+article_fh.read()+"]]></description> \
|
<description><![CDATA["+replace_tags(article_fh.read(), search_list, replace_list)+"]]></description> \
|
||||||
<pubDate>"+date+"</pubDate> \
|
<pubDate>"+date+"</pubDate> \
|
||||||
<category>"+', '.join(tags)+"</category> \
|
<category>"+', '.join(tags)+"</category> \
|
||||||
<author>"+params["WEBMASTER"]+"</author> \
|
<author>"+params["WEBMASTER"]+"</author> \
|
||||||
|
15
raw/params
15
raw/params
@ -1,2 +1,15 @@
|
|||||||
BLOG_TITLE = "Phyks' blog"
|
BLOG_TITLE = Phyks' blog
|
||||||
NB_ARTICLES_INDEX = 20
|
NB_ARTICLES_INDEX = 20
|
||||||
|
BLOG_URL = file:///home/lucas/Blog/git/blog/
|
||||||
|
|
||||||
|
#RSS params
|
||||||
|
WEBMASTER = webmaster@phyks.me (Phyks)
|
||||||
|
LANGUAGE = fr
|
||||||
|
DESCRIPTION =
|
||||||
|
COPYRIGHT =
|
||||||
|
|
||||||
|
#Personal replacements
|
||||||
|
#Items are passed as arguments to a python regex,
|
||||||
|
#Take care to match the format
|
||||||
|
#SEARCH = "item1", "item2"
|
||||||
|
#REPLACE = "item1_bis", "item2_bis"
|
||||||
|
Loading…
Reference in New Issue
Block a user