ajout de générateur de structure, complétion de documentation, script de mise à jour du dépot de livre

This commit is contained in:
Tykayn 2024-09-06 23:21:29 +02:00 committed by tykayn
parent 60bc5ca9d0
commit ef5d038486
11 changed files with 85 additions and 5 deletions

7
Makefile Normal file
View File

@ -0,0 +1,7 @@
default: infos
infos:
./up_infos.sh
update:
./update_book.sh $BOOK_TITLE
new:
./generate_book.sh $BOOK_TITLE

View File

@ -8,9 +8,10 @@ Les fichiers orgmode générés disposent d'un identifiant unique généré alé
- python - python
- pandoc - pandoc
- matplotlib (pour les diagrammes de gantt) - matplotlib (pour les diagrammes de gantt)
- argparse
sudo apt install python pandoc python-pip sudo apt install python pandoc python-pip
pip install matplotlib pip install matplotlib argparse
## Démarrer ## Démarrer
Après avoir installé les dépendances, vous pouvez générer un dossier de nouveau livre. Attention, la génération d'un dossier supprime celui qui existait précédemment. Après avoir installé les dépendances, vous pouvez générer un dossier de nouveau livre. Attention, la génération d'un dossier supprime celui qui existait précédemment.
@ -21,7 +22,9 @@ Celui ci contiendra différents fichiers orgmode ou markdown avec une copie des
Et hop, vous obtenez un sous dossier `le_nom_du_livre` qui contient de quoi faire avancer votre histoire. Et hop, vous obtenez un sous dossier `le_nom_du_livre` qui contient de quoi faire avancer votre histoire.
# À quoi servent les différents fichiers # À quoi servent les différents fichiers
## Livre ## Livre
C'est ici que votre récit se déroule. C'est ici que votre récit se déroule. Tous les chapitres sont censés s'y trouver.
Vous pouvez mettre des commentaires au sein du texte avec des marqueurs Orgmode de cmomentaires.
Afin d'avoir une structure qui aura visuellement du sens pour l'autrice du livre, seuls les titres ayant un tag :title: seront rendus lors de l'export. Cela permet de sectionner les étapes de l'histoire sans afficher ces titres de sections dans le livre final. Afin d'avoir une structure qui aura visuellement du sens pour l'autrice du livre, seuls les titres ayant un tag :title: seront rendus lors de l'export. Cela permet de sectionner les étapes de l'histoire sans afficher ces titres de sections dans le livre final.
Votre livre peut contenir des médias, nous vous invitons à les placer dans le dossier "assets". Votre livre peut contenir des médias, nous vous invitons à les placer dans le dossier "assets".
Le dossier "inspirations" est destiné à avoir des images, des médias, des documents divers, une bibliographie, c'est toujours utile de référencer ses inspirations pour clarifier ce que l'on aimerait raconter. Le dossier "inspirations" est destiné à avoir des images, des médias, des documents divers, une bibliographie, c'est toujours utile de référencer ses inspirations pour clarifier ce que l'on aimerait raconter.
@ -41,20 +44,38 @@ Décrit les thématiques que vous souhaitez aborder et ce que vous souhaitez exp
# Les scripts # Les scripts
Permettent de transformer votre livre en produit distribuable: ebook, html, pdf, mais aussi d'avoir une meilleure vue sur votre livre avec un tableau listant automatiquement les occurences de vos personnages trouvés dans chaque chapitre ainsi qu'un diagramme montrant les superpositions d'intrigues. Voir pour cela les descriptions dans `À quoi servent les différents fichiers` Permettent de transformer votre livre en produit distribuable: ebook, html, pdf, mais aussi d'avoir une meilleure vue sur votre livre avec un tableau listant automatiquement les occurences de vos personnages trouvés dans chaque chapitre ainsi qu'un diagramme montrant les superpositions d'intrigues. Voir pour cela les descriptions dans `À quoi servent les différents fichiers`
### Génération de plan de livre
`python structure_generator.py`
Génère un plan de chapitres selon les nombres de chapitres, de sous parties, et d'objectif de mots par section donnés.
Il ne reste plus qu'à copier le texte donné dans livre.org
### Conversion du livre ### Conversion du livre
Conversion en epub, html, et pdf grâce à pandoc.
`python render_ebook.py` `python render_ebook.py`
### Statistiques ### Statistiques
`bash up_infos.sh` `bash up_infos.sh`
# Mettre à jour mon livre
Ce dépot évolue, pour profiter de ses évolutions il vous suffit de copier les scripts dans le dossier de votre livre.
`bash update_book.sh nom_du_dossier_livre`
# Tâches personnelles
On utilise par défaut des fichiers Orgmode, alors n'oublions pas de jeter un oeil à ce que l'on pourrait faire avec ce fichier `taches_nom_de_mon_livre.org`. à commencer par l'ajouter à sa liste de fichiers dans son agenda personnel.
# Développement en cours # Développement en cours
## Objectifs de rédaction en nombre de mots plus fins. ## Objectifs de rédaction en nombre de mots plus fins.
Par défaut, le script déterminant la tenue des objectifs de rédaction se base sur une valeur fixe pour tous les chapitres. Par défaut, le script déterminant la tenue des objectifs de rédaction se base sur une valeur fixe pour tous les chapitres.
Vous pouvez modifier cet objectif dans `stats_chapitres.py` puis lancer la mise à jour des informations statistiques. Vous pouvez modifier cet objectif dans `stats_chapitres.py` puis lancer la mise à jour des informations statistiques.
## Génération d'intrigues calibrées
Un script permettant de générer une suite d'intrigues découpées selon des objectifs de rédaction est prévu. Un tag ajouté aux entêtes de chapitre permet de définir des objectifs de mots.
Il permettra de définir un nombre de chapitres, scènes et séquences avec une seule commande. :target_500: définit une cible à 500 mots, :target_1200: défniit la cible à 1200. Cela permettra au générateur de statistiques d'affiner son avancée plus finement. Ce sont des indicateurs, dans la réalité les auteurs écrivent leurs chapitres avec des volumes très variables.
## Suivi de progression de la rédaction
Il est envisagé que chaque génération de mise à jour des statistiques remplisse un fichier csv de suivi daté afin de pouvoir voir sa progression quotidienne.
La génération de données statistiques peut être incluse dans une tâche cron pour ne pas avoir à faire de lancement de commande tous les jours.
# Licence # Licence
AGPLv3+ AGPLv3+

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -5,3 +5,6 @@
** sous partie 2 de 2 5-9 ** sous partie 2 de 2 5-9
* intrigue 3 4-6 * intrigue 3 4-6
** sous partie 3.1 ** sous partie 3.1
* tout 1-10
** épilogue 9-10

View File

@ -32,6 +32,11 @@ là non plus pas de titre à afficher
Dans un monde lointain, il y avait une île mystérieuse où les arbres avaient des feuilles qui brillaient comme des étoiles. Un jeune aventurier nommé Eryndor y arriva un jour, attiré par les légendes de l'île. Il découvrit un temple caché où les dieux anciens avaient laissé des secrets et des pouvoirs magiques. Dans un monde lointain, il y avait une île mystérieuse où les arbres avaient des feuilles qui brillaient comme des étoiles. Un jeune aventurier nommé Eryndor y arriva un jour, attiré par les légendes de l'île. Il découvrit un temple caché où les dieux anciens avaient laissé des secrets et des pouvoirs magiques.
*** scène d'exposition *** scène d'exposition
#+begin_comment
[2024-09-06]
On devrait mettre un peu plus d'électro swing dans cette partie.
Ce commentaire n'appraîtra pas à l'export. C'est une notre spécialement pour l'auteur.
#+end_comment
blah blah blah blah
bleh bleh
bob trouva un cristal qui lui permit de communiquer avec les esprits de la nature. Avec leur aide, il put vaincre les ténèbres qui menaçaient l'île et restaurer la lumière éternelle. L'île fut sauvée et Eryndor devint un héros légendaire. bob trouva un cristal qui lui permit de communiquer avec les esprits de la nature. Avec leur aide, il put vaincre les ténèbres qui menaçaient l'île et restaurer la lumière éternelle. L'île fut sauvée et Eryndor devint un héros légendaire.

23
structure_generator.py Normal file
View File

@ -0,0 +1,23 @@
# python script.py --number_chapters 7 --number_parts 2 --objective_words 600 --objective_chapter 1800
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--objective_words', type=int, default=500)
parser.add_argument('--objective_chapter', type=int, default=1500)
parser.add_argument('--number_chapters', type=int, default=5)
parser.add_argument('--number_parts', type=int, default=3)
args = parser.parse_args()
book_content = ''
print(args)
for i in range(args.number_chapters):
book_content += f"\n\n### Chapitre {i+1} :title:target_{args.objective_words}:"
for j in range(args.number_parts):
book_content += f"\n\n### Chapitre {i+1} - Partie {j+1} :title:target_{args.objective_words}:"
print("--------------")
print(book_content)
print("--------------")
print("vous pouvez copier cette cascade de parties de livre dans livre.org")

View File

@ -0,0 +1,4 @@
* Tâches à faire pour le livre
** TODO lister les personnages de l'histoire
** TODO Apprendre à générer les statistiques sur le livre dans le README.md
** TODO lire les fichiers d'example

0
up_infos.sh Normal file → Executable file
View File

17
update_book.sh Executable file
View File

@ -0,0 +1,17 @@
#!/bin/bash
if [ -z "$1" ]; then
echo "Erreur : Veuillez spécifier un nom de dossier de livre à mettre à jour." >&2
exit 1
fi
echo "mise à jour du dossier $1 sans modifier les contenus Org"
dossier=$1
cp *.py "$dossier/"
cp *.sh "$dossier/"
cp *.css "$dossier/"
cp README.md "$dossier/"
cp LICENSE "$dossier/"
cp Makefile "$dossier/"
echo "dossier $dossier mis à jour"

0
variables.sh Normal file
View File