Skip to content
Snippets Groups Projects

Reworked to Rosetta 7.0 in dev environment under chromedriver 90.0.4430.93

Closed Serhiy Bolkun requested to merge dnx_mappings_rosetta7.0 into master
1 file
+ 3
0
Compare changes
  • Side-by-side
  • Inline
#!/usr/bin/env perl
# 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
# see http://www.seleniumhq.org/
#
# tested against Rosetta 5.2 using chromedriver and chromium 60.0.3112.78
# under Debian Stretch
# tested against Rosetta 7.0 using chromedriver and chromium 90.0.4430.93
# under Windows 10 and Debian 10
#
# ensure, that the plugin is assigned to a classification, for example to
# "Image (Mix)"
@@ -16,18 +19,24 @@ use warnings;
use utf8;
use Selenium::Remote::Driver;
use Selenium::Chrome;
use Term::ANSIColor; # colored print
use Data::Printer;
use v5.10;
my $host=shift;
my $user=shift;
my $passwd=shift;
my $institution=shift;
#my $ui_port=":1801";
#my $ui_port=":80"; # Produktion
my $ui_port=shift;
BEGIN {
if ($^O eq 'MSWin32') {
require Win32::Console::ANSI;
Win32::Console::ANSI->import();
}
}
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 = (
"ICC-header:ColorSpaceData" => "icc.colorspacedata",
"ICC-header:DeviceModel" => "icc.devicemodel",
@@ -63,98 +72,72 @@ my %exiftool2dnx = (
"IFD0:XResolution" => "image.xresolution", # TIFF-Tag 282 XResolution ( Angabe in dpi)
"IFD0:YResolution" => "image.yresolution", # TIFF-Tag 283 YResolution ( Angabe in dpi)
);
my $plugin_name="SLUBTechnicalMetadataExtractorCheckItTiffPlugin";
my $classification_group="Image (Mix)";
my $plugin_name = "SLUBTechnicalMetadataExtractorCheckItTiffPlugin";
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:
host=$host
user=$user
institution=$institution
";
my $driver = Selenium::Chrome->new();
$driver->debug_on;
$driver->set_implicit_wait_timeout(1000);
$driver->set_timeout('script', 1000);
\n";
sub login {
print "login:\n";
#$driver->get("http://$host:8991/pds?func=load-login&lang=en&langOptions=en.English&institution=&institute=INS_SLUB&calling_system=dps");
$driver->get("http://$host:1801/mng?auth=local");
#$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->get("$protocol://$host:${ui_port}/mng?auth=local");
my $ele_institute = $driver->find_element("institution", "id");
$driver->find_child_element($ele_institute, "./option[\@value='$institution']", "xpath")->click;
$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")->send_keys("$passwd");
$driver->find_element("Login", "name")->click;
$driver->find_element("password", "id")->send_keys($passwd);
$driver->find_element("login", "id")->click;
}
sub logout {
print "logout:\n";
$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");
$driver->get("$protocol://$host:${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
my $ele = $driver->find_element("user", "id")->click;
$driver->pause();
$ele = $driver->find_element("Logout", "link")->click;
}
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("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->get("$protocol://$host:${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
$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("undefined_button", "id")->click;
$driver->find_element("modules_button", "id")->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");
p( $tr );
my $td = $driver->find_child_element($tr, "./td[\@class='form-inline']", "xpath");
p ($td);
$driver->find_child_element( $td, "descendant::button[\@id='undefined_button']", "xpath")->click;
$driver->find_element("generalParameters_model_parameters_2__value_button", "id")->click;
say "click combobox button";
return $td;
}
sub change_to_global_format_library {
my $td=_change_to_xxx_format_library();
$driver->find_child_element( $td, "descendant::li[text()='true']", "xpath")->click;
my $td = _change_to_xxx_format_library();
$driver->find_child_element($td, "descendant::li[text()='true']", "xpath")->click;
say "select true";
$driver->find_element("//button[\@value='Update']", "xpath")->click;
say "click update button";
}
sub change_to_local_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";
$driver->find_element("//button[\@value='Update']", "xpath")->click;
say "click update button";
$driver->pause();
}
sub add_dnx_property ($$) {
sub add_dnx_property($$) {
my $dnx_property = shift;
my $dnx_description = shift;
my $dow = localtime;
#$driver->get("http://$host${ui_port}/mng/action/menus.do?first_time_key=com.exlibris.dps.wrk.general.menu");
#$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->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->pause();
$driver->find_element("Add Significant Property", "link")->click;
$driver->find_element("selectedSigPropname", "id")->clear;
@@ -164,35 +147,29 @@ sub add_dnx_property ($$) {
$driver->find_element("SaveSigPropGenDetails", "name")->click;
}
sub join_dnx_property_to_classification_group ($) {
sub join_dnx_property_to_classification_group($) {
my $dnx_property = shift;
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("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->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->pause();
$driver->find_element("find0.0", "id")->clear;
$driver->find_element("find0.0", "id")->send_keys($classification_group);
$driver->find_element("go", "name")->click;
$driver->find_element("Edit", "link")->click;
$driver->find_element("Related Properties", "link")->click;
my $ele = $driver->find_element("//form[\@id='classificationDetailsForm']//div[\@class='available']", "xpath");
$driver->find_child_element($ele, "(//input[\@type='text'])", "xpath")->clear;
$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->find_element("//form[\@id='classificationDetails']//div[\@class='available']//div//input", "xpath")->clear;
$driver->find_element("//form[\@id='classificationDetails']//div[\@class='available']//div//input", "xpath")->send_keys($dnx_property);
$driver->pause();
$driver->find_element("Add all", "link")->click;
$driver->find_element("SaveClassificationGenDetails", "name")->click;
$driver->pause();
}
sub extractors_add_mapping ($$) {
sub extractors_add_mapping($$) {
my $dnx_property = shift;
my $exiftool_property = shift;
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("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->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->pause();
$driver->find_element("Custom", "link")->click;
$driver->find_element("find1.0", "id")->clear;
@@ -200,14 +177,13 @@ sub extractors_add_mapping ($$) {
$driver->find_element("go", "name")->click;
$driver->find_element("Edit", "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")->send_keys($exiftool_property);
$driver->find_element("pageBeancurrentMappingextractorProperty_button", "id")->click;
$driver->pause();
$driver->find_element("//li[\@title='$exiftool_property']", "xpath")->click;
$driver->pause();
$driver->find_element("pageBeancurrentMappingclassificationProperty_input", "id")->click;
$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->find_element("//li[\@title='$dnx_property']", "xpath")->click;
$driver->pause();
@@ -219,35 +195,44 @@ sub extractors_add_mapping ($$) {
$driver->pause();
}
# login
printf colored("Step 1 of 7: login \n", 'bold green');
login();
# change to global format library
printf colored("Step 2 of 7: change to global format library \n", 'bold green');
change_to_global_format_library();
# add dnx property
printf colored("Step 3 of 7: add dnx property \n", 'bold green');
foreach my $exiftool_property (sort keys %exiftool2dnx) {
my $dnx_property = $exiftool2dnx{ $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) {
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) {
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
printf colored("Step 6 of 7: change to local format library \n", 'bold green');
change_to_local_format_library();
# logout
printf colored("Step 7 of 7: logout \n", 'bold green');
logout();
$driver->quit();
$driver->shutdown_binary();
printf colored("Finish! \n", 'bold green');
Loading