Ci dessous un travail de mettre en graphique les liens thématiques dans le travail de thèse.
Liens consultés :
Le but est de construire un graph sur ce principe :
"""https://graphviz.org/Gallery/directed/hello.html"""
import graphviz
#librairie qui contient ce que je veux pour mettre en réseaux
g = graphviz.Digraph('G', filename='Test.gv')
#Il est possible d'appeler d'autres types de graph à partir de la librairie graphviz.
g.edge('Document1', 'Document2', label='lien - tag')
g
#g.view() permet de télécharger le fichier.
Il faut une fonction qui :
J'accède d'abord à mon repository sur github en local :
import os
repository_index = os.listdir('../Desktop/these')
print(repository_index)
['margento.md', 'tags.yml', 'ecriture.md', 'ccla.md', 'listelire.md', 'tagsold.md', 'glitch.md', 'irremediable.md', 'README', 'mcpherson.md', 'anthologie.md', 'creas.md', 'Bibliographie.pdf', 'ExamenSynthese.pdf', 'blank.md', 'medition.md', 'textepagepaysage.md', 'Articulation.pdf', 'profil.md', '.git', 'bridge.md', 'manifestepm.md', 'CreationMellet.pdf', 'LICENSE', 'pansemain.md', 'corpus.md', 'definitions.md', 'palimpseste.md', 'mcluhan.md', 'texteplastique.md']
Je veux seulement les fichiers qui ont l'extension md :
for document in os.listdir('../Desktop/these'):
if document.endswith(".md"):
print(os.path.join('../Desktop/these', document))
../Desktop/these/margento.md ../Desktop/these/ecriture.md ../Desktop/these/ccla.md ../Desktop/these/listelire.md ../Desktop/these/tagsold.md ../Desktop/these/glitch.md ../Desktop/these/irremediable.md ../Desktop/these/mcpherson.md ../Desktop/these/anthologie.md ../Desktop/these/creas.md ../Desktop/these/blank.md ../Desktop/these/medition.md ../Desktop/these/textepagepaysage.md ../Desktop/these/profil.md ../Desktop/these/bridge.md ../Desktop/these/manifestepm.md ../Desktop/these/pansemain.md ../Desktop/these/corpus.md ../Desktop/these/definitions.md ../Desktop/these/palimpseste.md ../Desktop/these/mcluhan.md ../Desktop/these/texteplastique.md
Le code est trop long, alors je vais le wrapper :
repository_index = [document for document in os.listdir('../Desktop/these') if document.endswith(".md")]
repository_index
['margento.md', 'ecriture.md', 'ccla.md', 'listelire.md', 'tagsold.md', 'glitch.md', 'irremediable.md', 'mcpherson.md', 'anthologie.md', 'creas.md', 'blank.md', 'medition.md', 'textepagepaysage.md', 'profil.md', 'bridge.md', 'manifestepm.md', 'pansemain.md', 'corpus.md', 'definitions.md', 'palimpseste.md', 'mcluhan.md', 'texteplastique.md']
Mais mettons que je souhaite un moment mettre autre chose que du markdown dedans, je veux définir une liste d'extension (pour l'instant au format texte).
extensions_tag = [".md", ".txt", ".pdf", ".py"]
repository_index = [document for document in os.listdir('../Desktop/these') if any(document.endswith(extension) for extension in extensions_tag)]
repository_index
['margento.md', 'ecriture.md', 'ccla.md', 'listelire.md', 'tagsold.md', 'glitch.md', 'irremediable.md', 'mcpherson.md', 'anthologie.md', 'creas.md', 'Bibliographie.pdf', 'ExamenSynthese.pdf', 'blank.md', 'medition.md', 'textepagepaysage.md', 'Articulation.pdf', 'profil.md', 'bridge.md', 'manifestepm.md', 'CreationMellet.pdf', 'pansemain.md', 'corpus.md', 'definitions.md', 'palimpseste.md', 'mcluhan.md', 'texteplastique.md']
Solution alternative mais que je n'aime pas trop parce que donne l'impression de ne rien construire :
import glob
print(glob.glob('../Desktop/these/*.md'))
['../Desktop/these/margento.md', '../Desktop/these/ecriture.md', '../Desktop/these/ccla.md', '../Desktop/these/listelire.md', '../Desktop/these/tagsold.md', '../Desktop/these/glitch.md', '../Desktop/these/irremediable.md', '../Desktop/these/mcpherson.md', '../Desktop/these/anthologie.md', '../Desktop/these/creas.md', '../Desktop/these/blank.md', '../Desktop/these/medition.md', '../Desktop/these/textepagepaysage.md', '../Desktop/these/profil.md', '../Desktop/these/bridge.md', '../Desktop/these/manifestepm.md', '../Desktop/these/pansemain.md', '../Desktop/these/corpus.md', '../Desktop/these/definitions.md', '../Desktop/these/palimpseste.md', '../Desktop/these/mcluhan.md', '../Desktop/these/texteplastique.md']
Deux solutions :
Je choisis la dernière option parce que cela me semble avoir du sens de rester ici pour le travail de mise en graph, de tout faire partir d'ici mais de toujours travailler avec les documents rééls du repo.
cobbaye_lu = open("../Desktop/these/tagsold.md", encoding="utf-8").read()
print(cobbaye_lu)
## Liste des Tags du repo *Les termes comme "palimpseste, média, texte, littérature, numérique" ne sont pas tagués parce qu'ils sont partout. - [female] pour la question sur les enjeux d'équité et d'inclusion - [collaboratif] pour la dimension co : cocréation, coréalisation - [ Ajouter tag ici
cobbaye = open("../Desktop/these/TagsList.md", "a")
cobbaye.seek(0) #aller au tout début du texte
cobbaye.write("Ajouter tag ici")
cobbaye.close()
Il apparaît que quand c'est du markdown, la ligne 0 n'est pas évidente, on part donc sur la solution d'encadrer les tags pour qu'ils soient reconnaissables ou les entrer comme métadonnées.
Plutôt que d'ajouter du texte dans le fichier, éditorialement, je préfère placer des tags en tant que métadonnées car moins de risque de troller le contenu textuel du document.
from importlib.metadata import version
version('wheel')
'0.34.2'
from importlib import metadata
metadata.version('pip')
list(metadata('wheel'))
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) /tmp/ipykernel_56130/1296517596.py in <module> 1 from importlib import metadata 2 metadata.version('pip') ----> 3 list(metadata('wheel')) TypeError: 'module' object is not callable
pip_metadata = metadata.metadata("pip")
list(pip_metadata)
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) /tmp/ipykernel_56130/4010954338.py in <module> 1 pip_metadata = metadata.metadata("pip") ----> 2 list(pip_metadata) TypeError: 'list' object is not callable
Clairement python n'est pas prévu pour aller modifier des fichiers aux métadonnées de base pauvres (à la différence des fichiers image et audio), donc solution :
tags = open("../Desktop/these/tags.yml", encoding="utf-8").read()
print(tags)
Algorithmes: idRameau: FRBNF119358199 label: Algorithmes, encodage uriRameau: https://data.bnf.fr/ark:/12148/cb119358199 liens: - anthologie.md - margento.md Appropriation: idRameau: FRBNF165895409 label: Appropriation, détournement uriRameau: https://data.bnf.fr/ark:/12148/cb165895409 liens: - ecriture.md - palimpseste.md - Articulation.pdf - bridge.md Archive: idRameau: FRBNF13318572 label: Archive, pérennité uriRameau: http://catalogue.bnf.fr/ark:/12148/cb13318572g liens: - creas.md - ccla.md Créativité: idRameau: FRBNF11936171 label: Créativité, génie, originalité uriRameau: http://catalogue.bnf.fr/ark:/12148/cb11936171q/ liens: - ecriture.md - Articulation.pdf - profil.md - blank.md - creas.md - ccla.md Dystopies: idRameau: FRBNF177181582 label: Dystopies uriRameau: https://data.bnf.fr/ark:/12148/cb177181582 liens: - corpus.md Écriture numérique: idRameau: label: Écriture numérique uriRameau: liens: - ExamenSynthese.pdf - definitions.md - ccla.md - medition.md - blank.md - textepagepaysage.md - texteplastique.md Édition, presse, médias: idRameau: FRBNF13318593 label: Édition, presse, médias uriRameau: http://catalogue.bnf.fr/ark:/12148/cb13318593f liens: - manifestepm.md - profil.md - creas.md Éditorialisation: idRameau: FRBNF16597433 label: Éditorialisation uriRameau: http://catalogue.bnf.fr/ark:/12148/cb16597433g.public liens: - profil.md Éducation et enseignement: idRameau: FRBNF13318807 label: Éducation et enseignement uriRameau: http://catalogue.bnf.fr/ark:/12148/cb13318807v/ Épistémologie: idRameau: FRBNF11933919 label: Épistémologie uriRameau: http://catalogue.bnf.fr/ark:/12148/cb119339193 Espace public: idRameau: FRBNF17004132 label: Espace public uriRameau: http://catalogue.bnf.fr/ark:/12148/cb170041320 liens: - profil.md - bridge.md - ccla.md Féminisme: idRameau: FRBNF11938848 label: Féminisme uriRameau: http://data.bnf.fr/ark:/12148/cb11938848m liens: - manifestepm.md - medition.md Femmes et artistes: idRameau: FRBNF11935373 label: Femmes artistes uriRameau: http://data.bnf.fr/ark:/12148/cb11935373q liens: - profil.md - creas.md Glitch: idRameau: label: Glitch, bug uriRameau: liens: - glitch.md - irremediable.md Herméneutique: idRameau: FRBNF11932017 label: Herméneutique uriRameau: http://catalogue.bnf.fr/ark:/12148/cb11932017p liens: - Articulation.pdf - creas.md Hermétisme: idRameau: FRBNF11960139 label: Hermétisme, illisibilité uriRameau: https://data.bnf.fr/ark:/12148/cb11960139d liens: - ecriture.md - palimpseste.md - irremediable.md - definitions.md - bridge.md Imaginaire: idRameau: FRBNF11932093 label: Imaginaire uriRameau: http://catalogue.bnf.fr/ark:/12148/cb11932093s/ liens : - palimpseste.md - corpus.md - irremediable.md - anthologie.md - profil.md - bridge.md Intermédialité: idRameau: FRBNF16143349 label: Intermédialité, média, remédiation uriRameau: http://catalogue.bnf.fr/ark:/12148/cb16143349w liens: - texteplastique.md - ExamenSynthese.pdf - irremediable.md - mcluhan.md - definitions.md Monde numérique: idRameau: FRBNF133328055 label: Monde numérique uriRameau: http://catalogue.bnf.fr/ark:/12148/cb133328054 liens: - definitions.md - bridge.md Palimpseste: idRameau: label: Palimpseste uriRameau: liens: - palimpseste.md - Articulation.pdf - ExamenSynthese.pdf - definitions.md - pansemain.md - blank.md Performance: idRameau: FRBNF12426417 label: Performance uriRameau: http://catalogue.bnf.fr/ark:/12148/cb12426417t liens: - ecriture.md - margento.md - blank.md - bridge.md Poésie visuelle: idRameau: FRBNF119592505 label: Poésie visuelle uriRameau: https://data.bnf.fr/ark:/12148/cb119592505 liens: - texteplastique.md - textepagepaysage.md - margento.md - creas.md Travail collaboratif: idRameau: FRBNF15008199 label: Travail collaboratif uriRameau: https://data.bnf.fr/ark:/12148/cb15008199z liens: - ccla.md - anthologie.md - bridge.md
import bios
tags = bios.read("../Desktop/these/tags.yml")
print(tags)
{'Algorithmes': {'idRameau': 'FRBNF119358199', 'label': 'Algorithmes, encodage', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb119358199', 'liens': ['anthologie.md', 'margento.md']}, 'Appropriation': {'idRameau': 'FRBNF165895409', 'label': 'Appropriation, détournement', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb165895409', 'liens': ['ecriture.md', 'palimpseste.md', 'Articulation.pdf', 'bridge.md']}, 'Archive': {'idRameau': 'FRBNF13318572', 'label': 'Archive, pérennité', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb13318572g', 'liens': ['creas.md', 'ccla.md']}, 'Créativité': {'idRameau': 'FRBNF11936171', 'label': 'Créativité, génie, originalité', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb11936171q/', 'liens': ['ecriture.md', 'Articulation.pdf', 'profil.md', 'blank.md', 'creas.md', 'ccla.md']}, 'Dystopies': {'idRameau': 'FRBNF177181582', 'label': 'Dystopies', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb177181582', 'liens': ['corpus.md']}, 'Écriture numérique': {'idRameau': None, 'label': 'Écriture numérique', 'uriRameau': None, 'liens': ['ExamenSynthese.pdf', 'definitions.md', 'ccla.md', 'medition.md', 'blank.md', 'textepagepaysage.md', 'texteplastique.md']}, 'Édition, presse, médias': {'idRameau': 'FRBNF13318593', 'label': 'Édition, presse, médias', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb13318593f', 'liens': ['manifestepm.md', 'profil.md', 'creas.md']}, 'Éditorialisation': {'idRameau': 'FRBNF16597433', 'label': 'Éditorialisation', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb16597433g.public', 'liens': ['profil.md']}, 'Éducation et enseignement': {'idRameau': 'FRBNF13318807', 'label': 'Éducation et enseignement', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb13318807v/'}, 'Épistémologie': {'idRameau': 'FRBNF11933919', 'label': 'Épistémologie', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb119339193'}, 'Espace public': {'idRameau': 'FRBNF17004132', 'label': 'Espace public', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb170041320', 'liens': ['profil.md', 'bridge.md', 'ccla.md']}, 'Féminisme': {'idRameau': 'FRBNF11938848', 'label': 'Féminisme', 'uriRameau': 'http://data.bnf.fr/ark:/12148/cb11938848m', 'liens': ['manifestepm.md', 'medition.md']}, 'Femmes et artistes': {'idRameau': 'FRBNF11935373', 'label': 'Femmes artistes', 'uriRameau': 'http://data.bnf.fr/ark:/12148/cb11935373q', 'liens': ['profil.md', 'creas.md']}, 'Glitch': {'idRameau': None, 'label': 'Glitch, bug', 'uriRameau': None, 'liens': ['glitch.md', 'irremediable.md']}, 'Herméneutique': {'idRameau': 'FRBNF11932017', 'label': 'Herméneutique', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb11932017p', 'liens': ['Articulation.pdf', 'creas.md']}, 'Hermétisme': {'idRameau': 'FRBNF11960139', 'label': 'Hermétisme, illisibilité', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb11960139d', 'liens': ['ecriture.md', 'palimpseste.md', 'irremediable.md', 'definitions.md', 'bridge.md']}, 'Imaginaire': {'idRameau': 'FRBNF11932093', 'label': 'Imaginaire', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb11932093s/', 'liens': ['palimpseste.md', 'corpus.md', 'irremediable.md', 'anthologie.md', 'profil.md', 'bridge.md']}, 'Intermédialité': {'idRameau': 'FRBNF16143349', 'label': 'Intermédialité, média, remédiation', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb16143349w', 'liens': ['texteplastique.md', 'ExamenSynthese.pdf', 'irremediable.md', 'mcluhan.md', 'definitions.md']}, 'Monde numérique': {'idRameau': 'FRBNF133328055', 'label': 'Monde numérique', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb133328054', 'liens': ['definitions.md', 'bridge.md']}, 'Palimpseste': {'idRameau': None, 'label': 'Palimpseste', 'uriRameau': None, 'liens': ['palimpseste.md', 'Articulation.pdf', 'ExamenSynthese.pdf', 'definitions.md', 'pansemain.md', 'blank.md']}, 'Performance': {'idRameau': 'FRBNF12426417', 'label': 'Performance', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb12426417t', 'liens': ['ecriture.md', 'margento.md', 'blank.md', 'bridge.md']}, 'Poésie visuelle': {'idRameau': 'FRBNF119592505', 'label': 'Poésie visuelle', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb119592505', 'liens': ['texteplastique.md', 'textepagepaysage.md', 'margento.md', 'creas.md']}, 'Travail collaboratif': {'idRameau': 'FRBNF15008199', 'label': 'Travail collaboratif', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb15008199z', 'liens': ['ccla.md', 'anthologie.md', 'bridge.md']}}
Par précaution, parce que le yaml est un langage susceptible et que le risque que j'insère des erreurs dans le document car le gérant à la main est plus important, je lance une fonction qui parse mon document pour m'alerter si des erreurs ont été comises.
import yaml
with open("../Desktop/these/tags.yml", 'r') as stream:
try:
parsed_yaml = yaml.safe_load(stream)
print(parsed_yaml)
except yaml.YAMLError as exc:
print(exc)
{'Algorithmes': {'idRameau': 'FRBNF119358199', 'label': 'Algorithmes, encodage', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb119358199', 'liens': ['anthologie.md', 'margento.md']}, 'Appropriation': {'idRameau': 'FRBNF165895409', 'label': 'Appropriation, détournement', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb165895409', 'liens': ['ecriture.md', 'palimpseste.md', 'Articulation.pdf', 'bridge.md']}, 'Archive': {'idRameau': 'FRBNF13318572', 'label': 'Archive, pérennité', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb13318572g', 'liens': ['creas.md', 'ccla.md']}, 'Créativité': {'idRameau': 'FRBNF11936171', 'label': 'Créativité, génie, originalité', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb11936171q/', 'liens': ['ecriture.md', 'Articulation.pdf', 'profil.md', 'blank.md', 'creas.md', 'ccla.md']}, 'Dystopies': {'idRameau': 'FRBNF177181582', 'label': 'Dystopies', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb177181582', 'liens': ['corpus.md']}, 'Écriture numérique': {'idRameau': None, 'label': 'Écriture numérique', 'uriRameau': None, 'liens': ['ExamenSynthese.pdf', 'definitions.md', 'ccla.md', 'medition.md', 'blank.md', 'textepagepaysage.md', 'texteplastique.md']}, 'Édition, presse, médias': {'idRameau': 'FRBNF13318593', 'label': 'Édition, presse, médias', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb13318593f', 'liens': ['manifestepm.md', 'profil.md', 'creas.md']}, 'Éditorialisation': {'idRameau': 'FRBNF16597433', 'label': 'Éditorialisation', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb16597433g.public', 'liens': ['profil.md']}, 'Éducation et enseignement': {'idRameau': 'FRBNF13318807', 'label': 'Éducation et enseignement', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb13318807v/'}, 'Épistémologie': {'idRameau': 'FRBNF11933919', 'label': 'Épistémologie', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb119339193'}, 'Espace public': {'idRameau': 'FRBNF17004132', 'label': 'Espace public', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb170041320', 'liens': ['profil.md', 'bridge.md', 'ccla.md']}, 'Féminisme': {'idRameau': 'FRBNF11938848', 'label': 'Féminisme', 'uriRameau': 'http://data.bnf.fr/ark:/12148/cb11938848m', 'liens': ['manifestepm.md', 'medition.md']}, 'Femmes et artistes': {'idRameau': 'FRBNF11935373', 'label': 'Femmes artistes', 'uriRameau': 'http://data.bnf.fr/ark:/12148/cb11935373q', 'liens': ['profil.md', 'creas.md']}, 'Glitch': {'idRameau': None, 'label': 'Glitch, bug', 'uriRameau': None, 'liens': ['glitch.md', 'irremediable.md']}, 'Herméneutique': {'idRameau': 'FRBNF11932017', 'label': 'Herméneutique', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb11932017p', 'liens': ['Articulation.pdf', 'creas.md']}, 'Hermétisme': {'idRameau': 'FRBNF11960139', 'label': 'Hermétisme, illisibilité', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb11960139d', 'liens': ['ecriture.md', 'palimpseste.md', 'irremediable.md', 'definitions.md', 'bridge.md']}, 'Imaginaire': {'idRameau': 'FRBNF11932093', 'label': 'Imaginaire', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb11932093s/', 'liens': ['palimpseste.md', 'corpus.md', 'irremediable.md', 'anthologie.md', 'profil.md', 'bridge.md']}, 'Intermédialité': {'idRameau': 'FRBNF16143349', 'label': 'Intermédialité, média, remédiation', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb16143349w', 'liens': ['texteplastique.md', 'ExamenSynthese.pdf', 'irremediable.md', 'mcluhan.md', 'definitions.md']}, 'Monde numérique': {'idRameau': 'FRBNF133328055', 'label': 'Monde numérique', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb133328054', 'liens': ['definitions.md', 'bridge.md']}, 'Palimpseste': {'idRameau': None, 'label': 'Palimpseste', 'uriRameau': None, 'liens': ['palimpseste.md', 'Articulation.pdf', 'ExamenSynthese.pdf', 'definitions.md', 'pansemain.md', 'blank.md']}, 'Performance': {'idRameau': 'FRBNF12426417', 'label': 'Performance', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb12426417t', 'liens': ['ecriture.md', 'margento.md', 'blank.md', 'bridge.md']}, 'Poésie visuelle': {'idRameau': 'FRBNF119592505', 'label': 'Poésie visuelle', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb119592505', 'liens': ['texteplastique.md', 'textepagepaysage.md', 'margento.md', 'creas.md']}, 'Travail collaboratif': {'idRameau': 'FRBNF15008199', 'label': 'Travail collaboratif', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb15008199z', 'liens': ['ccla.md', 'anthologie.md', 'bridge.md']}}
Je vérifie maintenant comment est structuré mon dictionnaire.
for key, value in parsed_yaml.items():
print(key, value)
Algorithmes {'idRameau': 'FRBNF119358199', 'label': 'Algorithmes, encodage', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb119358199', 'liens': ['anthologie.md', 'margento.md']} Appropriation {'idRameau': 'FRBNF165895409', 'label': 'Appropriation, détournement', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb165895409', 'liens': ['ecriture.md', 'palimpseste.md', 'Articulation.pdf', 'bridge.md']} Archive {'idRameau': 'FRBNF13318572', 'label': 'Archive, pérennité', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb13318572g', 'liens': ['creas.md', 'ccla.md']} Créativité {'idRameau': 'FRBNF11936171', 'label': 'Créativité, génie, originalité', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb11936171q/', 'liens': ['ecriture.md', 'Articulation.pdf', 'profil.md', 'blank.md', 'creas.md', 'ccla.md']} Dystopies {'idRameau': 'FRBNF177181582', 'label': 'Dystopies', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb177181582', 'liens': ['corpus.md']} Écriture numérique {'idRameau': None, 'label': 'Écriture numérique', 'uriRameau': None, 'liens': ['ExamenSynthese.pdf', 'definitions.md', 'ccla.md', 'medition.md', 'blank.md', 'textepagepaysage.md', 'texteplastique.md']} Édition, presse, médias {'idRameau': 'FRBNF13318593', 'label': 'Édition, presse, médias', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb13318593f', 'liens': ['manifestepm.md', 'profil.md', 'creas.md']} Éditorialisation {'idRameau': 'FRBNF16597433', 'label': 'Éditorialisation', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb16597433g.public', 'liens': ['profil.md']} Éducation et enseignement {'idRameau': 'FRBNF13318807', 'label': 'Éducation et enseignement', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb13318807v/'} Épistémologie {'idRameau': 'FRBNF11933919', 'label': 'Épistémologie', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb119339193'} Espace public {'idRameau': 'FRBNF17004132', 'label': 'Espace public', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb170041320', 'liens': ['profil.md', 'bridge.md', 'ccla.md']} Féminisme {'idRameau': 'FRBNF11938848', 'label': 'Féminisme', 'uriRameau': 'http://data.bnf.fr/ark:/12148/cb11938848m', 'liens': ['manifestepm.md', 'medition.md']} Femmes et artistes {'idRameau': 'FRBNF11935373', 'label': 'Femmes artistes', 'uriRameau': 'http://data.bnf.fr/ark:/12148/cb11935373q', 'liens': ['profil.md', 'creas.md']} Glitch {'idRameau': None, 'label': 'Glitch, bug', 'uriRameau': None, 'liens': ['glitch.md', 'irremediable.md']} Herméneutique {'idRameau': 'FRBNF11932017', 'label': 'Herméneutique', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb11932017p', 'liens': ['Articulation.pdf', 'creas.md']} Hermétisme {'idRameau': 'FRBNF11960139', 'label': 'Hermétisme, illisibilité', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb11960139d', 'liens': ['ecriture.md', 'palimpseste.md', 'irremediable.md', 'definitions.md', 'bridge.md']} Imaginaire {'idRameau': 'FRBNF11932093', 'label': 'Imaginaire', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb11932093s/', 'liens': ['palimpseste.md', 'corpus.md', 'irremediable.md', 'anthologie.md', 'profil.md', 'bridge.md']} Intermédialité {'idRameau': 'FRBNF16143349', 'label': 'Intermédialité, média, remédiation', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb16143349w', 'liens': ['texteplastique.md', 'ExamenSynthese.pdf', 'irremediable.md', 'mcluhan.md', 'definitions.md']} Monde numérique {'idRameau': 'FRBNF133328055', 'label': 'Monde numérique', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb133328054', 'liens': ['definitions.md', 'bridge.md']} Palimpseste {'idRameau': None, 'label': 'Palimpseste', 'uriRameau': None, 'liens': ['palimpseste.md', 'Articulation.pdf', 'ExamenSynthese.pdf', 'definitions.md', 'pansemain.md', 'blank.md']} Performance {'idRameau': 'FRBNF12426417', 'label': 'Performance', 'uriRameau': 'http://catalogue.bnf.fr/ark:/12148/cb12426417t', 'liens': ['ecriture.md', 'margento.md', 'blank.md', 'bridge.md']} Poésie visuelle {'idRameau': 'FRBNF119592505', 'label': 'Poésie visuelle', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb119592505', 'liens': ['texteplastique.md', 'textepagepaysage.md', 'margento.md', 'creas.md']} Travail collaboratif {'idRameau': 'FRBNF15008199', 'label': 'Travail collaboratif', 'uriRameau': 'https://data.bnf.fr/ark:/12148/cb15008199z', 'liens': ['ccla.md', 'anthologie.md', 'bridge.md']}
Test pour vérifier que je peux bien interroger des clefs spécifiques dans mon yaml. Il va me lister tout les liens existants.
file_2_tag = {}
for key, value in parsed_yaml.items():
for lien in value.get("liens", []):
print(f"{key} associé à {lien}")
Algorithmes associé à anthologie.md Algorithmes associé à margento.md Appropriation associé à ecriture.md Appropriation associé à palimpseste.md Appropriation associé à Articulation.pdf Appropriation associé à bridge.md Archive associé à creas.md Archive associé à ccla.md Créativité associé à ecriture.md Créativité associé à Articulation.pdf Créativité associé à profil.md Créativité associé à blank.md Créativité associé à creas.md Créativité associé à ccla.md Dystopies associé à corpus.md Écriture numérique associé à ExamenSynthese.pdf Écriture numérique associé à definitions.md Écriture numérique associé à ccla.md Écriture numérique associé à medition.md Écriture numérique associé à blank.md Écriture numérique associé à textepagepaysage.md Écriture numérique associé à texteplastique.md Édition, presse, médias associé à manifestepm.md Édition, presse, médias associé à profil.md Édition, presse, médias associé à creas.md Éditorialisation associé à profil.md Espace public associé à profil.md Espace public associé à bridge.md Espace public associé à ccla.md Féminisme associé à manifestepm.md Féminisme associé à medition.md Femmes et artistes associé à profil.md Femmes et artistes associé à creas.md Glitch associé à glitch.md Glitch associé à irremediable.md Herméneutique associé à Articulation.pdf Herméneutique associé à creas.md Hermétisme associé à ecriture.md Hermétisme associé à palimpseste.md Hermétisme associé à irremediable.md Hermétisme associé à definitions.md Hermétisme associé à bridge.md Imaginaire associé à palimpseste.md Imaginaire associé à corpus.md Imaginaire associé à irremediable.md Imaginaire associé à anthologie.md Imaginaire associé à profil.md Imaginaire associé à bridge.md Intermédialité associé à texteplastique.md Intermédialité associé à ExamenSynthese.pdf Intermédialité associé à irremediable.md Intermédialité associé à mcluhan.md Intermédialité associé à definitions.md Monde numérique associé à definitions.md Monde numérique associé à bridge.md Palimpseste associé à palimpseste.md Palimpseste associé à Articulation.pdf Palimpseste associé à ExamenSynthese.pdf Palimpseste associé à definitions.md Palimpseste associé à pansemain.md Palimpseste associé à blank.md Performance associé à ecriture.md Performance associé à margento.md Performance associé à blank.md Performance associé à bridge.md Poésie visuelle associé à texteplastique.md Poésie visuelle associé à textepagepaysage.md Poésie visuelle associé à margento.md Poésie visuelle associé à creas.md Travail collaboratif associé à ccla.md Travail collaboratif associé à anthologie.md Travail collaboratif associé à bridge.md
En prévision d'un graph selon le principe inversé de mon modèle (pour voir la présence de mes tags dans mes documents), je prépare un dictionnaire qui m'organise les tags par documents.
for key, value in parsed_yaml.items():
for lien in value.get("liens", []):
if lien not in file_2_tag:
file_2_tag[lien] = [key]
else:
file_2_tag[lien].append(key)
print(file_2_tag)
{'anthologie.md': ['Algorithmes', 'Imaginaire', 'Travail collaboratif'], 'margento.md': ['Algorithmes', 'Performance', 'Poésie visuelle'], 'ecriture.md': ['Appropriation', 'Créativité', 'Hermétisme', 'Performance'], 'palimpseste.md': ['Appropriation', 'Hermétisme', 'Imaginaire', 'Palimpseste'], 'Articulation.pdf': ['Appropriation', 'Créativité', 'Herméneutique', 'Palimpseste'], 'bridge.md': ['Appropriation', 'Espace public', 'Hermétisme', 'Imaginaire', 'Monde numérique', 'Performance', 'Travail collaboratif'], 'creas.md': ['Archive', 'Créativité', 'Édition, presse, médias', 'Femmes et artistes', 'Herméneutique', 'Poésie visuelle'], 'ccla.md': ['Archive', 'Créativité', 'Écriture numérique', 'Espace public', 'Travail collaboratif'], 'profil.md': ['Créativité', 'Édition, presse, médias', 'Éditorialisation', 'Espace public', 'Femmes et artistes', 'Imaginaire'], 'blank.md': ['Créativité', 'Écriture numérique', 'Palimpseste', 'Performance'], 'corpus.md': ['Dystopies', 'Imaginaire'], 'ExamenSynthese.pdf': ['Écriture numérique', 'Intermédialité', 'Palimpseste'], 'definitions.md': ['Écriture numérique', 'Hermétisme', 'Intermédialité', 'Monde numérique', 'Palimpseste'], 'medition.md': ['Écriture numérique', 'Féminisme'], 'textepagepaysage.md': ['Écriture numérique', 'Poésie visuelle'], 'texteplastique.md': ['Écriture numérique', 'Intermédialité', 'Poésie visuelle'], 'manifestepm.md': ['Édition, presse, médias', 'Féminisme'], 'glitch.md': ['Glitch'], 'irremediable.md': ['Glitch', 'Hermétisme', 'Imaginaire', 'Intermédialité'], 'mcluhan.md': ['Intermédialité'], 'pansemain.md': ['Palimpseste']}
On se rappelle ce que je veux tester comme graphique :
import graphviz
#bibli qui contient ce que je veux pour mettre en réseaux
g = graphviz.Digraph('G', filename='Test.gv')#si je fais le g.view, permet de définir le nom du fichier à exporter
g.edge('Document1', 'Document2', label='lien - tag')
g
Je vérifie si le graphique fonctionne avec mon dictionnaire et parvient à me créer les bulles correspondants aux documents qui ont des tags.
graphique = graphviz.Digraph(filename="GraphThese.gv")
for document in file_2_tag:
graphique.node(document)
graphique
Maintenant la fonction qui va me créer les liens entre mes bulles selon les tags en supprimant les doublons.
already_done = [] #créé une base de données des edges
for key, value in parsed_yaml.items():
liens = value.get("liens",[])
if len(liens) > 1:
for lien1 in liens:
for lien2 in liens:
unite = tuple(sorted([lien1, lien2, key]))
if lien1 != lien2 and unite not in already_done:
graphique.edge(lien1, lien2, label = key, arrowhead=None)
already_done.append(unite)
graphique
graphique.view()
'GraphThese.gv.pdf'
graphique2 = graphviz.Digraph('unix', filename='unix.gv',
node_attr={'color': 'lightblue2', 'style': 'filled', 'shape':'star'})
graphique2.attr(size='6,6')
for document in file_2_tag:
graphique2.node(document)
already_done = [] #créé une base de données des edges
for key, value in parsed_yaml.items():
liens = value.get("liens",[])
if len(liens) > 1:
for lien1 in liens:
for lien2 in liens:
unite = tuple(sorted([lien1, lien2, key]))
if lien1 != lien2 and unite not in already_done:
graphique2.edge(lien1, lien2, label = key, arrowhead=None)
already_done.append(unite)
graphique2
graphique2.view()
'unix.gv.pdf'
Maintenant je veux avoir des informations sur la popularité de mes tags au sein de mes ressources.
graphiqueI = graphviz.Digraph(filename="GraphI.gv")
for document in parsed_yaml:
graphiqueI.node(document)
graphiqueI
print(f"{len(parsed_yaml.keys())} tags dans mon yaml")
# Si je veux créer un index :
#for nombre, tag in enumerate(parsed_yaml):
#print(nombre, tag)
23 tags dans mon yaml
Pour savoir combien de fichiers sont associés par tag : il faut que je restructure mon dictionnaire.
Test avorté de la solution GitPython pour des raisons sentimentales et techniques.
#Je dois créer un objet git.Repo pour représenter mon repository
from git import Repo
repo = Repo("../Desktop/these")#chemin vers mon repository
assert not repo.bare
repo.config_reader() #avoir une configuration lecteur pour read-only access
with repo.config_writer(): #une configuration auteur pour changer la configuration
pass #vérifier les releases et les locks
cloned_repo = repo.clone()