Newer
Older
li-harvest-hal / README.md

li-harvest-hal

Présentation

Objectif du module :

  • Récupérer l'ensemble des notices HAL (France) pour une période de temps donnée. Ce module a quelques spécificités :
  • Un seul docObject factice en entrée, le rôle est d'initialiser les traitements.
  • Un seul docObject en sortie également. Ce docObject de sortie a une structure permettant d'enchaîner les traitements avec le module li-carto.

Fonctionnement

Le module effectue les opérations suivantes :

  • Récupération en entrée d'un docObject, ainsi que d'une callback cb.
  • Vérifier si un moissonnage avec les mêmes paramètres été déjà effectué.
  • Construire le query de recherche dans l’API Hal a partir du fichier query.json.
  • Appels à l'API pour l'interrogation/parcours des résultats.
  • Vérification des résultats et écriture sur disque des fichiers TEI-HAL.
  • Scroller les résultats de l’API Hal si le nombre des résultats est supérieur à 10K.
  • Gestion du backpressure durant l’écriture sur disque.
  • Gestion des erreurs. (quand l’API ne répond pas par exemple).

Installation

Commande d'Installation :

npm install

🚧 Note importante : la variable d'environnement $CORPUSES_ROOT doit être définie. Elle correspond au chemin du répertoire dans lequel seront stockés les fichiers moissonnés.

Vérification du fonctionnement

Commande d'exécution des tests unitaires :

npm test

Exemple d'un docObject accepté en entrée

{
corpusName: "hal",
cartoType: "conditor:pubmed",
corpusResources: "/applis/corhal/loadistex/corpus-resources",
corpusOutput: "/applis/corhal/corpusOutput"
}

Exemple d'un docObject accepté en sortie

{
corpusName: "hal",
cartoType: "conditor:pubmed",
corpusResources: "/applis/corhal/loadistex/corpus-resources",
corpusOutput: "/applis/corhal/corpusOutput",
corpusRoot: "/data/hal-20211121-to-20211121"
}

Arborescence

.
├── node_modules
│   └── ...
├── config/
│   ├── config.js           // Fichier de configuration, du proxy et url de l'api
│   │
│   └── query.json          // Les paramètres de recherche de query
├── lib/
│   └── utils.js            // Des fonctions 'utils' utilisées dans index.js
├── test
│   ├── dataset             // Ensemble des docObjects utilisés pour les tests
│   │   └── ...
│   └── run.js              // Ensemble des tests à effectuer
├── .eslintrc.json          // Configuration pour eslint
├── .gitignore
├── README.md               // Le fichier que vous lisez actuellement
├── index.js                // Script principal contenant la méthode doTheJob
└── package.json            // Fichier contenant les dépendances NPM

Le fichier query.json

Le fichier config/query.json contient l'ensemble des paramètres de recherche à utiliser pour l'interrogation de l'api HAL

{
    "fq": [""],         // Liste des filtres a utiliser pour limiter les résultats retournés.
    "fl": "",           // La liste des champs a retourner dans la recherche, séparés par ,
    "q": "",            // La requête.
    "rows": "",         // Le nombre de réponses à retourner.
    "sort": "",         // Pour trier les résultats.
    "cursorMark": "*"   // Curseur utilisé pour parcourir plusieurs milliers de résultats.  
}

Le fichier config.js

Le fichier config/config.js de configuration

{
    "halApi":"",        // L'adresse url de l'api Hal
    "maxRetry":2       // Nombre des retries en cas d'échec lors de l'interrogation de l'api HAL
}

Codes d'erreur

Code Signification Note(s)
FolderExistError Harvest folder already exist.
FetchError API-HAL request error.
NoResultFound No result found to harvest.
MissingEnvironmentVariable A required environment variable must be set