#!/usr/bin/env bash
#
# Shell d'extraction de documents (métadonnées + plein texte) avec mesure
# de performance (temps d'execution, mesure du trafic / vitesse réseau)
#
#
#
# Prérequis :
# apt-get install jq
# apt-get install curl
# apt-get install wcalc
#
URL="$1"
if [ -z "$URL" ]; then
URL="https://api.istex.fr"
fi
PAGE_SIZE=10
ISTEX_QUERY="degrowth%20AND%20ecology"
ISTEX_URI="$URL/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')
export TOTAL_OBJDOC="$TOTAL_DOC"
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
seq 1 $NB_HITS | parallel --gnu "./get_docs.sh {} $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)"
#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].extension")
#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].extension")
#FILENAME="$DOC_ISTEXID.$FILETYPE"
#curl -s $URI > $FILENAME
#echo "--> Plein texte téléchargé : $FILENAME"
#done
#done
done