archifiltre-docs icon indicating copy to clipboard operation
archifiltre-docs copied to clipboard

[FEATURE] Permettre l'interaction d'Archifiltre avec des programmes tiers

Open tledoux opened this issue 5 years ago • 5 comments

Actuellement, pour agir sur Archifiltre, il est nécessaire d'intégrer des programmes. Si l'on souhaite utiliser un programme quelconque, il serait utile de mettre en place un mécanisme d'échange d'informations réciproques.

La proposition consiste à mettre en place 2 services complémentaires :

  • un export pour action
  • un import pour prise en compte

Cas d'utilisation 1 :

Je veux transmettre au DSI un ensemble de fichiers à supprimer et récupérer leur retour une fois l'action finie

Export d'une liste de fichiers sous forme CSV et remise au DSI

"Chemin de base";"Chemin";"Type"
"D:\MonProjet";"Sous-dossier\Thumbs.db";FILE
"D:\MonProjet";"Sous-dossier\MesNotes.txt";FILE

Une fois l'opération faite le DSI renvoie un fichier CSV à prendre en compte dans Archifiltre

"Chemin de base";"Chemin";"Commande";"Argument"
"V:\MonProjet";"Sous-dossier\Thumbs.db";REMOVE_FILE;
"V:\MonProjet";"Sous-dossier\MesNotes.txt";REMOVE_FILE;

Cas d'utilisation 2 :

Je veux taguer tous mes fichiers avec leur type mime en utilisant file

Export d'une liste de fichiers sous forme CSV et fourniture à file

"Chemin de base";"Chemin";"Type"
"/d/MonProjet";"RepertoireTest";FOLDER
"/d/MonProjet";"RepertoireTest/doc1.pdf";FILE
"/d/MonProjet";"RepertoireTest/image1.jpeg";FILE

Une fois l'opération on récupère un fichier pour intégration dans Archifiltre

"Chemin de base";"Chemin";"Commande";"Argument"
"/mnt/MonProjet";"RepertoireTest/doc1.pdf";"ADD_TAG";"mime:application/pdf"
"/mnt/MonProjet";"RepertoireTest/image1.jpeg";"ADD_TAG";"mime:image/jpeg"

Le programme python ci-dessous réalise la transformation du fichier in.csv vers le fichier out.csv

import csv
import subprocess
import sys

(fileIn, fileOut) = (sys.argv[1], sys.argv[2])
with open(fileIn) as csvfile, open(fileOut, 'w') as csvOut:
    fieldnames = ['Chemin de base', 'Chemin', 'Commande', 'Argument']
    writer = csv.DictWriter(csvOut, delimiter=';',
                            quoting=csv.QUOTE_ALL,
                            fieldnames=fieldnames)
    writer.writeheader()
    for record in csv.DictReader(csvfile, delimiter=';'):
        if record['Type'] == 'FOLDER':
            continue
        filepath = '/'.join([record['Chemin de base'], record['Chemin']])
        output = subprocess.check_output(['file', '-bi', filepath])
        mimes = output.split(';', 1)
        row = {'Chemin de base': record['Chemin de base'],
               'Chemin': record['Chemin'],
               'Commande': 'ADD_TAG',
               'Argument': 'mime:' + mimes[0]}
        writer.writerow(row)

Exemples de commandes

Les commandes de réintégration pourraient comprendre :

  • ADD_FILE, REMOVE_FILE : ajout et suppression de fichier
  • ADD_FOLDER, REMOVE_FOLDER : ajout et suppression de répertoire
  • ADD_TAG : ajout d'un tag
  • ADD_COMMENT : ajout d'un commentaire

tledoux avatar Dec 02 '19 16:12 tledoux

@tledoux : Est-ce que ce comportement ne pourrait pas déjà être intégré en se basant sur l'enregistrement JSON ?

cberthou avatar Jan 06 '20 10:01 cberthou

Le problème de l'utilisation de l'enregistrement JSON est que ce dernier est variable (il est directement lié à la version d'Archifiltre avec laquelle on interagit) et qu'il est donc difficile de générer ou de modifier un tel enregistrement.

L'idée de passer par des csv intermédiaires est que l'on ne dépend plus de la version et que ces csv peuvent être générer "simplement" par des programmes ou même des humains.

tledoux avatar Jan 06 '20 12:01 tledoux

Bonjour, L'export METS (beta) est-il prévu pour être compatible avec la gestion de ce type de fichier par Octave ? J'ai essayé mais j'ai actuellement une erreur à l'import

akakeronos avatar Mar 02 '20 11:03 akakeronos

Je me rallie au commentaire de @akakeronos. J'ai essayé aujourd'hui de réimporter un SIP METS Archifiltre dans Docuteam Packer. J'ai pu résoudre certains problèmes, d'autres sont restés bloquants. L'option de passer par une transformation est faisable, mais le chemin le plus court me semble difficile à ce jour. (Archifiltre 3.1.1, Packer 5.8.0).

joelthill avatar Feb 16 '21 16:02 joelthill

J'ai eu des messages d'erreurs en utilisant l'eport METS (en béta) après avoir utilisé le "move mode" (lui aussi en béta). Est-ce que qqn peut reproduire et confirmer cette erreur? (Archifiltre 3.1.1, erreurs "METS export error - File .. cannot be found. It may have been moved or deleted" et "METS export error - An unexpected error occured")

joelthill avatar Feb 16 '21 16:02 joelthill

Bonjour, Le sujet est-il toujours d'actualité ?

Concernant l'export METS il a été désactivé dans les dernières versions d'Archifiltre, nous nous repencherons dessus en fin d'année à priori

sam-pires avatar Mar 22 '24 17:03 sam-pires

Bonjour, je viens d'échanger avec la personne en charge côté métier hier après-midi (congés!) qui me confirme qu'ils se sont effectivement réorienté vers un autre outil. vous avez donc eu tout à fait raison de fermer le ticket. Désolé pour le retard. m.s. j.

joelthill avatar Apr 10 '24 13:04 joelthill