libis-format 1.0.4 → 2.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.gitignore +5 -1
- data/.travis.yml +43 -25
- data/README.md +2 -2
- data/base/Dockerfile +35 -0
- data/base/Dockerfile.alpine +20 -0
- data/base/Dockerfile.rvm +56 -0
- data/base/rework_path +20 -0
- data/docker_cfg.yml +1 -0
- data/lib/libis/format.rb +12 -3
- data/lib/libis/format/cli/convert.rb +4 -4
- data/lib/libis/format/config.rb +15 -10
- data/lib/libis/format/converter/audio_converter.rb +3 -37
- data/lib/libis/format/converter/base.rb +22 -8
- data/lib/libis/format/converter/chain.rb +3 -3
- data/lib/libis/format/converter/image_assembler.rb +82 -0
- data/lib/libis/format/converter/image_converter.rb +20 -138
- data/lib/libis/format/converter/image_splitter.rb +84 -0
- data/lib/libis/format/converter/image_watermarker.rb +261 -0
- data/lib/libis/format/converter/jp2_converter.rb +2 -2
- data/lib/libis/format/converter/office_converter.rb +2 -2
- data/lib/libis/format/converter/pdf_assembler.rb +66 -0
- data/lib/libis/format/converter/pdf_converter.rb +10 -134
- data/lib/libis/format/converter/pdf_metadata.rb +82 -0
- data/lib/libis/format/converter/pdf_optimizer.rb +67 -0
- data/lib/libis/format/converter/pdf_protecter.rb +147 -0
- data/lib/libis/format/converter/pdf_selecter.rb +83 -0
- data/lib/libis/format/converter/pdf_splitter.rb +70 -0
- data/lib/libis/format/converter/pdf_watermarker_header.rb +71 -0
- data/lib/libis/format/converter/pdf_watermarker_image.rb +76 -0
- data/lib/libis/format/converter/pdf_watermarker_text.rb +93 -0
- data/lib/libis/format/converter/spreadsheet_converter.rb +2 -2
- data/lib/libis/format/converter/video_converter.rb +1 -1
- data/lib/libis/format/identifier.rb +3 -3
- data/lib/libis/format/info.rb +27 -0
- data/lib/libis/format/library.rb +147 -0
- data/lib/libis/format/tool.rb +4 -1
- data/lib/libis/format/tool/droid.rb +2 -2
- data/lib/libis/format/tool/extension_identification.rb +4 -4
- data/lib/libis/format/tool/ffmpeg.rb +1 -1
- data/lib/libis/format/tool/fido.rb +1 -1
- data/lib/libis/format/tool/fop_pdf.rb +1 -1
- data/lib/libis/format/tool/identification_tool.rb +6 -6
- data/lib/libis/format/tool/office_to_pdf.rb +1 -1
- data/lib/libis/format/tool/pdf_merge.rb +4 -4
- data/lib/libis/format/tool/{pdf_copy.rb → pdf_metadata.rb} +6 -6
- data/lib/libis/format/tool/pdf_protect.rb +47 -0
- data/lib/libis/format/tool/pdf_select.rb +47 -0
- data/lib/libis/format/tool/pdf_split.rb +5 -5
- data/lib/libis/format/tool/pdf_to_pdfa.rb +1 -2
- data/lib/libis/format/tool/pdf_watermark.rb +47 -0
- data/lib/libis/format/tool/pdfa_validator.rb +3 -4
- data/lib/libis/format/tool/spreadsheet_to_ods.rb +2 -1
- data/lib/libis/format/version.rb +1 -1
- data/lib/libis/format/yaml_loader.rb +71 -0
- data/libis-format.gemspec +5 -4
- data/tools/PdfTool.jar +0 -0
- data/tools/bcpkix-jdk15on-167.jar +0 -0
- data/tools/bcprov-jdk15on-167.jar +0 -0
- data/tools/fop/build/fop.jar +0 -0
- data/tools/fop/conf/fop.xconf +466 -0
- data/tools/fop/fop +258 -0
- data/tools/fop/fop.bat +75 -0
- data/tools/fop/fop.cmd +31 -0
- data/tools/fop/fop.js +341 -0
- data/tools/fop/lib/README.txt +243 -0
- data/tools/fop/lib/avalon-framework-api-4.3.1.jar +0 -0
- data/tools/fop/lib/avalon-framework-impl-4.3.1.jar +0 -0
- data/tools/fop/lib/avalon-framework.LICENSE.txt +175 -0
- data/tools/fop/lib/avalon-framework.NOTICE.TXT +11 -0
- data/tools/fop/lib/batik-all-1.10.jar +0 -0
- data/tools/fop/lib/batik.LICENSE.txt +201 -0
- data/tools/fop/lib/batik.NOTICE.txt +18 -0
- data/tools/fop/lib/commons-io-1.3.1.jar +0 -0
- data/tools/fop/lib/commons-io.LICENSE.txt +203 -0
- data/tools/fop/lib/commons-io.NOTICE.txt +6 -0
- data/tools/fop/lib/commons-logging-1.0.4.jar +0 -0
- data/tools/fop/lib/commons-logging.LICENSE.txt +202 -0
- data/tools/fop/lib/commons-logging.NOTICE.txt +3 -0
- data/tools/fop/lib/fontbox-2.0.7.jar +0 -0
- data/tools/fop/lib/serializer-2.7.2.jar +0 -0
- data/tools/fop/lib/serializer.LICENSE.txt +201 -0
- data/tools/fop/lib/serializer.NOTICE.txt +15 -0
- data/tools/fop/lib/xalan-2.7.2.jar +0 -0
- data/tools/fop/lib/xalan.BCEL.LICENSE.txt +52 -0
- data/tools/fop/lib/xalan.LICENSE.txt +202 -0
- data/tools/fop/lib/xalan.NOTICE.txt +44 -0
- data/tools/fop/lib/xalan.regexp.LICENSE.txt +52 -0
- data/tools/fop/lib/xalan.runtime.LICENSE.txt +20 -0
- data/tools/fop/lib/xerces.LICENSE.txt +56 -0
- data/tools/fop/lib/xercesImpl-2.9.1.jar +0 -0
- data/tools/fop/lib/xercesImpl.LICENSE.txt +201 -0
- data/tools/fop/lib/xercesImpl.NOTICE.txt +14 -0
- data/tools/fop/lib/xml-apis-1.3.04.jar +0 -0
- data/tools/fop/lib/xml-apis-ext-1.3.04.jar +0 -0
- data/tools/fop/lib/xml-apis-ext.LICENSE.dom-documentation.txt +73 -0
- data/tools/fop/lib/xml-apis-ext.LICENSE.dom-software.txt +61 -0
- data/tools/fop/lib/xml-apis-ext.LICENSE.sac.html +75 -0
- data/tools/fop/lib/xml-apis-ext.LICENSE.txt +202 -0
- data/tools/fop/lib/xml-apis-ext.NOTICE.txt +16 -0
- data/tools/fop/lib/xml-apis-ext.README.dom.txt +56 -0
- data/tools/fop/lib/xml-apis.LICENSE-SAX.html +17 -0
- data/tools/fop/lib/xml-apis.LICENSE.DOM-documentation.html +74 -0
- data/tools/fop/lib/xml-apis.LICENSE.DOM-software.html +66 -0
- data/tools/fop/lib/xml-apis.LICENSE.txt +201 -0
- data/tools/fop/lib/xml-apis.NOTICE.txt +13 -0
- data/tools/fop/lib/xmlgraphics-commons-2.3.jar +0 -0
- data/tools/fop/lib/xmlgraphics-commons.LICENSE.txt +202 -0
- data/tools/fop/lib/xmlgraphics-commons.NOTICE.txt +5 -0
- data/tools/pdfbox/pdfbox-app-2.0.13.jar +0 -0
- data/tools/pdfbox/{pdfbox-app-1.8.10.jar → preflight-app-2.0.13.jar} +0 -0
- metadata +86 -246
- data/lib/libis/format/type_database.rb +0 -134
- data/lib/libis/format/type_database_impl.rb +0 -120
- data/spec/converter_audio_spec.rb +0 -66
- data/spec/converter_fop_spec.rb +0 -37
- data/spec/converter_image_spec.rb +0 -166
- data/spec/converter_office_spec.rb +0 -84
- data/spec/converter_pdf_spec.rb +0 -30
- data/spec/converter_repository_spec.rb +0 -97
- data/spec/converter_spreadsheet_spec.rb +0 -39
- data/spec/converter_video_spec.rb +0 -97
- data/spec/converter_xsl_spec.rb +0 -56
- data/spec/data/Cevennes2.bmp +0 -0
- data/spec/data/Cevennes2.jp2 +0 -0
- data/spec/data/Cevennes2.ppm +0 -22492
- data/spec/data/NikonRaw-CameraRaw.TIF +0 -0
- data/spec/data/NikonRaw-CaptureOne.tif +0 -0
- data/spec/data/audio/carlin_disappointed.aac +0 -0
- data/spec/data/audio/carlin_disappointed.ac3 +0 -0
- data/spec/data/audio/carlin_disappointed.aiff +0 -0
- data/spec/data/audio/carlin_disappointed.au +0 -0
- data/spec/data/audio/carlin_disappointed.flac +0 -0
- data/spec/data/audio/carlin_disappointed.m4a +0 -0
- data/spec/data/audio/carlin_disappointed.mka +0 -0
- data/spec/data/audio/carlin_disappointed.mp3 +0 -0
- data/spec/data/audio/carlin_disappointed.ogg +0 -0
- data/spec/data/audio/carlin_disappointed.ra +0 -0
- data/spec/data/audio/carlin_disappointed.voc +0 -0
- data/spec/data/audio/carlin_disappointed.wav +0 -0
- data/spec/data/audio/carlin_disappointed.wma +0 -0
- data/spec/data/audio/greensleeves.aac +0 -0
- data/spec/data/audio/greensleeves.ac3 +0 -0
- data/spec/data/audio/greensleeves.aiff +0 -0
- data/spec/data/audio/greensleeves.au +0 -0
- data/spec/data/audio/greensleeves.flac +0 -0
- data/spec/data/audio/greensleeves.m4a +0 -0
- data/spec/data/audio/greensleeves.mka +0 -0
- data/spec/data/audio/greensleeves.mp3 +0 -0
- data/spec/data/audio/greensleeves.ogg +0 -0
- data/spec/data/audio/greensleeves.ra +0 -0
- data/spec/data/audio/greensleeves.voc +0 -0
- data/spec/data/audio/greensleeves.wav +0 -0
- data/spec/data/audio/greensleeves.wma +0 -0
- data/spec/data/audio/king_nonviolence.aac +0 -0
- data/spec/data/audio/king_nonviolence.ac3 +0 -0
- data/spec/data/audio/king_nonviolence.aiff +0 -0
- data/spec/data/audio/king_nonviolence.au +0 -0
- data/spec/data/audio/king_nonviolence.flac +0 -0
- data/spec/data/audio/king_nonviolence.m4a +0 -0
- data/spec/data/audio/king_nonviolence.mka +0 -0
- data/spec/data/audio/king_nonviolence.mp3 +0 -0
- data/spec/data/audio/king_nonviolence.ogg +0 -0
- data/spec/data/audio/king_nonviolence.ra +0 -0
- data/spec/data/audio/king_nonviolence.voc +0 -0
- data/spec/data/audio/king_nonviolence.wav +0 -0
- data/spec/data/audio/king_nonviolence.wma +0 -0
- data/spec/data/audio/top_gun_secret.aac +0 -0
- data/spec/data/audio/top_gun_secret.ac3 +0 -0
- data/spec/data/audio/top_gun_secret.aiff +0 -0
- data/spec/data/audio/top_gun_secret.au +0 -0
- data/spec/data/audio/top_gun_secret.flac +0 -0
- data/spec/data/audio/top_gun_secret.m4a +0 -0
- data/spec/data/audio/top_gun_secret.mka +0 -0
- data/spec/data/audio/top_gun_secret.mp3 +0 -0
- data/spec/data/audio/top_gun_secret.ogg +0 -0
- data/spec/data/audio/top_gun_secret.ra +0 -0
- data/spec/data/audio/top_gun_secret.voc +0 -0
- data/spec/data/audio/top_gun_secret.wav +0 -0
- data/spec/data/audio/top_gun_secret.wma +0 -0
- data/spec/data/multipage.tif +0 -0
- data/spec/data/multipage.tif.jp2 +0 -0
- data/spec/data/test-ead.xml +0 -392
- data/spec/data/test-jpg.tif +0 -0
- data/spec/data/test-lzw.tif +0 -0
- data/spec/data/test-options.jpg +0 -0
- data/spec/data/test-options.png +0 -0
- data/spec/data/test.bmp +0 -0
- data/spec/data/test.doc +0 -0
- data/spec/data/test.docx +0 -0
- data/spec/data/test.gif +0 -0
- data/spec/data/test.jpg +0 -0
- data/spec/data/test.ods +0 -0
- data/spec/data/test.odt +0 -0
- data/spec/data/test.pdf +0 -0
- data/spec/data/test.pdf.tif +0 -0
- data/spec/data/test.png +0 -0
- data/spec/data/test.ps +0 -8631
- data/spec/data/test.psd +0 -0
- data/spec/data/test.rtf +0 -1455
- data/spec/data/test.tif +0 -0
- data/spec/data/test.txt +0 -12
- data/spec/data/test.xcf +0 -0
- data/spec/data/test.xls +0 -0
- data/spec/data/test.xlsx +0 -0
- data/spec/data/test.xml +0 -4
- data/spec/data/test_pdfa.pdf +0 -0
- data/spec/data/video/SampleVideo_1080x720_2mb.flv +0 -0
- data/spec/data/video/SampleVideo_1080x720_2mb.mkv +0 -0
- data/spec/data/video/SampleVideo_1080x720_2mb.mp4 +0 -0
- data/spec/data/video/SampleVideo_176x144_2mb.3gp +0 -0
- data/spec/data/video/SampleVideo_320x240_2mb.3gp +0 -0
- data/spec/data/video/SampleVideo_360x240_2mb.flv +0 -0
- data/spec/data/video/SampleVideo_360x240_2mb.mkv +0 -0
- data/spec/data/video/SampleVideo_360x240_2mb.mp4 +0 -0
- data/spec/data/video/copyright.png +0 -0
- data/spec/data/xml/134476_ead.XML +0 -1
- data/spec/data/xml/134476_ead.pdf +0 -0
- data/spec/data/xml/134476_fo.XML +0 -383
- data/spec/data/xml/134476_raw.XML +0 -141
- data/spec/data/xml/ead2fo_pdf.xsl +0 -1453
- data/spec/data/xml/header_nolink_pdf.xsl +0 -120
- data/spec/data/xml/lookupLists.xsl +0 -488
- data/spec/data/xml/scope_eadToHTML.xsl +0 -2376
- data/spec/data/xml/scope_xmlToEAD_dom.xsl +0 -952
- data/spec/identifier_spec.rb +0 -161
- data/spec/spec_helper.rb +0 -58
- data/spec/test_types.yml +0 -12
- data/spec/type_database_spec.rb +0 -140
- data/tools/bcpkix-jdk15on-1.49.jar +0 -0
- data/tools/bcprov-jdk15on-1.49.jar +0 -0
- data/tools/pdfbox/preflight-app-1.8.10.jar +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7f89add0e88c5d7a136475b303e5eec4da7af65ae6469ed24487e00c900871aa
|
4
|
+
data.tar.gz: '0902a88e237a8cf7a42f0ec0ea6aac4370590649aca894853a4f5de8b12dbb1e'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90d3b575f8b87aca635d7b526d26ce8a899626b83950e66ed7df382b4e983cf93e3bab4526d5fdbdd268c94e158c99f9296858816f4f630a29d7a7ae89ea73e0
|
7
|
+
data.tar.gz: dfb7854cacec55c33fe6e01d3cc834eb3debe1657366c0247803b3227e84113f9f230e6809462c212c659388b576faeed038464752f959997d39a84aabe52858
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
@@ -1,43 +1,61 @@
|
|
1
|
+
dist: bionic
|
1
2
|
language: ruby
|
2
|
-
sudo: false
|
3
|
-
dist: trusty
|
4
3
|
cache: bundler
|
4
|
+
sudo: false
|
5
5
|
rvm:
|
6
|
-
- 2.
|
7
|
-
- 2.
|
8
|
-
- 2.
|
9
|
-
- 2.
|
6
|
+
- 2.3
|
7
|
+
- 2.4
|
8
|
+
- 2.5
|
9
|
+
- 2.6
|
10
10
|
- ruby-head
|
11
|
-
- jruby-9.
|
12
|
-
- jruby-9.
|
11
|
+
- jruby-9.1
|
12
|
+
- jruby-9.2
|
13
13
|
- jruby-head
|
14
14
|
jdk:
|
15
|
-
-
|
16
|
-
-
|
15
|
+
- openjdk10
|
16
|
+
- openjdk11
|
17
17
|
matrix:
|
18
18
|
exclude:
|
19
|
-
- rvm: 2.
|
20
|
-
jdk:
|
21
|
-
- rvm: 2.
|
22
|
-
jdk:
|
23
|
-
- rvm: 2.
|
24
|
-
jdk:
|
25
|
-
- rvm: 2.
|
26
|
-
jdk:
|
19
|
+
- rvm: 2.3
|
20
|
+
jdk: openjdk10
|
21
|
+
- rvm: 2.4
|
22
|
+
jdk: openjdk10
|
23
|
+
- rvm: 2.5
|
24
|
+
jdk: openjdk10
|
25
|
+
- rvm: 2.6
|
26
|
+
jdk: openjdk10
|
27
27
|
- rvm: ruby-head
|
28
|
-
jdk:
|
28
|
+
jdk: openjdk10
|
29
29
|
allow_failures:
|
30
30
|
- rvm: ruby-head
|
31
31
|
- rvm: jruby-head
|
32
32
|
branches:
|
33
33
|
only:
|
34
|
-
|
34
|
+
- master
|
35
|
+
- v2
|
35
36
|
before_install:
|
36
|
-
-
|
37
|
-
-
|
38
|
-
- sudo apt-
|
39
|
-
- sudo
|
40
|
-
|
37
|
+
- gem update --system
|
38
|
+
- gem --version
|
39
|
+
- sudo add-apt-repository ppa:mc3man/bionic-media -y
|
40
|
+
- sudo apt-get update -y -q
|
41
|
+
- sudo apt-get install
|
42
|
+
- sudo apt-get install -y -q ffmpeg ubuntu-restricted-extras
|
43
|
+
- sudo pip install --upgrade pip
|
44
|
+
- sudo pip install --upgrade --ignore-installed opf-fido six
|
45
|
+
- sudo wget -O droid.zip -q http://www.nationalarchives.gov.uk/documents/information-management/droid-binary-6.4-bin.zip
|
46
|
+
- sudo mkdir -p /opt/droid
|
47
|
+
- sudo unzip droid.zip -d /opt/droid
|
48
|
+
- sudo chmod 755 /opt/droid/droid.sh
|
49
|
+
- sudo locale-gen "en_US.UTF-8"
|
50
|
+
- echo 'Europe/Brussels' | sudo tee /etc/timezone
|
51
|
+
- export TZ=Europe/Brussels
|
52
|
+
- sudo dpkg-reconfigure --frontend noninteractive tzdata
|
53
|
+
- date
|
54
|
+
before_script:
|
55
|
+
- export TZ=Europe/Brussels
|
56
|
+
env:
|
57
|
+
- LC_ALL=en_US.UTF-8
|
58
|
+
- LANG=en_US.UTF-8
|
41
59
|
addons:
|
42
60
|
apt:
|
43
61
|
packages:
|
data/README.md
CHANGED
@@ -26,9 +26,9 @@ Or install it yourself as:
|
|
26
26
|
|
27
27
|
## Usage
|
28
28
|
|
29
|
-
### ::Libis::Format::
|
29
|
+
### ::Libis::Format::Library
|
30
30
|
|
31
|
-
The
|
31
|
+
The format database is the core of the format services. It stores information about all the known formats.
|
32
32
|
|
33
33
|
### ::Libis::Format::Identifier
|
34
34
|
|
data/base/Dockerfile
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
FROM ubuntu:18.04
|
2
|
+
RUN apt-get -q update \
|
3
|
+
&& apt-get install -q -y --no-install-recommends \
|
4
|
+
wget \
|
5
|
+
unzip \
|
6
|
+
imagemagick \
|
7
|
+
python2.7 \
|
8
|
+
python-pip \
|
9
|
+
openjdk-8-jre-headless \
|
10
|
+
libreoffice \
|
11
|
+
ghostscript
|
12
|
+
|
13
|
+
RUN apt-get clean \
|
14
|
+
&& rm -rf /var/lib/apt/lists/*
|
15
|
+
|
16
|
+
RUN pip install --upgrade pip && pip install opf-fido
|
17
|
+
|
18
|
+
RUN wget -q -O droid.zip "http://www.nationalarchives.gov.uk/documents/information-management/droid-binary-6.4-bin.zip" \
|
19
|
+
&& mkdir -p /opt/droid \
|
20
|
+
&& unzip -d /opt/droid droid.zip \
|
21
|
+
&& chmod 755 /opt/droid/droid.sh \
|
22
|
+
&& rm droid.zip
|
23
|
+
|
24
|
+
RUN wget -q -O fop.tar.gz "http://www.apache.org/dyn/closer.cgi?filename=/xmlgraphics/fop/binaries/fop-2.3-bin.tar.gz&action=download" \
|
25
|
+
&& mkdir -p /opt/fop \
|
26
|
+
&& tar xzf fop.tar.gz -C /opt/fop --strip-components=2 \
|
27
|
+
&& rm fop.tar.gz
|
28
|
+
|
29
|
+
RUN echo "8\n9\n" | apt-get install tzdata
|
30
|
+
RUN mkdir -p /teneo/format/spec
|
31
|
+
ADD ./tools /teneo/format/tools
|
32
|
+
ADD ./data /teneo/format/data
|
33
|
+
ADD ./spec/data /teneo/format/spec/data
|
34
|
+
ADD ./base/rework_path /teneo/format/rework_path
|
35
|
+
CMD /bin/bash
|
@@ -0,0 +1,20 @@
|
|
1
|
+
FROM alpine:3.8
|
2
|
+
LABEL maintainer="kris.dekeyser@libis.be"
|
3
|
+
RUN apk update -q && apk upgrade -q
|
4
|
+
RUN apk add -q python2 py-pip openjdk8-jre ffmpeg libreoffice ttf-liberation ttf-freefont ttf-opensans sox git wget unzip sudo bash curl tar imagemagick
|
5
|
+
# install fido
|
6
|
+
RUN pip install -q --upgrade pip && pip install -q opf-fido
|
7
|
+
# install droid
|
8
|
+
RUN wget -q -O droid.zip http://www.nationalarchives.gov.uk/documents/information-management/droid-binary-6.4-bin.zip \
|
9
|
+
&& mkdir -p /opt/droid \
|
10
|
+
&& unzip -q -d /opt/droid droid.zip \
|
11
|
+
&& chmod 755 /opt/droid/droid.sh \
|
12
|
+
&& rm droid.zip
|
13
|
+
# install ImageMagick
|
14
|
+
RUN apk add -q imagemagick
|
15
|
+
ADD ../tools /tools
|
16
|
+
ADD ../data /cfg
|
17
|
+
VOLUME /data
|
18
|
+
WORKDIR /data
|
19
|
+
|
20
|
+
CMD ["/bin/bash", "-l"]
|
data/base/Dockerfile.rvm
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
ARG ubuntu_ver=latest
|
2
|
+
ARG ruby_ver=2.5.3
|
3
|
+
ARG node_ver=10.15.0
|
4
|
+
|
5
|
+
FROM ubuntu:${ubuntu_ver}
|
6
|
+
LABEL maintainer="kris.dekeyser@libis.be"
|
7
|
+
|
8
|
+
ENV RUBY_ENV=${ruby_ver}
|
9
|
+
ENV NVM_DIR=/usr/local/nvm
|
10
|
+
ENV NODE_VER=${node_ver}
|
11
|
+
ENV NODE_PATH=$NVM_DIR/v$NODE_VER/lib/node_modules
|
12
|
+
ENV NODE_PATH=$NVM_DIR/versions/node/v$NODE_VER/bin
|
13
|
+
ENV PATH "${PATH}:${NODE_PATH}:${NODE_PATH}/npm"
|
14
|
+
|
15
|
+
RUN echo $RUBY_ENV
|
16
|
+
|
17
|
+
ENV DEBIAN_FRONTEND=noninteractive
|
18
|
+
RUN apt-get update -q \
|
19
|
+
&& apt-get install -y -q --no-install-recommends software-properties-common apt-utils
|
20
|
+
RUN apt-add-repository -y ppa:rael-gc/rvm \
|
21
|
+
&& apt-get update -q
|
22
|
+
RUN apt-get install -y -q --no-install-recommends \
|
23
|
+
build-essential \
|
24
|
+
gnupg2 \
|
25
|
+
git \
|
26
|
+
wget \
|
27
|
+
curl \
|
28
|
+
sudo \
|
29
|
+
unzip \
|
30
|
+
openjdk-8-jre-headless
|
31
|
+
|
32
|
+
ENV BASH_ENV='/etc/profile exec bash'
|
33
|
+
SHELL ["/bin/bash", "-l", "-c"]
|
34
|
+
|
35
|
+
RUN addgroup --gid 2000 teneo \
|
36
|
+
&& adduser --uid 2000 --gid 2000 --disabled-password --gecos "Teneo user" teneo \
|
37
|
+
&& usermod -L -s /bin/bash teneo
|
38
|
+
RUN echo 'teneo ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers
|
39
|
+
|
40
|
+
USER teneo
|
41
|
+
|
42
|
+
RUN gpg2 --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
|
43
|
+
|
44
|
+
RUN curl -sSL https://get.rvm.io | bash -s stable
|
45
|
+
|
46
|
+
RUN echo 'gem: --no-document' > ${HOME}/.gemrc
|
47
|
+
RUN echo rvm install ${ruby_ver}
|
48
|
+
RUN echo rvm use ${RUBY_ENV}@teneo --create --ruby-version --ruby-gems
|
49
|
+
|
50
|
+
# required due to bug in rubygems (https://github.com/rubygems/rubygems/issues/2483)
|
51
|
+
RUN gem install rdoc bundler
|
52
|
+
RUN gem update --no-document --system
|
53
|
+
RUN rvm info
|
54
|
+
#ADD . /home/libis/libis_format
|
55
|
+
#WORKDIR /home/libis/libis_format
|
56
|
+
#RUN bundle install && bundle exec rake spec
|
data/base/rework_path
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
CMD=$1
|
4
|
+
shift
|
5
|
+
|
6
|
+
readarray -d ',' -t mapping <<< "$VOLUME_MAPPING"
|
7
|
+
|
8
|
+
args=("$@")
|
9
|
+
#echo "args: ${args[@]}"
|
10
|
+
for map in "${mapping[@]}"
|
11
|
+
do
|
12
|
+
map="${map//[$'\t\r\n ']}"
|
13
|
+
readarray -d '=' -t m <<< "$map"
|
14
|
+
src="${m[0]//[$'\t\r\n ']}"
|
15
|
+
tgt="${m[1]//[$'\t\r\n ']}"
|
16
|
+
# echo "$src -> $tgt"
|
17
|
+
args=("${args[@]/$src/$tgt}")
|
18
|
+
# echo "args: ${args[@]}"
|
19
|
+
done
|
20
|
+
${CMD} "${args[@]}"
|
data/docker_cfg.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
:fop_jar: '/tools/fop.jar'
|
data/lib/libis/format.rb
CHANGED
@@ -3,8 +3,11 @@ require 'libis/format/version'
|
|
3
3
|
module Libis
|
4
4
|
module Format
|
5
5
|
autoload :Config, 'libis/format/config'
|
6
|
-
|
7
|
-
autoload :
|
6
|
+
|
7
|
+
autoload :Info, 'libis/format/info'
|
8
|
+
autoload :Library, 'libis/format/library'
|
9
|
+
autoload :YamlLoader, 'libis/format/yaml_loader'
|
10
|
+
|
8
11
|
autoload :Identifier, 'libis/format/identifier'
|
9
12
|
|
10
13
|
autoload :Tool, 'libis/format/tool'
|
@@ -15,4 +18,10 @@ module Libis
|
|
15
18
|
TOOL_DIR = File.join(ROOT_DIR, 'tools')
|
16
19
|
|
17
20
|
end
|
18
|
-
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class Object
|
24
|
+
def blank?
|
25
|
+
respond_to?(:empty?) ? !!empty? : !self
|
26
|
+
end unless defined? :blank?
|
27
|
+
end
|
@@ -67,7 +67,7 @@ module Libis
|
|
67
67
|
arguments that any of the targetted converters support.
|
68
68
|
|
69
69
|
The source file's format will be identified by the Libis::Format::Identifier and the target file's format
|
70
|
-
will be derived from the file's extension. The Libis::Format::
|
70
|
+
will be derived from the file's extension. The Libis::Format::Library is used to relate extensions
|
71
71
|
with formats.
|
72
72
|
|
73
73
|
DESC
|
@@ -89,7 +89,7 @@ module Libis
|
|
89
89
|
A source file name and target file name should be supplied. The source file should exist and be readable.
|
90
90
|
The target file should be writable, but should not exist.
|
91
91
|
|
92
|
-
The target file's format will be derived from the file's extension. The Libis::Format::
|
92
|
+
The target file's format will be derived from the file's extension. The Libis::Format::Library is used
|
93
93
|
to relate extensions with formats.
|
94
94
|
|
95
95
|
DESC
|
@@ -265,11 +265,11 @@ module Libis
|
|
265
265
|
end
|
266
266
|
|
267
267
|
def extname(format)
|
268
|
-
Libis::Format::
|
268
|
+
Libis::Format::Library.get_field(format, :extensions)
|
269
269
|
end
|
270
270
|
|
271
271
|
def get_format(file_name)
|
272
|
-
Libis::Format::
|
272
|
+
Libis::Format::Library.get_field_by(:extension, File.extname(file_name), :format)
|
273
273
|
end
|
274
274
|
|
275
275
|
def format_identifier(file)
|
data/lib/libis/format/config.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'os'
|
3
|
+
require 'libis-tools'
|
3
4
|
|
4
5
|
module Libis
|
5
6
|
module Format
|
@@ -9,20 +10,23 @@ module Libis
|
|
9
10
|
|
10
11
|
Config[:converter_chain_max_level] = 8
|
11
12
|
|
12
|
-
Config[:
|
13
|
-
Config[:
|
14
|
-
Config[:
|
15
|
-
Config[:
|
16
|
-
Config[:
|
17
|
-
Config[:
|
18
|
-
Config[:
|
19
|
-
Config[:
|
13
|
+
Config[:java_cmd] = 'java'
|
14
|
+
Config[:j2k_cmd] = 'j2kdriver'
|
15
|
+
Config[:soffice_cmd] = 'soffice'
|
16
|
+
Config[:ghostscript_cmd] = 'gs'
|
17
|
+
Config[:droid_cmd] = '/opt/droid/droid.sh'
|
18
|
+
Config[:droid_temp_path] = '/tmp'
|
19
|
+
Config[:fido_cmd] = '/usr/local/bin/fido'
|
20
|
+
Config[:fop_jar] = File.join(Libis::Format::TOOL_DIR, 'fop', 'build', 'fop.jar')
|
21
|
+
Config[:ffmpeg_cmd] = 'ffmpeg'
|
20
22
|
Config[:fido_formats] = [(File.join(Libis::Format::DATA_DIR, 'lias_formats.xml'))]
|
21
23
|
Config[:pdf_tool] = File.join(Libis::Format::TOOL_DIR, 'PdfTool.jar')
|
24
|
+
Config[:preflight_jar] = File.join(Libis::Format::TOOL_DIR, 'pdfbox', 'preflight-app-2.0.13.jar')
|
22
25
|
# noinspection RubyStringKeysInHashInspection
|
23
26
|
Config[:xml_validations] = [['archive/ead', File.join(Libis::Format::DATA_DIR, 'ead.xsd')]]
|
24
|
-
Config[:
|
25
|
-
Config[:
|
27
|
+
Config[:format_library_implementation] = 'Libis::Format::YamlLoader.instance'
|
28
|
+
Config[:format_library_database] = File.join(Libis::Format::DATA_DIR, 'types.yml')
|
29
|
+
Config[:raw_audio_convert_cmd] = 'sox -V1 %s -e signed -b 16 -t wav %s rate %d channels %d'
|
26
30
|
Config[:watermark_font] = '/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf'
|
27
31
|
Config[:timeouts] = {
|
28
32
|
droid: 20 * 60,
|
@@ -32,6 +36,7 @@ module Libis
|
|
32
36
|
fop: 5 * 60,
|
33
37
|
identification_tool: 5 * 60,
|
34
38
|
office_to_pdf: 5 * 60,
|
39
|
+
pdf_select: 5 * 60,
|
35
40
|
pdf_copy: 5 * 60,
|
36
41
|
pdf_merge: 5 * 60,
|
37
42
|
pdf_optimizer: 5 * 60,
|
@@ -15,7 +15,7 @@ module Libis
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.output_types(format = nil)
|
18
|
-
return [] unless input_types.include?(format)
|
18
|
+
return [] unless format.nil? || input_types.include?(format)
|
19
19
|
[:MP3, :FLAC, :AC3, :AAC, :WMA, :ALAC, :WAV, :AIFF, :AMR, :AU, :M4A]
|
20
20
|
end
|
21
21
|
|
@@ -69,50 +69,16 @@ module Libis
|
|
69
69
|
(@options[:preset] ||= {})[stream] = name
|
70
70
|
end
|
71
71
|
|
72
|
-
# def encoder(value)
|
73
|
-
# @options[:encoder] = value
|
74
|
-
# end
|
75
|
-
#
|
76
|
-
# def encoder_options(value)
|
77
|
-
# @options[:encoder_options] = value
|
78
|
-
# end
|
79
|
-
|
80
72
|
def convert(source, target, _format, opts = {})
|
81
73
|
super
|
82
74
|
|
83
75
|
FileUtils.mkpath(File.dirname(target))
|
84
76
|
|
85
|
-
|
86
|
-
|
87
|
-
assemble_and_convert(source, target)
|
88
|
-
|
89
|
-
elsif File.directory?(source)
|
90
|
-
|
91
|
-
sources = Dir[File.join(source, '**', '*')].reject {|p| File.directory? p}
|
92
|
-
assemble_and_convert(sources, target)
|
77
|
+
convert_file(source, target)
|
93
78
|
|
94
|
-
else
|
95
|
-
|
96
|
-
convert_file(source, target)
|
97
|
-
|
98
|
-
end
|
99
|
-
|
100
|
-
target
|
101
|
-
|
102
|
-
end
|
103
|
-
|
104
|
-
def assemble_and_convert(sources, target)
|
105
|
-
Tempfile.create(%w(list .txt)) do |f|
|
106
|
-
sources.each {|src| f.puts src}
|
107
|
-
opts[:global] ||= []
|
108
|
-
opts[:global] += %w(-f concat)
|
109
|
-
f.close
|
110
|
-
target = convert_file(f.to_path, target)
|
111
|
-
end
|
112
|
-
target
|
113
79
|
end
|
114
80
|
|
115
|
-
def sounds_like(file1, file2, threshold, rate, channels)
|
81
|
+
def self.sounds_like(file1, file2, threshold, rate, channels)
|
116
82
|
rate ||= 96000
|
117
83
|
channels ||= 2
|
118
84
|
threshold ||= 0.85
|
@@ -4,7 +4,8 @@
|
|
4
4
|
require 'tmpdir'
|
5
5
|
require 'libis/tools/logger'
|
6
6
|
require 'libis/tools/temp_file'
|
7
|
-
require 'libis/
|
7
|
+
require 'libis/tools/extend/string'
|
8
|
+
require 'libis/format/library'
|
8
9
|
|
9
10
|
require_relative 'repository'
|
10
11
|
|
@@ -22,10 +23,23 @@ module Libis
|
|
22
23
|
@flags = {}
|
23
24
|
end
|
24
25
|
|
26
|
+
def self.category
|
27
|
+
:converter
|
28
|
+
end
|
29
|
+
|
30
|
+
def check_file_exist(file)
|
31
|
+
unless File.exist? file
|
32
|
+
error "Cannot find file '#{file}'."
|
33
|
+
return false
|
34
|
+
end
|
35
|
+
true
|
36
|
+
end
|
37
|
+
|
25
38
|
def convert(source, target, format, opts = {})
|
26
|
-
|
27
|
-
|
28
|
-
|
39
|
+
if source.is_a?(Array)
|
40
|
+
return nil unless source.map { |f| check_file_exist(f) }.reduce(:&)
|
41
|
+
else
|
42
|
+
return nil unless check_file_exist(source)
|
29
43
|
end
|
30
44
|
@options.merge!(opts[:options]) if opts[:options]
|
31
45
|
@flags.merge!(opts[:flags]) if opts[:flags]
|
@@ -51,7 +65,7 @@ module Libis
|
|
51
65
|
target
|
52
66
|
end
|
53
67
|
|
54
|
-
def Base.inherited(
|
68
|
+
def Base.inherited(klass)
|
55
69
|
|
56
70
|
Repository.register klass
|
57
71
|
|
@@ -73,12 +87,12 @@ module Libis
|
|
73
87
|
end
|
74
88
|
|
75
89
|
def input_mimetype?(mimetype)
|
76
|
-
type_id =
|
90
|
+
type_id = Libis::Format::Library.get_field_by(:mimetype, mimetype, :format)
|
77
91
|
input_type? type_id
|
78
92
|
end
|
79
93
|
|
80
94
|
def output_mimetype?(mimetype)
|
81
|
-
type_id =
|
95
|
+
type_id = Libis::Format::Library.get_field_by(:mimetype, mimetype, :format)
|
82
96
|
output_type? type_id
|
83
97
|
end
|
84
98
|
|
@@ -91,7 +105,7 @@ module Libis
|
|
91
105
|
end
|
92
106
|
|
93
107
|
def extension?(extension)
|
94
|
-
!
|
108
|
+
!Libis::Format::Library.get_field_by(:extension, extension, :format).nil?
|
95
109
|
end
|
96
110
|
|
97
111
|
end
|