mirror of
https://forge.chapril.org/tykayn/book_generator
synced 2025-06-20 01:34:43 +02:00
init avec readme
This commit is contained in:
commit
60bc5ca9d0
26 changed files with 1955 additions and 0 deletions
63
find_characters_in_book.py
Normal file
63
find_characters_in_book.py
Normal file
|
@ -0,0 +1,63 @@
|
|||
|
||||
# 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
|
||||
|
||||
# Remplacer par les chemins vers les fichiers Org-mode
|
||||
fichier_personnages = 'personnages.org'
|
||||
fichier_livre = 'livre.org'
|
||||
|
||||
# Expressions régulières pour extraire les noms des personnages et les titres des chapitres
|
||||
regex_personnage = r"\*\* (.*)"
|
||||
regex_chapitre = r'\*\* (.+)'
|
||||
|
||||
# Dictionnaire pour stocker les occurrences de personnages dans chaque chapitre
|
||||
occurrences_personnages = {}
|
||||
|
||||
# Ouvrir le fichier personnages.org et extraire les noms des personnages
|
||||
with open(fichier_personnages, 'r', encoding='utf-8') as fichier_personnages:
|
||||
personnages = [re.sub( "\*\* ","",ligne.strip()) for ligne in fichier_personnages if re.match(regex_personnage, ligne)]
|
||||
|
||||
print('personnages: ', personnages)
|
||||
|
||||
def contains_any_of_these_words(line: str, words: list[str]) -> bool:
|
||||
for word in words:
|
||||
if word in line:
|
||||
return True
|
||||
return False
|
||||
|
||||
# Ouvrir le fichier livre.org et le fichier CSV
|
||||
with open(fichier_livre, 'r', encoding='utf-8') as livre, open('occurrences_personnages.csv', 'w', newline='', encoding='utf-8') as fichier_csv:
|
||||
content = livre.read()
|
||||
csv_writer = csv.writer(fichier_csv)
|
||||
|
||||
# Écrire les en-têtes dans le fichier CSV
|
||||
csv_writer.writerow(['Chapitre'] + personnages)
|
||||
occurrences_chapitre = {personnage: 0 for personnage in personnages}
|
||||
chapitre = '(chapitre not found)'
|
||||
|
||||
# Parcourir chaque ligne du fichier livre.org
|
||||
for ligne in content.strip().split("\n"):
|
||||
# Rechercher le titre du chapitre
|
||||
match_chapitre = re.search(regex_chapitre, ligne)
|
||||
if match_chapitre:
|
||||
chapitre = match_chapitre.group(1)
|
||||
chapitre = re.sub( ":title:", "", chapitre)
|
||||
print(chapitre)
|
||||
# Initialiser le dictionnaire d'occurrences pour chaque chapitre
|
||||
occurrences_chapitre = {personnage: 0 for personnage in personnages}
|
||||
|
||||
# Parcourir chaque personnage et rechercher son nom dans la ligne
|
||||
for personnage in personnages:
|
||||
|
||||
if personnage in ligne:
|
||||
occurrences_chapitre[personnage] += 1
|
||||
print(chapitre,' - ',personnage,' : ', ligne)
|
||||
# Ajouter les occurrences du chapitre au dictionnaire global
|
||||
occurrences_personnages[chapitre] = occurrences_chapitre
|
||||
|
||||
# Écrire les occurrences des personnages dans le fichier CSV
|
||||
for chapitre, occurrences in occurrences_personnages.items():
|
||||
csv_writer.writerow([chapitre] + [occurrences[personnage] for personnage in personnages])
|
Loading…
Add table
Add a link
Reference in a new issue