Skip to content
Snippets Groups Projects
Commit d6ba5aad authored by Rachid Aliouat's avatar Rachid Aliouat :unicorn:
Browse files

creer portfolios : ajout possibilite de choisir dans la conf la zone unimarc...

creer portfolios : ajout possibilite de choisir dans la conf la zone unimarc voulu (856 ou 371 ou autre chose)
parent 635c5173
No related branches found
No related tags found
No related merge requests found
zone_uri 371
zone_uri_url c
zone_uri_note a
zone_uri 856
zone_uri_url u
zone_uri_note z
...@@ -13,6 +13,12 @@ ...@@ -13,6 +13,12 @@
# 04/12/2023 : ajouter dans les logs une information de creation du portfolio # 04/12/2023 : ajouter dans les logs une information de creation du portfolio
# 29/11/2024 : passage du fichier de conf en parametre # 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 : 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 # passage de parametre -> creer_portfolio.pl fichier-conf.conf liste.csv
############################## ##############################
...@@ -36,7 +42,7 @@ my $block_xml=""; ...@@ -36,7 +42,7 @@ my $block_xml="";
my $twig_bib=""; my $twig_bib="";
my %tab_mms_id_url=(); # table de hash des mmd_id et url 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 %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; 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)}; 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); ...@@ -85,7 +91,7 @@ close(CSV);
for ($i=1;$i<=$#tab_inter;$i++) { #supprimer les lignes vides ou sans mms_id for ($i=1;$i<=$#tab_inter;$i++) { #supprimer les lignes vides ou sans mms_id
print "$tab_inter[$i] =>\n"; print "$tab_inter[$i] =>\n";
if ($tab_inter[$i]=~ /^\d.*/) { # si cela ne commence par par un chiffre 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 { } else {
print "delete [".$tab_inter[$i]."]\n"; print "delete [".$tab_inter[$i]."]\n";
delete $tab_inter[$i]; delete $tab_inter[$i];
...@@ -130,7 +136,7 @@ for ($i;$i<=$#tab_inter;$i++) { ...@@ -130,7 +136,7 @@ for ($i;$i<=$#tab_inter;$i++) {
#print $block_xml,"\n"; #print $block_xml,"\n";
$twig_bib->parse($block_xml); # ici tout est dans la structure twig $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 $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" 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++) { ...@@ -139,9 +145,9 @@ for ($i;$i<=$#tab_inter;$i++) {
my $tag = $un_datafield->{'att'}->{'tag'}; my $tag = $un_datafield->{'att'}->{'tag'};
if ($tag=="856") { # on est dans le bon datafield if ($tag==$hash_conf{zone_uri}) { # on est dans le bon datafield
print "\n##### 856 #######\n"; print "\n##### $hash_conf{zone_uri} #######\n";
$ordre_apparition_856++; $ordre_apparition_uri++;
#print $un_datafield->sprint; #print $un_datafield->sprint;
#print "\n############\n"; #print "\n############\n";
my $url=""; my $url="";
...@@ -151,25 +157,27 @@ for ($i;$i<=$#tab_inter;$i++) { ...@@ -151,25 +157,27 @@ for ($i;$i<=$#tab_inter;$i++) {
{ {
my $code = $un_subfield->{'att'}->{'code'}; my $code = $un_subfield->{'att'}->{'code'};
#print $code,"\n"; #print $code,"\n";
if ($code=~ /^u$/) { # on est dans le bon subfield if ($code=~ /^$hash_conf{zone_uri_url}$/) { # on est dans le bon subfield
print "\n\t##### sous champ u #######\n"; print "\n\t##### sous champ $hash_conf{zone_uri_url} #######\n";
$url=$un_subfield->text(); $url=$un_subfield->text();
#print "\t".$un_subfield->text()."\n"; #print "\t".$un_subfield->text()."\n";
print "\t".$url."\n"; print "\t".$url."\n";
$tab_mms_id_url{"[".$mms_id."][".$url."]"}=""; $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); ecrire_log($mms_id,$url);
$nbr_portfolios++; $nbr_portfolios++;
} }
if ($code=~ /^z$/) { # on est dans le bon subfield if ($code=~ /^$hash_conf{zone_uri_note}$/) { # on est dans le bon subfield
print "\n\t##### sous champ z #######\n"; print "\n\t##### sous champ $hash_conf{zone_uri_note} #######\n";
$note_public=$un_subfield->text(); $note_public=$un_subfield->text();
print "\t".$note_public."\n"; 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,11 +256,12 @@ my $v=0; ...@@ -248,11 +256,12 @@ my $v=0;
my $url=""; my $url="";
my $note_public=""; my $note_public="";
my $portfolio_a_creer=""; 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é %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 foreach $v (sort keys %tab_mms_id_url_ordonnee) { # on parcourt avec sort
$c=$tab_mms_id_url_ordonnee{$v}; $c=$tab_mms_id_url_ordonnee{$v};
print $c,"\n"; print $c,"\n";
print "note public : ".$tab_mms_id_url{$c},"\n";
$c=~/\[(.*)\]\[(.*)\]/; $c=~/\[(.*)\]\[(.*)\]/;
$mms_id=$1; $mms_id=$1;
$url=$2; $url=$2;
...@@ -265,7 +274,7 @@ foreach $v (sort keys %tab_mms_id_url_ordonnee) { # on parcourt avec sort ...@@ -265,7 +274,7 @@ foreach $v (sort keys %tab_mms_id_url_ordonnee) { # on parcourt avec sort
#print "\n$portfolio_a_creer\n"; #print "\n$portfolio_a_creer\n";
$block_xml=post_create_portfolio_mms_id($mms_id,$portfolio_a_creer); $block_xml=post_create_portfolio_mms_id($mms_id,$portfolio_a_creer);
print $block_xml,"\n"; print $block_xml,"\n";
ecrire_log("Creation portfolio",$mms_id."==>".$url); ecrire_log("Creation portfolio",$mms_id."==>".$url." ==> note :".$note_public);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment