up export and find characters aliases
This commit is contained in:
parent
addf0ca546
commit
c6c85f4737
|
@ -10,36 +10,46 @@ fichier_org_copie = "livre_org_copie.org"
|
||||||
|
|
||||||
# Expression régulière pour extraire les entêtes des sections
|
# Expression régulière pour extraire les entêtes des sections
|
||||||
regex_entete = r'\*+ (.*)'
|
regex_entete = r'\*+ (.*)'
|
||||||
|
regex_tags = r'(\:.*\:)'
|
||||||
# Expression régulière pour extraire les blocs de commentaires
|
# Expression régulière pour extraire les blocs de commentaires
|
||||||
regex_comment = r'#\+BEGIN\_COMMENT' + r'(.*?)' + r'#\+END\_COMMENT'
|
regex_comment = r'#\+BEGIN\_COMMENT' + r'(.*?)' + r'#\+END\_COMMENT'
|
||||||
|
|
||||||
print("retraitement du livre avant son export")
|
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
|
# Créer une copie du fichier Org
|
||||||
with open(fichier_org, "r") as fichier:
|
with open(fichier_org, "r") as fichier:
|
||||||
contenu_org = fichier.read()
|
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:
|
# 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)
|
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)
|
|
||||||
|
|
||||||
# Supprimer les blocs de commentaires
|
print("lignes sans modifier le livre orgmode")
|
||||||
contenu_org = re.sub(regex_comment, '', contenu_org, flags=re.DOTALL)
|
show_lines(contenu_org)
|
||||||
# Effacer toutes les occurences de ":title:"
|
|
||||||
contenu_org = re.sub(r":title:", "", contenu_org)
|
|
||||||
|
|
||||||
# Compter le nombre de lignes du fichier modifié
|
print("Supprimer les tags des entêtes des sections")
|
||||||
nb_lignes_modifie = len(contenu_org.splitlines())
|
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
|
print("Supprimer les blocs de commentaires")
|
||||||
nb_lignes_supprimees = nb_lignes_origine - nb_lignes_modifie
|
contenu_org = re.sub(regex_comment, '', contenu_org, flags=re.DOTALL)
|
||||||
print(f"Nombre de lignes supprimées avant l'export de la copie : {nb_lignes_supprimees}")
|
|
||||||
|
# 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:
|
with open(style_css, "r") as fichier:
|
||||||
contenu_css = fichier.read()
|
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
|
# Écrire la copie du fichier Org
|
||||||
with open(fichier_org_copie, "w") as fichier:
|
with open(fichier_org_copie, "w") as fichier:
|
||||||
fichier.write(contenu_org)
|
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
|
# Afficher les messages de console du subprocess
|
||||||
print(process.stdout)
|
print(process.stdout)
|
||||||
print(process.stderr)
|
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)
|
||||||
|
|
|
@ -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.
|
# 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
|
# 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
|
# 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 csv
|
||||||
import re
|
import re
|
||||||
import argparse
|
import argparse
|
||||||
|
@ -16,7 +17,7 @@ args = parser.parse_args()
|
||||||
fichier_livre = f"{args.dossier}/livre.org"
|
fichier_livre = f"{args.dossier}/livre.org"
|
||||||
|
|
||||||
# Remplacer par les chemins vers les fichiers Org-mode
|
# 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
|
# Expressions régulières pour extraire les noms des personnages, les alias et les titres des chapitres
|
||||||
regex_personnage = r"\*\* (.*)"
|
regex_personnage = r"\*\* (.*)"
|
||||||
|
@ -37,6 +38,7 @@ def extract_character_info(character_line):
|
||||||
match_alias = re.search(regex_alias, character_line)
|
match_alias = re.search(regex_alias, character_line)
|
||||||
if match_alias:
|
if match_alias:
|
||||||
aliases = [alias.strip() for alias in match_alias.group(1).split(alias_separator)]
|
aliases = [alias.strip() for alias in match_alias.group(1).split(alias_separator)]
|
||||||
|
print("aliases", aliases)
|
||||||
|
|
||||||
return character, 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():
|
for personnage, aliases in personnages.items():
|
||||||
if personnage.lower() in ligne.lower() or any(alias.lower() in ligne.lower() for alias in aliases):
|
if personnage.lower() in ligne.lower() or any(alias.lower() in ligne.lower() for alias in aliases):
|
||||||
occurrences_chapitre[personnage] += 1
|
occurrences_chapitre[personnage] += 1
|
||||||
print(chapitre,' - ',personnage,' : ', ligne)
|
# print(personnage, ':', alias, ' : ', ligne)
|
||||||
|
# print(chapitre,' - ',personnage,' : ', ligne)
|
||||||
# Ajouter les occurrences du chapitre au dictionnaire global
|
# Ajouter les occurrences du chapitre au dictionnaire global
|
||||||
occurrences_personnages[chapitre] = occurrences_chapitre
|
occurrences_personnages[chapitre] = occurrences_chapitre
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue