diff --git a/gestion_des_portfolios/config-creer-371.exemple b/gestion_des_portfolios/config-creer-371.exemple new file mode 100755 index 0000000000000000000000000000000000000000..c099bcfa45236b4cf4cfc9de591fe7bc1bd7eb6b --- /dev/null +++ b/gestion_des_portfolios/config-creer-371.exemple @@ -0,0 +1,3 @@ +zone_uri 371 +zone_uri_url c +zone_uri_note a diff --git a/gestion_des_portfolios/config-creer-856.exemple b/gestion_des_portfolios/config-creer-856.exemple new file mode 100755 index 0000000000000000000000000000000000000000..2a61945dd15727a12b82f1a7065960b72737844f --- /dev/null +++ b/gestion_des_portfolios/config-creer-856.exemple @@ -0,0 +1,3 @@ +zone_uri 856 +zone_uri_url u +zone_uri_note z diff --git a/gestion_des_portfolios/creer_portfolios.pl b/gestion_des_portfolios/creer_portfolios.pl index b81b41998eac794318708554faf40b4204600662..996ff90c506f935bbf90f227c9d7754bec323528 100644 --- a/gestion_des_portfolios/creer_portfolios.pl +++ b/gestion_des_portfolios/creer_portfolios.pl @@ -13,6 +13,12 @@ # 04/12/2023 : ajouter dans les logs une information de creation du portfolio # 29/11/2024 : passage du fichier de conf en parametre # 29/05/2025 : fichier cle.key dedié aux clés api. les clés api ne sont plus mise dans les fichier de conf. plus pratique pour la gestion GIT. +# 29/05/2025 : passage à un paramétrage de la zone uri pour pouvoir travailler avec un autre champ que le 856 +# ajout de 3 champs dans fichier de conf : +# zone_uri 856 +# zone_uri_url u +# zone_uri_note z +# cela permet au besoin de travailler sur le 371 au lieu du 856 ########### # passage de parametre -> creer_portfolio.pl fichier-conf.conf liste.csv ############################## @@ -36,7 +42,7 @@ my $block_xml=""; my $twig_bib=""; my %tab_mms_id_url=(); # table de hash des mmd_id et url my %tab_mms_id_url_ordonnee=(); # table de hash des mmd_id et url avec l'ordre d'apparition dans la notice -my $ordre_apparition_856=0; +my $ordre_apparition_uri=0; my $nbr_portfolios=0; if (!(exists $ARGV[0])) {print "Manque des fichiers en parametre : perl creer_portfolio.pl fichier-conf.conf liste.csv.\n";exit(0)}; @@ -85,7 +91,7 @@ close(CSV); for ($i=1;$i<=$#tab_inter;$i++) { #supprimer les lignes vides ou sans mms_id print "$tab_inter[$i] =>\n"; if ($tab_inter[$i]=~ /^\d.*/) { # si cela ne commence par par un chiffre - print "OK pour [".$tab_inter[$i]."]\n"; + print "OK pour ".$tab_inter[$i]."\n"; } else { print "delete [".$tab_inter[$i]."]\n"; delete $tab_inter[$i]; @@ -130,7 +136,7 @@ for ($i;$i<=$#tab_inter;$i++) { #print $block_xml,"\n"; $twig_bib->parse($block_xml); # ici tout est dans la structure twig - # Parcourir le bloc xml pour extraire les URL des 856$u + # Parcourir le bloc xml pour extraire les URL des zone_uri$zone_uri_url (exemple 856$u) my $root= $twig_bib->get_xpath('//bib/record/',0); my @les_datafield= $root->children('datafield'); ### on récuperer une table de hash de tous les "enfants" @@ -139,9 +145,9 @@ for ($i;$i<=$#tab_inter;$i++) { my $tag = $un_datafield->{'att'}->{'tag'}; - if ($tag=="856") { # on est dans le bon datafield - print "\n##### 856 #######\n"; - $ordre_apparition_856++; + if ($tag==$hash_conf{zone_uri}) { # on est dans le bon datafield + print "\n##### $hash_conf{zone_uri} #######\n"; + $ordre_apparition_uri++; #print $un_datafield->sprint; #print "\n############\n"; my $url=""; @@ -151,25 +157,27 @@ for ($i;$i<=$#tab_inter;$i++) { { my $code = $un_subfield->{'att'}->{'code'}; #print $code,"\n"; - if ($code=~ /^u$/) { # on est dans le bon subfield - print "\n\t##### sous champ u #######\n"; + if ($code=~ /^$hash_conf{zone_uri_url}$/) { # on est dans le bon subfield + print "\n\t##### sous champ $hash_conf{zone_uri_url} #######\n"; $url=$un_subfield->text(); #print "\t".$un_subfield->text()."\n"; print "\t".$url."\n"; $tab_mms_id_url{"[".$mms_id."][".$url."]"}=""; - $tab_mms_id_url_ordonnee{"[".$mms_id."][".$url."]"}=$ordre_apparition_856; + $tab_mms_id_url_ordonnee{"[".$mms_id."][".$url."]"}=$ordre_apparition_uri; ecrire_log($mms_id,$url); $nbr_portfolios++; } - if ($code=~ /^z$/) { # on est dans le bon subfield - print "\n\t##### sous champ z #######\n"; + if ($code=~ /^$hash_conf{zone_uri_note}$/) { # on est dans le bon subfield + print "\n\t##### sous champ $hash_conf{zone_uri_note} #######\n"; $note_public=$un_subfield->text(); print "\t".$note_public."\n"; - $tab_mms_id_url{"[".$mms_id."][".$url."]"}=$note_public; + } } + ### comme on ne sait pas dans quel ordre apparaissent les sous champs, on stock la note public après avoir tout parcouru + $tab_mms_id_url{"[".$mms_id."][".$url."]"}=$note_public; } } @@ -248,15 +256,16 @@ my $v=0; my $url=""; my $note_public=""; my $portfolio_a_creer=""; -## Creer les portfolios dans l'ordre d'apparition des 856 grace à "tab_mms_id_url_ordonnee" +## Creer les portfolios dans l'ordre d'apparition des zone_uri grace à "tab_mms_id_url_ordonnee" %tab_mms_id_url_ordonnee= reverse (%tab_mms_id_url_ordonnee); # on inverse la table , l'indice devient la clé foreach $v (sort keys %tab_mms_id_url_ordonnee) { # on parcourt avec sort $c=$tab_mms_id_url_ordonnee{$v}; print $c,"\n"; + print "note public : ".$tab_mms_id_url{$c},"\n"; $c=~/\[(.*)\]\[(.*)\]/; $mms_id=$1; $url=$2; - $note_public=Encode::encode_utf8 $tab_mms_id_url{$c}; + $note_public=Encode::encode_utf8 $tab_mms_id_url{$c}; print "--->Creation du portfolio $url pour le mms_id $mms_id:\n"; $portfolio_a_creer=$bloc_modele_portfolio; $portfolio_a_creer=~ s/\[MMS_ID\]/$mms_id/g; @@ -265,7 +274,7 @@ foreach $v (sort keys %tab_mms_id_url_ordonnee) { # on parcourt avec sort #print "\n$portfolio_a_creer\n"; $block_xml=post_create_portfolio_mms_id($mms_id,$portfolio_a_creer); print $block_xml,"\n"; - ecrire_log("Creation portfolio",$mms_id."==>".$url); + ecrire_log("Creation portfolio",$mms_id."==>".$url." ==> note :".$note_public); }