From c6c85f4737522ba7dbddaf1e061c27823c717e65 Mon Sep 17 00:00:00 2001 From: Tykayn Date: Tue, 15 Oct 2024 23:53:54 +0200 Subject: [PATCH] up export and find characters aliases --- export_with_remove_tags.py | 50 ++++++++++++++-------- find_characters_in_book.py | 9 ++-- fanzine_generate.sh => generate_fanzine.sh | 0 3 files changed, 39 insertions(+), 20 deletions(-) rename fanzine_generate.sh => generate_fanzine.sh (100%) diff --git a/export_with_remove_tags.py b/export_with_remove_tags.py index 8f3b39a..1a98808 100644 --- a/export_with_remove_tags.py +++ b/export_with_remove_tags.py @@ -10,36 +10,46 @@ fichier_org_copie = "livre_org_copie.org" # Expression régulière pour extraire les entêtes des sections regex_entete = r'\*+ (.*)' - +regex_tags = r'(\:.*\:)' # Expression régulière pour extraire les blocs de commentaires regex_comment = r'#\+BEGIN\_COMMENT' + r'(.*?)' + r'#\+END\_COMMENT' print("retraitement du livre avant son export") +def show_lines(content): + # Compter le nombre de lignes du fichier original + nb_lignes_origine = len(contenu_org.splitlines()) + print("lignes du livre: ",nb_lignes_origine) # Créer une copie du fichier Org with open(fichier_org, "r") as fichier: contenu_org = fichier.read() - # Compter le nombre de lignes du fichier original - nb_lignes_origine = len(contenu_org.splitlines()) +nb_lignes_origine = len(contenu_org.splitlines()) + +print("lignes sans modifier le livre orgmode") +show_lines(contenu_org) # Supprimer les titres qui ne contiennent pas le tag :title: - contenu_org = re.sub(r"^\*+.*\n", lambda x: x.group() if ":title:" in x.group() else "", contenu_org, flags=re.MULTILINE) -# content = contenu_org - # Supprimer les tags des entêtes des sections - contenu_org = re.sub(r'\*+ \[.+\]', r'\1', contenu_org) +contenu_org = re.sub(r"^\*+.*\n", lambda x: x.group() if ":title:" in x.group() else "", contenu_org, flags=re.MULTILINE) - # Supprimer les blocs de commentaires - contenu_org = re.sub(regex_comment, '', contenu_org, flags=re.DOTALL) - # Effacer toutes les occurences de ":title:" - contenu_org = re.sub(r":title:", "", contenu_org) +print("lignes sans modifier le livre orgmode") +show_lines(contenu_org) - # Compter le nombre de lignes du fichier modifié - nb_lignes_modifie = len(contenu_org.splitlines()) +print("Supprimer les tags des entêtes des sections") +contenu_org = re.sub(regex_tags, '', contenu_org) +# Effacer toutes les occurences de ":title:" +contenu_org = re.sub(r":title:", "", contenu_org) - # Afficher le nombre de lignes supprimées - nb_lignes_supprimees = nb_lignes_origine - nb_lignes_modifie - print(f"Nombre de lignes supprimées avant l'export de la copie : {nb_lignes_supprimees}") +print("Supprimer les blocs de commentaires") +contenu_org = re.sub(regex_comment, '', contenu_org, flags=re.DOTALL) + +# Compter le nombre de lignes du fichier modifié +show_lines(contenu_org) + +# Afficher le nombre de lignes supprimées +nb_lignes_modifie = len(contenu_org.splitlines()) +nb_lignes_supprimees = nb_lignes_origine - nb_lignes_modifie +print(f"Nombre de lignes supprimées avant l'export de la copie : {nb_lignes_supprimees}") with open(style_css, "r") as fichier: contenu_css = fichier.read() @@ -48,7 +58,7 @@ with open(style_css, "r") as fichier: - +print('Sauver une copie faite pour la lecture du livre.' , fichier_org_copie) # Écrire la copie du fichier Org with open(fichier_org_copie, "w") as fichier: fichier.write(contenu_org) @@ -75,3 +85,9 @@ process = subprocess.run(["pandoc", "livre.html", "-o", "livre.pdf"], capture_ou # Afficher les messages de console du subprocess print(process.stdout) print(process.stderr) + + +print('Convertir la copie du fichier Org en epub') +process = subprocess.run(["pandoc", "livre.html", "-o", "livre.epub"], capture_output=True, text=True) +print(process.stdout) +print(process.stderr) diff --git a/find_characters_in_book.py b/find_characters_in_book.py index 37c4962..6eb17d9 100644 --- a/find_characters_in_book.py +++ b/find_characters_in_book.py @@ -1,7 +1,8 @@ - +### # prend le fichier personnages.org, détermine les noms des personnages selon les entêtes orgmode, et va ensuite lire le fichier livre.org et parcourir ses entêtes qui sont les chapitres du livre. # générer un fichier csv qui listera les chapitres et les personnages en colonnes, pour compter 1 à chaque chapitre lorsque le nom du personnage est retrouvé dedans # les personnages que l'on recherche dans le livre ne sont pas mentionnés dans la ligne d'entête; mais dans les lignes entre deux entêtes, dans les corps de texte +### import csv import re import argparse @@ -16,7 +17,7 @@ args = parser.parse_args() fichier_livre = f"{args.dossier}/livre.org" # Remplacer par les chemins vers les fichiers Org-mode -fichier_personnages = f"{args.dossier}personnages.org" +fichier_personnages = f"{args.dossier}/personnages.org" # Expressions régulières pour extraire les noms des personnages, les alias et les titres des chapitres regex_personnage = r"\*\* (.*)" @@ -37,6 +38,7 @@ def extract_character_info(character_line): match_alias = re.search(regex_alias, character_line) if match_alias: aliases = [alias.strip() for alias in match_alias.group(1).split(alias_separator)] + print("aliases", aliases) return character, aliases @@ -83,7 +85,8 @@ with open(fichier_livre, 'r', encoding='utf-8') as livre, open(f"{args.dossier}/ for personnage, aliases in personnages.items(): if personnage.lower() in ligne.lower() or any(alias.lower() in ligne.lower() for alias in aliases): occurrences_chapitre[personnage] += 1 - print(chapitre,' - ',personnage,' : ', ligne) +# print(personnage, ':', alias, ' : ', ligne) +# print(chapitre,' - ',personnage,' : ', ligne) # Ajouter les occurrences du chapitre au dictionnaire global occurrences_personnages[chapitre] = occurrences_chapitre diff --git a/fanzine_generate.sh b/generate_fanzine.sh similarity index 100% rename from fanzine_generate.sh rename to generate_fanzine.sh