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()