This commit is contained in:
Tykayn 2025-02-23 15:50:56 +01:00 committed by tykayn
parent 672f61f2bb
commit 6d77de4696
15 changed files with 203 additions and 506 deletions

View file

@ -10,12 +10,12 @@ from website_config import configs_sites
# Configuration des arguments de la ligne de commande
parser = argparse.ArgumentParser(description="Générer un nouvel article en mode orgmode.")
parser.add_argument("blog_dir", help="Le nom du dossier de blog.")
parser.add_argument("blog", help="Le nom du dossier de blog.")
args = parser.parse_args()
website_ndd = configs_sites[args.blog_dir]['NDD']
blog_dir = 'sources/'+args.blog_dir+'/lang_fr/'
website_ndd = configs_sites[args.blog]['NDD']
blog = 'sources/'+args.blog+'/lang_fr/'
# Expression régulière pour extraire la date du contenu de l'article
date_regex = re.compile(r"\b(\d{14})\b")
@ -26,17 +26,12 @@ org_files = []
limit_articles_feed=1000
count_articles=0
# print('atom generate: fichiers dans le dossier: ',len((blog_dir)))
# Parcourt le dossier source à la recherche de fichiers org-mode
for root, dirs, files in os.walk(blog_dir):
# print('fichiers fr dans le dossier source',len(files))
# print(files)
for root, dirs, files in os.walk(blog):
for file in files:
if file.endswith(".org"):
# print("org: ",file)
date_str, annee, slug = find_year_and_slug_on_filename(file)
# Ouvre le fichier et recherche la première date dans le contenu de l'article
with open(os.path.join(root, file), "r", encoding="utf-8") as f:
content = f.read()
extract = find_extract_in_content_org(content)
@ -44,23 +39,18 @@ for root, dirs, files in os.walk(blog_dir):
match = date_regex_org.search(date_str)
if match:
date = datetime.strptime(match.group(1), "%Y-%m-%d")
# Ajoute le fichier à la liste avec sa date correspondante
org_files.append((date, os.path.join(root, file), annee, slug,extract))
if count_articles > limit_articles_feed:
break
if count_articles > limit_articles_feed:
break
# Tri des fichiers par ordre décroissant de date
# print(org_files)
org_files.sort(reverse=True)
# print(org_files)
# print("org_files:",org_files)
# Génération du flux Atom
atom_feed = {"title": "Flux Atom des articles de "+args.blog_dir,
atom_feed = {"title": "Flux Atom des articles de "+args.blog,
"link": f"{website_ndd}/feed",
# "updated": org_files[0][0].strftime("%Y-%m-%dT%H:%M:%SZ"),
# "updated": org_files[0][0],
"updated": org_files[0][0],
"entries": []}
@ -78,8 +68,6 @@ for date, file, annee, slug, extract in org_files:
"published": date
}
atom_feed["entries"].append(atom_entry)
# if published > atom_feed["updated"]:
# atom_feed["updated"] = published
# Enregistrement du flux Atom dans un fichier XML
# Le flux Atom doit contenir:
@ -87,7 +75,7 @@ for date, file, annee, slug, extract in org_files:
# - Une balise author avec name et email
# - Les dates au format ISO 8601 avec timezone
# - Un lien self vers le fichier XML
with open(f"index_{args.blog_dir}.xml", "w", encoding="utf-8") as f:
with open(f"index_{args.blog}.xml", "w", encoding="utf-8") as f:
f.write('<?xml version="1.0" encoding="UTF-8"?>\n')
f.write('<feed xmlns="http://www.w3.org/2005/Atom">\n')
f.write(f' <title>{atom_feed["title"]}</title>\n')
@ -102,7 +90,6 @@ with open(f"index_{args.blog_dir}.xml", "w", encoding="utf-8") as f:
for entry in atom_feed["entries"]:
slug_id = entry["title"].lower().replace(" ", "-").replace("'", "-").replace("--", "-")
# Lire le contenu complet du fichier
with open(file, "r", encoding="utf-8") as article_file:
article_content = article_file.read()
@ -117,8 +104,8 @@ with open(f"index_{args.blog_dir}.xml", "w", encoding="utf-8") as f:
f.write(f' <published>{entry["published"].strftime("%Y-%m-%dT%H:%M:%S+00:00")}</published>\n')
f.write(f' <updated>{entry["published"].strftime("%Y-%m-%dT%H:%M:%S+00:00")}</updated>\n')
f.write(' <author>\n')
f.write(f" <name>{configs_sites[args.blog_dir]['AUTHOR']}</name>\n")
f.write(f" <email>{configs_sites[args.blog_dir]['EMAIL']}</email>\n")
f.write(f" <name>{configs_sites[args.blog]['AUTHOR']}</name>\n")
f.write(f" <email>{configs_sites[args.blog]['EMAIL']}</email>\n")
f.write(' </author>\n')
f.write(' </entry>\n')
f.write('</feed>')