mirror of
https://forge.chapril.org/tykayn/orgmode-to-gemini-blog
synced 2025-06-20 09:04:42 +02:00
interactive new article
This commit is contained in:
parent
cfd6545a1a
commit
5ecbe07f53
5 changed files with 117 additions and 28 deletions
|
@ -1,19 +1,61 @@
|
|||
#!/usr/bin/env python3
|
||||
# création de nouvel article de blog
|
||||
# exemple de commande
|
||||
# python new_article.py cipherbliss_blog fr "Création d'un blog gemini"
|
||||
# Création de nouvel article de blog
|
||||
# Exemple de commande :
|
||||
# python new_article.py [blog_dir] [lang] "article_title"
|
||||
import os
|
||||
from datetime import datetime
|
||||
import argparse
|
||||
|
||||
# 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("lang", help="La langue de l'article.")
|
||||
parser.add_argument("title", help="Le titre de l'article.")
|
||||
parser.add_argument("title", nargs="?", help="Le titre de l'article.")
|
||||
parser.add_argument("lang", nargs="?", default="fr", help="La langue de l'article (par défaut : fr pour Français ou en pour English).")
|
||||
parser.add_argument("blog_dir", nargs="?", default=None, help="Le nom du dossier de blog (sous source/). Si non spécifié, une liste de dossiers disponibles sera proposée.")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
# Définition du dossier de base pour les blogs
|
||||
base_blog_dir = "sources/"
|
||||
|
||||
# Si aucun dossier de blog n'est spécifié, proposer une sélection
|
||||
if args.blog_dir is None:
|
||||
available_dirs = [d for d in os.listdir(base_blog_dir) if os.path.isdir(os.path.join(base_blog_dir, d))]
|
||||
if not available_dirs:
|
||||
print("Aucun dossier de blog trouvé sous", base_blog_dir)
|
||||
exit(1)
|
||||
|
||||
print("Sélectionnez un dossier de blog :")
|
||||
for i, dir_name in enumerate(available_dirs, start=1):
|
||||
print(f"{i}. {dir_name}")
|
||||
|
||||
choice = input("Entrez le numéro de votre choix : ")
|
||||
try:
|
||||
choice = int(choice)
|
||||
if choice < 1 or choice > len(available_dirs):
|
||||
raise ValueError
|
||||
args.blog_dir = available_dirs[choice - 1]
|
||||
except ValueError:
|
||||
print("Choix invalide. Annulation.")
|
||||
exit(1)
|
||||
if args.title is None:
|
||||
args.title = input("Entrez le titre de votre nouvel article: ")
|
||||
|
||||
if args.title is None:
|
||||
print("Vous n'avez pas choisi de titre d'article")
|
||||
exit(1)
|
||||
# Vérification de l'existence du dossier de blog
|
||||
blog_path = os.path.join(base_blog_dir, args.blog_dir)
|
||||
if not os.path.exists(blog_path):
|
||||
print(f"Le dossier de blog '{args.blog_dir}' n'existe pas sous '{base_blog_dir}'.")
|
||||
create_dir = input("Créer le dossier? (o/n) : ")
|
||||
if create_dir.lower() == 'o':
|
||||
os.makedirs(blog_path)
|
||||
print(f"Dossier '{args.blog_dir}' créé sous '{base_blog_dir}'.")
|
||||
else:
|
||||
print("Annulation de la création de l'article.")
|
||||
exit(1)
|
||||
|
||||
|
||||
uuid_value=''
|
||||
# Génération du nom de fichier org avec la date et le slug
|
||||
now = datetime.now()
|
||||
|
@ -21,12 +63,18 @@ now = datetime.now()
|
|||
date_string = now.strftime("%Y%m%d%H%M%S")
|
||||
date_string_full = now.strftime("%Y-%m-%d %H:%M:%S")
|
||||
# date_string_full = now.strftime("%Y%m%d%H%M%S")
|
||||
slug = args.title.lower().replace(" ", "-")
|
||||
slug = ''
|
||||
if args.title:
|
||||
slug = args.title.lower().replace(" ", "-")
|
||||
slug = slug.replace("--", "-")
|
||||
slug = slug.replace("--", "-")
|
||||
file_abs_path = os.path.abspath(os.path.dirname(__file__))
|
||||
|
||||
filename = f"{file_abs_path}/sources/{args.blog_dir}/lang_{args.lang}/{date_string}__{slug}.org"
|
||||
if args.lang == 'fr' or args.lang == 'en':
|
||||
filename = f"{file_abs_path}/sources/{args.blog_dir}/lang_{args.lang}/{date_string}__{slug}.org"
|
||||
else:
|
||||
print('langue invalide, disponible: fr ou en seulement')
|
||||
exit(1)
|
||||
|
||||
import uuid
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue