diff --git a/bash/harvest-perf.sh b/bash/harvest-perf.sh new file mode 100755 index 0000000..3eb35ff --- /dev/null +++ b/bash/harvest-perf.sh @@ -0,0 +1,74 @@ +#!/bin/bash +# +# Exemple de script shell d'extraction de documents (métadonnées + plein texte) +# +# Prérequis : +# apt-get install jq +# apt-get install curl +# apt-get install wcalc +# + +PAGE_SIZE=10 +ISTEX_QUERY="hypertext" +ISTEX_URI="https://api.istex.fr/document/?q=$ISTEX_QUERY&size=$PAGE_SIZE" + +# Outil JQ permettant de manipuler le JSON en ligne de commande +# http://stedolan.github.io/jq/ +JQ="jq -c -M -r" + +# Récupération de la première page pour connaître le nombre de documents +# et en déduire le nombre de page de résultats à télécharger +FIRST_PAGE=$(curl -s $ISTEX_URI) +TOTAL_DOC=$(echo $FIRST_PAGE | $JQ '.total') +TOTAL_PAGE=$(wcalc -q "ceil($TOTAL_DOC/$PAGE_SIZE) - 1") + +echo "--> Téléchargement de $TOTAL_DOC documents" + +# On récupère les pages de resultats une par une +for PAGE_N in $(seq 0 $TOTAL_PAGE) +do + + echo "--> Téléchargement de la page $PAGE_N/$TOTAL_PAGE" + FROM=$(wcalc -q "$PAGE_N.0 * $PAGE_SIZE") + URL="$ISTEX_URI&from=$FROM&output=fulltext,metadata" + PAGE=$(curl -s $URL) + NB_HITS=$(echo $PAGE | $JQ ".hits | length") + + # On récupère les différents documents (hits) de la page + for DOC_IDX in $(seq 1 $NB_HITS) + do + DOC_IDX=$(wcalc -q "$DOC_IDX - 1") + DOC=$(echo $PAGE | $JQ ".hits[$DOC_IDX]") + DOC_ISTEXID=$(echo $DOC | $JQ ".id") + DOC_FULLTEXT=$(echo $DOC | $JQ ".fulltext") + DOC_METADATA=$(echo $DOC | $JQ ".metadata") + DOC_NB_METADATA=$(echo $DOC_METADATA | $JQ ". | length") + DOC_NB_FULLTEXT=$(echo $DOC_FULLTEXT | $JQ ". | length") + + # On récupère le document dont l'istexid a été extrait + echo "--> Téléchargement du document $DOC_ISTEXID (nb meta = $DOC_NB_METADATA ; nb ft = $DOC_NB_FULLTEXT)" + + # On télécharge les métadonnées du document + for DOC_META_IDX in $(seq 1 $DOC_NB_METADATA) + do + DOC_META_IDX=$(wcalc -q "$DOC_META_IDX - 1") + URI=$(echo $DOC_METADATA | $JQ ".[$DOC_META_IDX].uri") + FILETYPE=$(echo $DOC_METADATA | $JQ ".[$DOC_META_IDX].type") + FILENAME="$DOC_ISTEXID.$FILETYPE" + curl -s $URI > $FILENAME + echo "--> Métadonnées téléchargé : $FILENAME" + done + + # On télécharge les plein textes du document + for DOC_FT_IDX in $(seq 1 $DOC_NB_FULLTEXT) + do + DOC_FT_IDX=$(wcalc -q "$DOC_FT_IDX - 1") + URI=$(echo $DOC_FULLTEXT | $JQ ".[$DOC_FT_IDX].uri") + FILETYPE=$(echo $DOC_FULLTEXT | $JQ ".[$DOC_FT_IDX].type") + FILENAME="$DOC_ISTEXID.$FILETYPE" + curl -s $URI > $FILENAME + echo "--> Plein texte téléchargé : $FILENAME" + done + + done +done diff --git a/bash/istex-api-build-queries.sh b/bash/istex-api-build-queries.sh index 6227b8b..b979ffe 100755 --- a/bash/istex-api-build-queries.sh +++ b/bash/istex-api-build-queries.sh @@ -15,6 +15,8 @@ PAGE_SIZE=10 ISTEX_QUERY="hypertext" ISTEX_URI="https://api.istex.fr/document/?q=$ISTEX_QUERY&size=$PAGE_SIZE" +# Fichier qui va stocker les requêtes (qu'on pourra en suite utiliser dans gatling) +REQ_FILE="requests.csv" # Outil JQ permettant de manipuler le JSON en ligne de commande # http://stedolan.github.io/jq/