Ce script permet de mettre en place un système qui:
- Organise aléatoirement une liste d'entrées (textes, images, sons) une fois au début d'un cycle
- Publie une entrée par jour selon cet ordre prédéfini
- Après 120 jours (fin du cycle), réorganise aléatoirement les entrées et recommence
Assurez-vous d'avoir Python 3.6+ installé et les dépendances requises:
pip install jinja2 beautifulsoup4 requests
schedule.py
- Le nouveau script qui gère la planification du contenuscripts/scrape.py
- Script existant pour récupérer du contenu (inchangé)docs/manifest.json
- Fichier contenant toutes les ressources disponiblesdocs/schedule.json
- Nouveau fichier qui stocke la planification des publicationsdocs/index.html
- Fichier généré contenant l'entrée du jour
Utilisez le script scrape.py
comme auparavant pour récupérer du contenu:
python scripts/scrape.py URL1,URL2,URL3 --output-dir docs
python schedule.py
Ce script:
- Crée un nouveau fichier
schedule.json
lors de la première exécution - Organise aléatoirement les entrées (textes, images, sons)
- Génère le contenu du jour dans
index.html
Configurez une tâche cron pour exécuter le script tous les jours:
# Exécuter tous les jours à minuit
0 0 * * * cd /chemin/vers/votre/projet && python schedule.py
# Réinitialiser la planification (crée un nouveau cycle aléatoire)
python schedule.py --reset
# Générer le contenu d'un jour spécifique
python schedule.py --force-day 15
# Filtrer les textes par longueur
python schedule.py --min-text-length 100 --max-text-length 500
# Utiliser des délimiteurs pour extraire des portions de texte
python schedule.py --delimiter "***"
# Définir une longueur de cycle personnalisée (nombre de jours par cycle)
python schedule.py --cycle-length 60
Tout comme le script build.py
original, le nouveau script schedule.py
permet de filtrer les textes de deux façons:
-
Par délimiteur - Extrait du texte entre deux délimiteurs identiques:
***Ceci est le texte qui sera extrait.***
-
Par longueur - Sélectionne les textes dont la longueur est comprise entre un minimum et un maximum:
python schedule.py --min-text-length 100 --max-text-length 500
Ces options permettent de contrôler précisément les textes qui seront inclus dans la planification. Si un texte contient le délimiteur spécifié, seule la partie entre les délimiteurs sera utilisée. Sinon, le texte entier sera utilisé s'il respecte les contraintes de longueur.
-
Le script vérifie si un fichier
schedule.json
existe:- Si non, il en crée un nouveau avec des entrées organisées aléatoirement
- Si oui, il utilise la planification existante
-
Il calcule le jour actuel dans le cycle en fonction de la date de début et de la longueur du cycle
-
Si c'est le début d'un nouveau cycle, il:
- Sauvegarde l'ancien cycle dans l'historique
- Mélange à nouveau les entrées
- Met à jour la date de début du cycle
-
Il génère le contenu du jour en utilisant l'entrée correspondante
-
Pour maintenir la planification entre les jours, les informations sont stockées dans
schedule.json
Le script évite les doublons de texte dans un même cycle:
- Chaque texte n'est utilisé qu'une seule fois si possible
- Si moins de textes uniques sont disponibles que la longueur du cycle:
- Le script affiche un avertissement
- Il réutilise certains textes mais avec des combinaisons image/audio différentes
- Il essaie de maximiser la diversité des combinaisons
Cette approche garantit une variété maximale tout en respectant la contrainte de la longueur du cycle configurée.