Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
checkit_tiff_plugin4rosetta
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Digital Preservation
checkit_tiff_plugin4rosetta
Compare revisions
37eac2c1197a94bf6cb25455359d44dca75ed798 to 05851217f69941866e5d6f10ace93185635f1d93
Compare revisions
Changes are shown as if the
source
revision was being merged into the
target
revision.
Learn more about comparing revisions.
Source
digital-preservation/checkit_tiff_plugin4rosetta
Select target project
No results found
05851217f69941866e5d6f10ace93185635f1d93
Select Git revision
Swap
Target
digital-preservation/checkit_tiff_plugin4rosetta
Select target project
digital-preservation/checkit_tiff_plugin4rosetta
1 result
37eac2c1197a94bf6cb25455359d44dca75ed798
Select Git revision
Show changes
Only incoming changes from source
Include changes to target since source was created
Compare
Commits on Source (2)
Reworked to Rosetta 7.0 in dev environment under chromedriver 90.0.4430.93
· 63f6979c
Bolkun
authored
4 years ago
and
Jens Steidl
committed
4 years ago
63f6979c
Added usage and example for documentation
· 05851217
Bolkun
authored
4 years ago
and
Jens Steidl
committed
4 years ago
05851217
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
deploy_checkit_tiff/add_dnx_mappings/add_dnx_mappings.pl
+68
-83
68 additions, 83 deletions
deploy_checkit_tiff/add_dnx_mappings/add_dnx_mappings.pl
with
68 additions
and
83 deletions
deploy_checkit_tiff/add_dnx_mappings/add_dnx_mappings.pl
View file @
05851217
#!/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
6
0.0.
3112.78
# under
Debian Stretch
# tested against Rosetta
7.0
using chromedriver and chromium
9
0.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
("
L
ogin
",
"
name
")
->
click
;
$driver
->
find_element
("
password
",
"
id
")
->
send_keys
(
$passwd
);
$driver
->
find_element
("
l
ogin
",
"
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
');
This diff is collapsed.
Click to expand it.