diff --git a/SOAP/WosClose.sh b/SOAP/WosClose.sh
index 35e7afc..ba860a3 100755
--- a/SOAP/WosClose.sh
+++ b/SOAP/WosClose.sh
@@ -4,12 +4,12 @@
# Initialisation des variables pour les options
programme=$(basename $0)
substitut=$(echo $programme | sed 's/./ /g')
-version='1.2.2'
-modif='14/03/2022'
+version='1.3.1'
+modif='25/07/2022'
function usage
{
-echo "Usage : $programme -s sid [ -c cookies ] "
+echo "Usage : $programme -s sid [ -j cookie_jar ] "
echo " $programme -h "
}
@@ -19,14 +19,14 @@
Usage
=====
- $programme -s sid [ -c cookies.txt ]
+ $programme -s sid [ -j cookie_jar ]
$programme -h
Options
=======
- -c indique le nom du fichier qui recevra les cookies (“cookies.txt”
- par défaut)
-h affiche cette aide
+ -j indique le nom du fichier qui recevra les cookies (“cookies.txt”
+ par défaut)
-s indique le jeton d’authentification “SID” obtenu avec le programme
d’authentification à l'API WoS
@@ -47,11 +47,11 @@
declare -a liste
# Options
-while getopts c:hn:o:q:r:s: i
+while getopts hj:s: i
do
case $i in
- c) cookie=$OPTARG;;
h) aide;;
+ j) cookiejar=$OPTARG;;
s) sid=$OPTARG;;
\?) echo >&2
usage >&2
@@ -69,9 +69,9 @@
exit 2
fi
-if [[ -z $cookie ]]
+if [[ -z $cookiejar ]]
then
- cookie='cookies.txt'
+ cookiejar='cookies.txt'
fi
# Vérification de la présence des programmes
@@ -105,7 +105,7 @@
EOT
-curl -X POST -d @close$$.xml -b $cookie -c $cookie -v 'http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl' \
+curl -X POST -d @close$$.xml -b $cookiejar -c $cookiejar -v 'http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate?wsdl' \
-H "Cookie: SID=$sid" 2> $err | xmllint -format - > $out
msg=$(perl -ne 'print "$1" if m|(.+?)|;' $out)
diff --git a/SOAP/WosConnect.sh b/SOAP/WosConnect.sh
index 9c55415..fac1de6 100755
--- a/SOAP/WosConnect.sh
+++ b/SOAP/WosConnect.sh
@@ -3,12 +3,12 @@
# Initialisation des variables pour les options
programme=$(basename $0)
-version='1.1.3'
-modif='14/03/2022'
+version='1.2.1'
+modif='25/07/2022'
function usage
{
-echo "Usage : $programme -u utilisateur [ -c fichier_cookies ]"
+echo "Usage : $programme -u utilisateur [ -j cookie_jar ]"
echo " $programme -h "
}
@@ -18,14 +18,14 @@
Usage
=====
- $programme -u utilisateur [ -c cookies.txt ]
+ $programme -u utilisateur [ -j cookie_jar ]
$programme -h
Options
=======
- -c indique le nom du fichier qui recevra les cookies (“cookies.txt”
- par défaut)
-h affiche cette aide
+ -j indique le nom du fichier qui recevra les cookies (“cookies.txt”
+ par défaut)
-u indique le nom de l’utilisateur (login). Le mot de passe ne devant
pas être en ligne de commande, il sera demandé par le programme
@@ -43,11 +43,11 @@
}
# Options
-while getopts c:hu: i
+while getopts hj:u: i
do
case $i in
- c) cookie=$OPTARG;;
h) aide;;
+ j) cookiejar=$OPTARG;;
u) user=$OPTARG;;
\?) echo >&2
usage >&2
@@ -65,9 +65,9 @@
exit 1
fi
-if [[ -z $cookie ]]
+if [[ -z $cookiejar ]]
then
- cookie='cookies.txt'
+ cookiejar='cookies.txt'
fi
# Vérification de la présence des programmes
@@ -112,7 +112,7 @@
EOT
-curl -X POST -d @connect$$.xml -c $cookie -v http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate \
+curl -X POST -d @connect$$.xml -c $cookiejar -v http://search.webofknowledge.com/esti/wokmws/ws/WOKMWSAuthenticate \
-H "Authorization: Basic $auth" 2> $err | xmllint -format - > $out
sid=$(perl -ne 'print "$1" if m|(\w+)|;' $out)
diff --git a/SOAP/WosQuery.sh b/SOAP/WosQuery.sh
index a09d0dd..9e5326e 100755
--- a/SOAP/WosQuery.sh
+++ b/SOAP/WosQuery.sh
@@ -4,13 +4,13 @@
# Initialisation des variables pour les options
programme=$(basename $0)
substitut=$(echo $programme | sed 's/./ /g')
-version='1.2.4'
-modif='22/07/2022'
+version='1.2.5'
+modif='25/07/2022'
function usage
{
echo "Usage : $programme -s sid -q requête [ -p (début:fin|[124]week) ] "
-echo " $substitut [ -b [WOS:]base ]* [ -f champs ]* [ -t CH:(A|D)[,CH:(A|D)]* ] "
+echo " $substitut [ -b [WOS:]base ]* [ -f champs ]* [ -t CH:(A|D) ] "
echo " $substitut [ -n notices ] [ -j cookie_jar ] [ -i ]"
echo " $programme -h "
}
@@ -23,7 +23,7 @@
=====
$programme -s sid -q requête [ -p (début:fin|[124]week) ]
$substitut [ -b [WOS:]base ]* [ -f champs ]* [ -t CH:[AD] ]
- $substitut [ -n notices ] [ -c cookies.txt ] [ -i ]
+ $substitut [ -n notices ] [ -j cookie_jar ] [ -i ]
$programme -h
Options principales
@@ -47,6 +47,7 @@
-i ajoute dans la réponse de l’API la liste des identifiants WoS des
notices retournées (5 par défaut ou valeur de l’option “-n”)
-j indique le nom du fichier qui recevra les cookies (“cookies.txt”
+ paar défaut)
-n indique le nombre de notices, entre 1 et 100, à retourner (5 par
défaut)
-t trie les résultats sur un champ (nom abrégé à 2 majuscules) de
@@ -69,7 +70,7 @@
# Déclaration explicite des tableaux “bases”, “champs” et “tri”
declare -a bases
declare -a champs
-declare -a tri
+#declare -a tri # Pour l’instant, on met un seul argument
# Options
while getopts b:f:hij:n:p:q:r:s:t: i
@@ -84,7 +85,8 @@
p) span=$OPTARG;;
q) query=$OPTARG;;
s) sid=$OPTARG;;
- t) tri+=($OPTARG);;
+# t) tri+=($OPTARG);;
+ t) tri=$OPTARG;;
\?) echo >&2
usage >&2
exit 1;;
diff --git a/SOAP/WosRetrieve.sh b/SOAP/WosRetrieve.sh
index 97ce337..bb25168 100755
--- a/SOAP/WosRetrieve.sh
+++ b/SOAP/WosRetrieve.sh
@@ -4,13 +4,14 @@
# Initialisation des variables pour les options
programme=$(basename $0)
substitut=$(echo $programme | sed 's/./ /g')
-version='1.3.6'
-modif='14/03/2022'
+version='1.5.1'
+modif='25/07/2022'
function usage
{
echo "Usage : $programme -s sid -q queryId -n nb_notices -r résultat "
-echo " $substitut [ -o offset ] [ -t taille ] [ -c cookies ] "
+echo " $substitut [ -f champs ]* [ -t CH:(A|D) ] [ -i ] "
+echo " $substitut [ -o offset ] [ -T taille ] [ -j cookie_jar ] "
echo " $programme -h "
}
@@ -21,14 +22,19 @@
Usage
=====
$programme -s sid -q queryId -n nb_notices -r résultat
- $substitut [ -o offset ] [ -t taille ] [ -c cookies.txt ]
+ $substitut [ -f champs ]* [ -t CH:(A|D) ] [ -i ]
+ $substitut [ -o offset ] [ -t taille ] [ -j cookie_jar ]
$programme -h
Options
=======
- -c indique le nom du fichier qui recevra les cookies (“cookies.txt”
- par défaut)
+ -f limite les champs présents dans les notices téléchargées. Cette
+ option est répétitive (par défaut, tous les champs sont présents)
-h affiche cette aide
+ -i ajoute dans la réponse de l’API la liste des identifiants WoS des
+ notices retournées (5 par défaut ou valeur de l’option “-n”)
+ -j indique le nom du fichier qui recevra les cookies (“cookies.txt”
+ par défaut)
-n indique le nombre total de notices WoS à télécharger (la valeur
maximale est donnée par le programme envoyant la requête à l’API
WoS)
@@ -41,7 +47,9 @@
le tiret “-” comme argument de l’option)
-s indique le jeton d’authentification “SID” obtenu avec le programme
d’authentification à l'API WoS
- -t indique le nombre de notices à télécharger à chaque itération
+ -t trie les résultats sur un champ (nom abrégé à 2 majuscules) de
+ façon croissante (A) ou décroissante (D) ou par pertinence (RS)
+ -T indique le nombre de notices à télécharger à chaque itération
(100 par défaut)
N.B. : la variable d‘environnement WOS_DELAY permet de modifier le délai
@@ -59,20 +67,32 @@
then
rm -f retrieve$$.xml
fi
+if [[ -f tmpWos$$.xml ]]
+then
+ rm -f tmpWos$$.xml
+fi
}
+# Déclaration explicite des tableaux “champs” et “tri”
+declare -a champs
+# declare -a tri
+
# Options
-while getopts c:hn:o:q:r:s:t: i
+while getopts f:hij:n:o:q:r:s:t:T: i
do
case $i in
- c) cookie=$OPTARG;;
+ f) champs+=($OPTARG);;
h) aide;;
+ i) recid=1;;
+ j) cookiejar=$OPTARG;;
n) nb=$OPTARG;;
o) offset=$OPTARG;;
q) qid=$OPTARG;;
r) sortie=$OPTARG;;
s) sid=$OPTARG;;
- t) taille=$OPTARG;;
+ t) tri=$OPTARG;;
+# t) tri+=($OPTARG);;
+ T) taille=$OPTARG;;
\?) echo >&2
usage >&2
exit 1;;
@@ -94,9 +114,9 @@
sortie='/dev/fd/1'
fi
-if [[ -z $cookie ]]
+if [[ -z $cookiejar ]]
then
- cookie='cookies.txt'
+ cookiejar='cookies.txt'
fi
if [[ ! $nb =~ ^[1-9][0-9]*$ ]]
@@ -113,8 +133,7 @@
then
if [[ $offset -gt $nb ]]
then
- echo "Erreur : offset supérieur au nombre de notices" >&2
- exit 2
+ echo "Attention : offset supérieur au nombre de notices" >&2
fi
else
echo "Erreur : l’offset (option “-o”) doit être un entier positif non nul" >&2
@@ -147,7 +166,7 @@
trap nettoie HUP INT QUIT TERM
# Définition des fichiers de sortie
-out='WosApiOut.txt'
+out='WosApiOut.xml'
err='WosApiErr.txt'
# fonction “cherche”
@@ -164,18 +183,121 @@
$1
$2
+EOT
+
+# Cas de l'option “-t”
+# Valeurs possibles : AU, CF, CG, CW, CV, LC, LD, PG, PY, RS, SO, TC et VL
+if [[ -n $tri ]]
+then
+ if [[ ! $tri =~ ^(AU|CF|CG|CW|CV|LC|LD|PG|PY|SO|VL):[AD]$ && ! $tri =~ ^(RS|TC):D$ ]]
+ then
+ echo "Erreur : argument incorrect pour pour l’option “-t”" >&2
+ exit 4
+ fi
+ nom=${tri%%:*}
+ sens=${tri#*:}
+ echo " " >> retrieve$$.xml
+ echo " $nom" >> retrieve$$.xml
+ echo " $sens" >> retrieve$$.xml
+ echo " " >> retrieve$$.xml
+fi
+
+# Cas de l’option “-f”
+# Valeurs possibles : UID, pub_info, names, full_name, titles, contributor,
+# language, doctypes, conf_title, conf_date, conf_host, conf_locations, sponsors,
+# keywords, keywords_plus, abstract, addresses, organizations, reprint_contact,
+# email_addr, grant, fund_text, refs, address_spec, headings, subjects, identifiers,
+# page, book_chapters et ids
+if [[ ${#champs[@]} -gt 0 ]]
+then
+ ns='Fields'
+ echo " " >> retrieve$$.xml
+ echo " WOS" >> retrieve$$.xml
+ for item in ${champs[@]}
+ do
+ while [[ -n $item ]]
+ do
+ deb=${item%%,*}
+ fin=${item#*,}
+ echo " $deb" >> retrieve$$.xml
+ if [[ $deb = $fin ]]
+ then
+ item=""
+ else
+ item=$fin
+ fi
+ done
+ done
+ echo " " >> retrieve$$.xml
+else
+ ns='FullRecord'
+fi
+
+# Cas de l’option “-i”
+if [[ $recid -gt 0 ]]
+then
+ echo " " >> search$$.xml
+fi
+
+cat << EOT >> retrieve$$.xml
+
EOT
-curl -X POST -d @retrieve$$.xml -b $cookie -c $cookie -v 'http://search.webofknowledge.com/esti/wokmws/ws/WokSearch?wsdl' \
+curl -X POST -d @retrieve$$.xml -b $cookiejar -c $cookiejar -v 'http://search.webofknowledge.com/esti/wokmws/ws/WokSearch?wsdl' \
-H "Cookie: SID=$sid" 2> $err | xmllint -format - > $out 2>> $err
return $?
}
+# fonction verifie
+function verifie
+{
+perl -ne 'if (/]*>(.+)/) {
+ $r = $1;
+ $r =~ s|.*||;
+ $r =~ s/<//go;
+ $r =~ s/&(\w+;)/&$1/go;
+ $r =~ s||\n|go;
+ $r =~ s| tmpWos$$.xml
+
+nr=$(cat tmpWos$$.xml | wc -l)
+
+(echo "" ; cat tmpWos$$.xml; echo "") |
+ xmllint -format - > /dev/null 2>> $err
+rc=$?
+
+rm -f tmpWos$$.xml
+
+if [[ $rc -gt 0 ]]
+then
+ echo ""
+ echo "Erreur : la réponse de l‘API est incorrecte [code xmllint = $rc]" >&2
+ echo " $nr / $2 notices déchargées"
+ nettoie
+ exit 4
+elif [[ $nr -lt $2 ]]
+then
+ echo ""
+ echo "Erreur : la réponse de l‘API est incomplète " >&2
+ echo " $nr / $2 notices déchargées"
+ nettoie
+ exit 4
+fi
+}
+
# Itération
max=${taille:-100}
delai=${WOS_DELAY:-1}
@@ -208,16 +330,22 @@
SECONDS=0
rc=$(cherche "$offset" "$max")
+ rs=$(perl -e 'print [(stat($ARGV[0]))]->[7]' $out)
+
+ printf " \r" >&2
if [[ $rc -gt 0 ]]
then
echo ""
echo "Erreur : la réponse de l‘API est incorrecte [code xmllint = $rc]" >&2
echo ""
+ nettoie
exit 4
fi
-
- printf " \r" >&2
+ if [[ $rs -gt 12000000 ]]
+ then
+ verifie "$out" "$max"
+ fi
rc=$(grep -c '' $out 2> /dev/null)
if [[ $rc -gt 0 ]]
diff --git a/SOAP/WosSearchByDoi.sh b/SOAP/WosSearchByDoi.sh
index 1e3d0ef..cb9dee3 100755
--- a/SOAP/WosSearchByDoi.sh
+++ b/SOAP/WosSearchByDoi.sh
@@ -4,8 +4,8 @@
# Initialisation des variables pour les options
programme=$(basename $0)
substitut=$(echo $programme | sed 's/./ /g')
-version='1.6.1'
-modif='21/07/2022'
+version='1.6.2'
+modif='25/07/2022'
function usage
{
@@ -20,8 +20,8 @@
Usage
=====
- $programme -s sid -d (fichier|-) -r (résultats|-)
- $substitut [ -f champs ]* [ -T taille ] [ -c cookies ] [ -i ]
+ $programme -s sid -d (fichier|-) -r (résultats|-) [ -f champs ]*
+ $substitut [ -T taille ] [ -j cookie_jar ] [ -i ]
$programme -h
Options principales
@@ -240,7 +240,7 @@
echo " WOS" >> search$$.xml
for i in "${xml3[@]}"
do
- echo "$i" >> search$$.xml
+ echo " $i" >> search$$.xml
done
echo " " >> search$$.xml
fi