.ONESHELL:
SHELL = /usr/bin/bash
PYTHON_ENV = .istex-enrich-monitoring-env
REQ_FILE = ./script/lodex-export/requirements.txt
# Définir une variable pour le chemin du fichier de mapping
MAPPING_FILE = /tmp/loaded-corpus-mapping.json
# Définir une variable pour les fichiers JSONL des données
RECORD_FILES = ./data/records/*.jsonl
#
# INSTALLATION
#
# Créer un environnement Python et installer les dépendances
setup:
python3 -m venv $(PYTHON_ENV)
source $(PYTHON_ENV)/bin/activate && pip install -r $(REQ_FILE)
#
# IMPORT
#
# Récupérer les données statistiques depuis l'API Istex
fetch-api-istex:
echo "Récupération des données depuis l'API Istex"
# Récupérer les données de l'instance loaded corpus pour créer un mapping identifiant corpus => ARK
fetch-loaded-corpus:
curl "https://loaded-corpus.data.istex.fr/api/export/jsonallvalue?sortDir=ASC" | make -s mapping-corpus-ark > $(MAPPING_FILE)
#
# TRAITEMENT DES DONNÉES
#
# Nettoyer les clés JSON pour qu'elles soient compatibles avec Lodex (remplacement des '.' par des '-')
lodex-clean-json-keys:
jq 'walk(if type == "object" then with_entries(.key = (.key | gsub("[.]"; "-"))) else . end)' -c
# Créer un dictionnaire {"identifiant corpus": "ARK"} à partir des données loaded-corpus
mapping-corpus-ark:
jq '[.[] | .uri as $$ark | .fields[] | select(.name == "JP7t") | { (.value): $$ark}] | reduce .[] as $$elem ({}; . * $$elem)'
# Fusionner les données loaded corpus avec les données existantes
merge-loaded-corpus-data:
jq -Scs '.[0] as $$mapping | .[1:] | map(.["corpus_ark"] = $$mapping[.corpus]) | .[]'
#
# EXPORT
#
# Exporter toutes les données (Excel et Lodex)
export-all: export-excel export-lodex
# Exporter les données pour Excel (fusionner les fichiers JSONL en un seul tableau JSON)
export-excel:
cat $(RECORD_FILES) | jq -sc '.' > ./excel/data.json
# Exporter les données pour Lodex (compiler les données par corpus ; aligner chaque ressource avec loaded corpus)
export-lodex: fetch-loaded-corpus
source $(PYTHON_ENV)/bin/activate
{ cat $(MAPPING_FILE) ; cat $(RECORD_FILES) | ./script/lodex-export/lodex-export.py; } \
| make -s merge-loaded-corpus-data \
| make -s lodex-clean-json-keys > ./lodex/data.jsonl
.PHONY: setup fetch-api-istex fetch-loaded-corpus lodex-clean-json-keys mapping-corpus-ark merge-loaded-corpus-data export-all export-excel export-lodex