Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • master
  • plugin_v1.104
  • v0.1
  • v2021.2
4 results

Target

Select target project
  • digital-preservation/checkit_tiff_plugin4rosetta
1 result
Select Git revision
  • master
  • plugin_v1.104
  • v0.1
  • v2021.2
4 results
Show changes
Commits on Source (2)
#!/usr/bin/env perl #!/usr/bin/env perl
# adds all dnx properties # adds all dnx properties
# by Andreas Romeyke (andreas.romeyke@slub-dresden.de) # by Andreas Romeyke (andreas.romeyke@slub-dresden.de) and Serhiy Bolkun (serhiy.bolkun@slub-dresden.de)
#
# usage: perl add_dnx_mappings.pl host user password institution port
# example: perl add_dnx_mappings.pl sdvdev.slub-dresden.de mustermann 12345 slub 8080
# #
# needs a geckodriver and the Selenium::Remote::Driver module # needs a geckodriver and the Selenium::Remote::Driver module
# see http://www.seleniumhq.org/ # see http://www.seleniumhq.org/
# #
# tested against Rosetta 5.2 using chromedriver and chromium 60.0.3112.78 # tested against Rosetta 7.0 using chromedriver and chromium 90.0.4430.93
# under Debian Stretch # under Windows 10 and Debian 10
#
# ensure, that the plugin is assigned to a classification, for example to # ensure, that the plugin is assigned to a classification, for example to
# "Image (Mix)" # "Image (Mix)"
...@@ -16,18 +19,24 @@ use warnings; ...@@ -16,18 +19,24 @@ use warnings;
use utf8; use utf8;
use Selenium::Remote::Driver; use Selenium::Remote::Driver;
use Selenium::Chrome; use Selenium::Chrome;
use Term::ANSIColor; # colored print
use Data::Printer; use Data::Printer;
use v5.10; use v5.10;
my $host=shift; BEGIN {
my $user=shift; if ($^O eq 'MSWin32') {
my $passwd=shift; require Win32::Console::ANSI;
my $institution=shift; Win32::Console::ANSI->import();
#my $ui_port=":1801"; }
#my $ui_port=":80"; # Produktion }
my $ui_port=shift;
my $host = shift;
my $user = shift;
my $passwd = shift;
my $institution = shift;
my $ui_port = shift; # 1801, 80 for Produktion
my $protocol = 'https';
my %exiftool2dnx = ( my %exiftool2dnx = (
"ICC-header:ColorSpaceData" => "icc.colorspacedata", "ICC-header:ColorSpaceData" => "icc.colorspacedata",
"ICC-header:DeviceModel" => "icc.devicemodel", "ICC-header:DeviceModel" => "icc.devicemodel",
...@@ -63,98 +72,72 @@ my %exiftool2dnx = ( ...@@ -63,98 +72,72 @@ my %exiftool2dnx = (
"IFD0:XResolution" => "image.xresolution", # TIFF-Tag 282 XResolution ( Angabe in dpi) "IFD0:XResolution" => "image.xresolution", # TIFF-Tag 282 XResolution ( Angabe in dpi)
"IFD0:YResolution" => "image.yresolution", # TIFF-Tag 283 YResolution ( Angabe in dpi) "IFD0:YResolution" => "image.yresolution", # TIFF-Tag 283 YResolution ( Angabe in dpi)
); );
my $plugin_name = "SLUBTechnicalMetadataExtractorCheckItTiffPlugin";
my $plugin_name="SLUBTechnicalMetadataExtractorCheckItTiffPlugin"; my $classification_group = "Image (Mix)";
my $classification_group="Image (Mix)"; my $driver = Selenium::Chrome->new();
$driver->debug_on;
$driver->set_implicit_wait_timeout(1000);
$driver->set_timeout('script', 1000);
print "Try to mechanize adding DNX, using: print "Try to mechanize adding DNX, using:
host=$host host=$host
user=$user user=$user
institution=$institution institution=$institution
"; \n";
my $driver = Selenium::Chrome->new();
$driver->debug_on;
$driver->set_implicit_wait_timeout(1000);
$driver->set_timeout('script', 1000);
sub login { sub login {
print "login:\n"; $driver->get("$protocol://$host:${ui_port}/mng?auth=local");
#$driver->get("http://$host:8991/pds?func=load-login&lang=en&langOptions=en.English&institution=&institute=INS_SLUB&calling_system=dps"); my $ele_institute = $driver->find_element("institution", "id");
$driver->get("http://$host:1801/mng?auth=local"); $driver->find_child_element($ele_institute, "./option[\@value='$institution']", "xpath")->click;
#$driver->get("https://$host:8443/mng?auth=local");
#my $ele_institute = $driver->find_element("institute", "id");
my $ele_institute = $driver->find_element("selectInstitution", "id");
p( $ele_institute);
print "inst select found\n";
$driver->find_child_element(
$ele_institute,
"./option[\@value='$institution']", "xpath"
)->click;
$driver->find_element("userName", "id")->clear; $driver->find_element("userName", "id")->clear;
$driver->find_element("userName", "id")->send_keys("$user"); $driver->find_element("userName", "id")->send_keys($user);
$driver->find_element("password", "id")->clear; $driver->find_element("password", "id")->clear;
$driver->find_element("password", "id")->send_keys("$passwd"); $driver->find_element("password", "id")->send_keys($passwd);
$driver->find_element("Login", "name")->click; $driver->find_element("login", "id")->click;
} }
sub logout { sub logout {
print "logout:\n"; $driver->get("$protocol://$host:${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
$driver->get("http://$host${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
#$driver->get("https://$host${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
my $ele = $driver->find_element("user", "id")->click; my $ele = $driver->find_element("user", "id")->click;
$driver->pause(); $driver->pause();
$ele = $driver->find_element("Logout", "link")->click; $ele = $driver->find_element("Logout", "link")->click;
} }
sub _change_to_xxx_format_library { sub _change_to_xxx_format_library {
$driver->get("http://$host${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu"); $driver->get("$protocol://$host:${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
#$driver->get("https://$host${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
#$driver->find_element("Quick Launch", "link")->click;
# $driver->find_element("Administer the system", "link")->click;
$driver->find_element("//a[\@title='Administer the system']", "xpath")->click; $driver->find_element("//a[\@title='Administer the system']", "xpath")->click;
#~ $driver->find_element("General", "link")->click; # Fix for Rosetta 5.5+
$driver->find_element("General Parameters", "link")->click; $driver->find_element("General Parameters", "link")->click;
$driver->find_element("undefined_button", "id")->click; $driver->find_element("modules_button", "id")->click;
$driver->find_element("//li[\@title='format_library']", "xpath")->click; $driver->find_element("//li[\@title='format_library']", "xpath")->click;
## find 'tr[/td=format_library_is_global]', dann undefined button clicken,
my $tr = $driver->find_element("//tr[starts-with(td,'format_library_is_global')]", "xpath"); my $tr = $driver->find_element("//tr[starts-with(td,'format_library_is_global')]", "xpath");
p( $tr );
my $td = $driver->find_child_element($tr, "./td[\@class='form-inline']", "xpath"); my $td = $driver->find_child_element($tr, "./td[\@class='form-inline']", "xpath");
p ($td); $driver->find_element("generalParameters_model_parameters_2__value_button", "id")->click;
$driver->find_child_element( $td, "descendant::button[\@id='undefined_button']", "xpath")->click;
say "click combobox button"; say "click combobox button";
return $td; return $td;
} }
sub change_to_global_format_library { sub change_to_global_format_library {
my $td=_change_to_xxx_format_library(); my $td = _change_to_xxx_format_library();
$driver->find_child_element( $td, "descendant::li[text()='true']", "xpath")->click; $driver->find_child_element($td, "descendant::li[text()='true']", "xpath")->click;
say "select true"; say "select true";
$driver->find_element("//button[\@value='Update']", "xpath")->click; $driver->find_element("//button[\@value='Update']", "xpath")->click;
say "click update button"; say "click update button";
} }
sub change_to_local_format_library { sub change_to_local_format_library {
my $td = _change_to_xxx_format_library(); my $td = _change_to_xxx_format_library();
$driver->find_child_element( $td, "descendant::li[text()='false']", "xpath")->click; $driver->find_child_element($td, "descendant::li[text()='false']", "xpath")->click;
say "select false"; say "select false";
$driver->find_element("//button[\@value='Update']", "xpath")->click; $driver->find_element("//button[\@value='Update']", "xpath")->click;
say "click update button"; say "click update button";
$driver->pause(); $driver->pause();
} }
sub add_dnx_property ($$) { sub add_dnx_property($$) {
my $dnx_property = shift; my $dnx_property = shift;
my $dnx_description = shift; my $dnx_description = shift;
my $dow = localtime; my $dow = localtime;
#$driver->get("http://$host${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu"); $driver->get("$protocol://$host:${ui_port}/mng/action/pageAction.page_xml.page_sig_prop_list.xml.do?pageViewMode=Edit&pageBean.currentUserMode=GLOBAL&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.SigProps.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.SigProps.InnerMenu&backUrl=");
#$driver->find_element("Preservation", "link")->click;
#$driver->find_element("(//a[contains(text(),'Significant Properties')])[2]", "xpath")->click;
$driver->get("http://$host${ui_port}/mng/action/pageAction.page_xml.page_sig_prop_list.xml.do?pageViewMode=Edit&pageBean.currentUserMode=GLOBAL&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.SigProps.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.SigProps.InnerMenu&backUrl=");
#$driver->get("https://$host${ui_port}/mng/action/pageAction.page_xml.page_sig_prop_list.xml.do?pageViewMode=Edit&pageBean.currentUserMode=GLOBAL&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.SigProps.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.SigProps.InnerMenu&backUrl=");
$driver->pause(); $driver->pause();
$driver->find_element("Add Significant Property", "link")->click; $driver->find_element("Add Significant Property", "link")->click;
$driver->find_element("selectedSigPropname", "id")->clear; $driver->find_element("selectedSigPropname", "id")->clear;
...@@ -164,35 +147,29 @@ sub add_dnx_property ($$) { ...@@ -164,35 +147,29 @@ sub add_dnx_property ($$) {
$driver->find_element("SaveSigPropGenDetails", "name")->click; $driver->find_element("SaveSigPropGenDetails", "name")->click;
} }
sub join_dnx_property_to_classification_group ($) { sub join_dnx_property_to_classification_group($) {
my $dnx_property = shift; my $dnx_property = shift;
say "try to join dnx property"; say "try to join dnx property";
$driver->get("http://$host${ui_port}/mng/action/pageAction.page_xml.page_classification_list.xml.do?pageViewMode=Edit&pageBean.currentUserMode=GLOBAL&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.Classifications.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.Classifications.InnerMenu&backUrl="); $driver->get("$protocol://$host:${ui_port}/mng/action/pageAction.page_xml.page_classification_list.xml.do?pageViewMode=Edit&pageBean.currentUserMode=GLOBAL&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.Classifications.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.Classifications.InnerMenu&backUrl=");
#$driver->get("https://$host${ui_port}/mng/action/pageAction.page_xml.page_classification_list.xml.do?pageViewMode=Edit&pageBean.currentUserMode=GLOBAL&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.Classifications.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryGLOBAL.mngLibraryHeader.Classifications.InnerMenu&backUrl=");
$driver->pause(); $driver->pause();
$driver->find_element("find0.0", "id")->clear; $driver->find_element("find0.0", "id")->clear;
$driver->find_element("find0.0", "id")->send_keys($classification_group); $driver->find_element("find0.0", "id")->send_keys($classification_group);
$driver->find_element("go", "name")->click; $driver->find_element("go", "name")->click;
$driver->find_element("Edit", "link")->click; $driver->find_element("Edit", "link")->click;
$driver->find_element("Related Properties", "link")->click; $driver->find_element("Related Properties", "link")->click;
my $ele = $driver->find_element("//form[\@id='classificationDetailsForm']//div[\@class='available']", "xpath"); $driver->find_element("//form[\@id='classificationDetails']//div[\@class='available']//div//input", "xpath")->clear;
$driver->find_child_element($ele, "(//input[\@type='text'])", "xpath")->clear; $driver->find_element("//form[\@id='classificationDetails']//div[\@class='available']//div//input", "xpath")->send_keys($dnx_property);
$driver->find_child_element($ele, "(//input[\@type='text'])[3]", "xpath")->send_keys($dnx_property);
#$driver->find_element("//form[\@id='classificationDetailsForm']/div/div[4]/div/div/div[2]/ul/li[230]/a/span", "xpath")->click;
#my $ele = $driver->find_element("li[\@title='$dnx_property']", "xpath");
#$driver->find_child_element( $ele, "a", "link")->click;
$driver->pause(); $driver->pause();
$driver->find_element("Add all", "link")->click; $driver->find_element("Add all", "link")->click;
$driver->find_element("SaveClassificationGenDetails", "name")->click; $driver->find_element("SaveClassificationGenDetails", "name")->click;
$driver->pause(); $driver->pause();
} }
sub extractors_add_mapping ($$) { sub extractors_add_mapping($$) {
my $dnx_property = shift; my $dnx_property = shift;
my $exiftool_property = shift; my $exiftool_property = shift;
say "try to add extractor mapping"; say "try to add extractor mapping";
$driver->get("http://$host${ui_port}//mng/action/pageAction.page_xml.page_extractors_list.xml.do?pageBean.deploymentMode=BUNDLED&pageViewMode=Edit&pageBean.currentUserMode=LOCAL&RenewBean=true&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryLOCAL.mngLibraryHeader.Extractors.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryLOCAL.mngLibraryHeader.Extractors.InnerMenu&backUrl="); $driver->get("$protocol://$host:${ui_port}//mng/action/pageAction.page_xml.page_extractors_list.xml.do?pageBean.deploymentMode=BUNDLED&pageViewMode=Edit&pageBean.currentUserMode=LOCAL&RenewBean=true&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryLOCAL.mngLibraryHeader.Extractors.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryLOCAL.mngLibraryHeader.Extractors.InnerMenu&backUrl=");
#$driver->get("https://$host${ui_port}//mng/action/pageAction.page_xml.page_extractors_list.xml.do?pageBean.deploymentMode=BUNDLED&pageViewMode=Edit&pageBean.currentUserMode=LOCAL&RenewBean=true&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryLOCAL.mngLibraryHeader.Extractors.InnerMenu&menuKey=com.exlibris.dps.wrk.general.menu.Preservation.AdvancedPreservationActivities.mngLibraryLOCAL.mngLibraryHeader.Extractors.InnerMenu&backUrl=");
$driver->pause(); $driver->pause();
$driver->find_element("Custom", "link")->click; $driver->find_element("Custom", "link")->click;
$driver->find_element("find1.0", "id")->clear; $driver->find_element("find1.0", "id")->clear;
...@@ -200,14 +177,13 @@ sub extractors_add_mapping ($$) { ...@@ -200,14 +177,13 @@ sub extractors_add_mapping ($$) {
$driver->find_element("go", "name")->click; $driver->find_element("go", "name")->click;
$driver->find_element("Edit", "link")->click; $driver->find_element("Edit", "link")->click;
$driver->find_element("Add Mapping", "link")->click; $driver->find_element("Add Mapping", "link")->click;
$driver->find_element("pageBeancurrentMappingextractorProperty_input", "id")->click;
$driver->find_element("pageBeancurrentMappingextractorProperty_input", "id")->clear; $driver->find_element("pageBeancurrentMappingextractorProperty_input", "id")->clear;
$driver->find_element("pageBeancurrentMappingextractorProperty_input", "id")->send_keys($exiftool_property); $driver->find_element("pageBeancurrentMappingextractorProperty_button", "id")->click;
$driver->pause();
$driver->find_element("//li[\@title='$exiftool_property']", "xpath")->click; $driver->find_element("//li[\@title='$exiftool_property']", "xpath")->click;
$driver->pause(); $driver->pause();
$driver->find_element("pageBeancurrentMappingclassificationProperty_input", "id")->click;
$driver->find_element("pageBeancurrentMappingclassificationProperty_input", "id")->clear; $driver->find_element("pageBeancurrentMappingclassificationProperty_input", "id")->clear;
$driver->find_element("pageBeancurrentMappingclassificationProperty_input", "id")->send_keys("$dnx_property"); $driver->find_element("pageBeancurrentMappingclassificationProperty_button", "id")->click;
$driver->pause(); $driver->pause();
$driver->find_element("//li[\@title='$dnx_property']", "xpath")->click; $driver->find_element("//li[\@title='$dnx_property']", "xpath")->click;
$driver->pause(); $driver->pause();
...@@ -219,35 +195,44 @@ sub extractors_add_mapping ($$) { ...@@ -219,35 +195,44 @@ sub extractors_add_mapping ($$) {
$driver->pause(); $driver->pause();
} }
# login
printf colored("Step 1 of 7: login \n", 'bold green');
login(); login();
# change to global format library # change to global format library
printf colored("Step 2 of 7: change to global format library \n", 'bold green');
change_to_global_format_library(); change_to_global_format_library();
# add dnx property # add dnx property
printf colored("Step 3 of 7: add dnx property \n", 'bold green');
foreach my $exiftool_property (sort keys %exiftool2dnx) { foreach my $exiftool_property (sort keys %exiftool2dnx) {
my $dnx_property = $exiftool2dnx{ $exiftool_property }; my $dnx_property = $exiftool2dnx{ $exiftool_property };
add_dnx_property($dnx_property, "$dnx_property <- Exiftool '$exiftool_property'"); add_dnx_property($dnx_property, "$dnx_property <- Exiftool '$exiftool_property'");
} }
# include dnx property to classification group (Image(MIX))
printf colored("Step 4 of 7: join dnx property to classification group \n", 'bold green');
foreach my $exiftool_property (sort keys %exiftool2dnx) { foreach my $exiftool_property (sort keys %exiftool2dnx) {
my $dnx_property = $exiftool2dnx{ $exiftool_property }; my $dnx_property = $exiftool2dnx{ $exiftool_property };
join_dnx_property_to_classification_group( $dnx_property); join_dnx_property_to_classification_group($dnx_property);
} }
# add mapping
printf colored("Step 5 of 7: extractors add mapping \n", 'bold green');
foreach my $exiftool_property (sort keys %exiftool2dnx) { foreach my $exiftool_property (sort keys %exiftool2dnx) {
my $dnx_property = $exiftool2dnx{ $exiftool_property }; my $dnx_property = $exiftool2dnx{ $exiftool_property };
extractors_add_mapping ($dnx_property, $exiftool_property); extractors_add_mapping($dnx_property, $exiftool_property);
} }
# include dnx property to classification group (Image(MIX))
# add mapping
# change to local format library # change to local format library
printf colored("Step 6 of 7: change to local format library \n", 'bold green');
change_to_local_format_library(); change_to_local_format_library();
# logout
printf colored("Step 7 of 7: logout \n", 'bold green');
logout(); logout();
$driver->quit(); $driver->quit();
$driver->shutdown_binary(); $driver->shutdown_binary();
printf colored("Finish! \n", 'bold green');