hydra-works 0.16.0 → 2.0.0
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/.circleci/config.yml +59 -0
- data/.gitignore +3 -1
- data/.rubocop.yml +2 -6
- data/.rubocop_todo.yml +5 -0
- data/.solr_wrapper +1 -0
- data/CHANGELOG.md +621 -0
- data/CODE_OF_CONDUCT.md +36 -0
- data/CONTRIBUTING.md +23 -21
- data/Gemfile +11 -3
- data/LICENSE +14 -16
- data/README.md +54 -12
- data/SUPPORT.md +5 -0
- data/hydra-works.gemspec +15 -13
- data/lib/hydra/works/characterization.rb +5 -4
- data/lib/hydra/works/characterization/fits_document.rb +348 -144
- data/lib/hydra/works/characterization/schema/audio_schema.rb +2 -0
- data/lib/hydra/works/characterization/schema/video_schema.rb +2 -0
- data/lib/hydra/works/models/concerns/collection_behavior.rb +44 -0
- data/lib/hydra/works/models/concerns/file_set_behavior.rb +20 -0
- data/lib/hydra/works/models/concerns/work_behavior.rb +54 -0
- data/lib/hydra/works/services/add_external_file_to_file_set.rb +1 -1
- data/lib/hydra/works/services/add_file_to_file_set.rb +1 -1
- data/lib/hydra/works/services/characterization_service.rb +5 -0
- data/lib/hydra/works/services/determine_original_name.rb +1 -1
- data/lib/hydra/works/version.rb +1 -1
- data/lib/hydra/works/virus_scanner.rb +18 -2
- data/spec/fixtures/fits_0.8.5_tiff.xml +78 -0
- data/spec/fixtures/fits_1.2.0_avi.xml +83 -0
- data/spec/fixtures/fits_1.2.0_jpg.xml +76 -0
- data/spec/fixtures/fits_1.2.0_mp3.xml +51 -0
- data/spec/fixtures/fits_1.2.0_mp4.xml +88 -0
- data/spec/fixtures/fits_netcdf_two_mimetypes.xml +35 -0
- data/spec/hydra/works/characterization_spec.rb +12 -5
- data/spec/hydra/works/models/collection_spec.rb +162 -0
- data/spec/hydra/works/models/concerns/file_set/contained_files_spec.rb +3 -16
- data/spec/hydra/works/models/file_set_spec.rb +47 -0
- data/spec/hydra/works/models/work_spec.rb +213 -7
- data/spec/hydra/works/services/characterization_service_spec.rb +90 -27
- data/spec/hydra/works/services/persist_derivatives_spec.rb +6 -6
- data/spec/hydra/works/virus_scanner_spec.rb +31 -0
- data/use-cases/princeton_book_use_case.md +1 -1
- metadata +77 -67
- data/.travis.yml +0 -15
- data/lib/hydra/works/characterization/fits_mapper.rb +0 -0
- data/solr/config/_rest_managed.json +0 -3
- data/solr/config/admin-extra.html +0 -31
- data/solr/config/elevate.xml +0 -36
- data/solr/config/mapping-ISOLatin1Accent.txt +0 -246
- data/solr/config/protwords.txt +0 -21
- data/solr/config/schema.xml +0 -372
- data/solr/config/scripts.conf +0 -24
- data/solr/config/solrconfig.xml +0 -419
- data/solr/config/spellings.txt +0 -2
- data/solr/config/stopwords.txt +0 -58
- data/solr/config/stopwords_en.txt +0 -58
- data/solr/config/synonyms.txt +0 -31
- data/solr/config/xslt/example.xsl +0 -132
- data/solr/config/xslt/example_atom.xsl +0 -67
- data/solr/config/xslt/example_rss.xsl +0 -66
- data/solr/config/xslt/luke.xsl +0 -337
- data/spec/fixtures/eicar.txt +0 -1
@@ -4,6 +4,8 @@ module Hydra::Works::Characterization
|
|
4
4
|
property :channels, predicate: RDF::Vocab::NFO.channels
|
5
5
|
property :data_format, predicate: RDF::Vocab::EBUCore.hasDataFormat
|
6
6
|
property :frame_rate, predicate: RDF::Vocab::NFO.frameRate
|
7
|
+
# bit_rate might be an array containing multiple values
|
8
|
+
property :bit_rate, predicate: RDF::Vocab::EBUCore.bitRate
|
7
9
|
property :duration, predicate: RDF::Vocab::NFO.duration
|
8
10
|
property :sample_rate, predicate: RDF::Vocab::EBUCore.sampleRate
|
9
11
|
# properties without cannonical URIs
|
@@ -3,7 +3,9 @@ module Hydra::Works::Characterization
|
|
3
3
|
property :height, predicate: RDF::Vocab::EBUCore.height
|
4
4
|
property :width, predicate: RDF::Vocab::EBUCore.width
|
5
5
|
property :frame_rate, predicate: RDF::Vocab::NFO.frameRate
|
6
|
+
property :bit_rate, predicate: RDF::Vocab::EBUCore.bitRate
|
6
7
|
property :duration, predicate: RDF::Vocab::NFO.duration
|
7
8
|
property :sample_rate, predicate: RDF::Vocab::EBUCore.sampleRate
|
9
|
+
property :aspect_ratio, predicate: RDF::Vocab::EBUCore.aspectRatio
|
8
10
|
end
|
9
11
|
end
|
@@ -28,6 +28,30 @@ module Hydra::Works
|
|
28
28
|
type [Hydra::PCDM::Vocab::PCDMTerms.Collection, Vocab::WorksTerms.Collection]
|
29
29
|
end
|
30
30
|
|
31
|
+
def parent_collections
|
32
|
+
in_collections + member_of_collections
|
33
|
+
end
|
34
|
+
|
35
|
+
def parent_collection_ids
|
36
|
+
in_collection_ids + member_of_collection_ids
|
37
|
+
end
|
38
|
+
|
39
|
+
def child_collections
|
40
|
+
collections + member_collections
|
41
|
+
end
|
42
|
+
|
43
|
+
def child_collection_ids
|
44
|
+
collection_ids + member_collection_ids
|
45
|
+
end
|
46
|
+
|
47
|
+
def child_works
|
48
|
+
works + member_works
|
49
|
+
end
|
50
|
+
|
51
|
+
def child_work_ids
|
52
|
+
work_ids + member_work_ids
|
53
|
+
end
|
54
|
+
|
31
55
|
def ordered_works
|
32
56
|
ordered_members.to_a.select(&:work?)
|
33
57
|
end
|
@@ -44,6 +68,26 @@ module Hydra::Works
|
|
44
68
|
works.map(&:id)
|
45
69
|
end
|
46
70
|
|
71
|
+
def member_collections
|
72
|
+
return [] if id.nil?
|
73
|
+
member_objects = ActiveFedora::Base.where('member_of_collection_ids_ssim' => id)
|
74
|
+
member_objects.select(&:collection?).to_a
|
75
|
+
end
|
76
|
+
|
77
|
+
def member_collection_ids
|
78
|
+
member_collections.map(&:id)
|
79
|
+
end
|
80
|
+
|
81
|
+
def member_works
|
82
|
+
return [] if id.nil?
|
83
|
+
member_objects = ActiveFedora::Base.where('member_of_collection_ids_ssim' => id)
|
84
|
+
member_objects.select(&:work?).to_a
|
85
|
+
end
|
86
|
+
|
87
|
+
def member_work_ids
|
88
|
+
member_works.map(&:id)
|
89
|
+
end
|
90
|
+
|
47
91
|
# @return [Boolean] whether this instance is a Hydra::Works Collection.
|
48
92
|
def collection?
|
49
93
|
true
|
@@ -43,10 +43,30 @@ module Hydra::Works
|
|
43
43
|
true
|
44
44
|
end
|
45
45
|
|
46
|
+
def parent_works
|
47
|
+
in_works + member_of_works
|
48
|
+
end
|
49
|
+
|
50
|
+
def parent_work_ids
|
51
|
+
in_work_ids + member_of_work_ids
|
52
|
+
end
|
53
|
+
|
46
54
|
def in_works
|
47
55
|
ordered_by.select { |parent| parent.class.included_modules.include?(Hydra::Works::WorkBehavior) }.to_a
|
48
56
|
end
|
49
57
|
|
58
|
+
def in_work_ids
|
59
|
+
in_works.map(&:id)
|
60
|
+
end
|
61
|
+
|
62
|
+
def member_of_works
|
63
|
+
member_of.select(&:work?).to_a
|
64
|
+
end
|
65
|
+
|
66
|
+
def member_of_work_ids
|
67
|
+
member_of_works.map(&:id)
|
68
|
+
end
|
69
|
+
|
50
70
|
private
|
51
71
|
|
52
72
|
def remove_from_works
|
@@ -29,6 +29,38 @@ module Hydra::Works
|
|
29
29
|
type [Hydra::PCDM::Vocab::PCDMTerms.Object, Vocab::WorksTerms.Work]
|
30
30
|
end
|
31
31
|
|
32
|
+
def parent_collections
|
33
|
+
in_collections + member_of_collections
|
34
|
+
end
|
35
|
+
|
36
|
+
def parent_collection_ids
|
37
|
+
in_collection_ids + member_of_collection_ids
|
38
|
+
end
|
39
|
+
|
40
|
+
def parent_works
|
41
|
+
in_works + member_of_works
|
42
|
+
end
|
43
|
+
|
44
|
+
def parent_work_ids
|
45
|
+
in_work_ids + member_of_work_ids
|
46
|
+
end
|
47
|
+
|
48
|
+
def child_works
|
49
|
+
works + member_works
|
50
|
+
end
|
51
|
+
|
52
|
+
def child_work_ids
|
53
|
+
work_ids + member_work_ids
|
54
|
+
end
|
55
|
+
|
56
|
+
def child_file_sets
|
57
|
+
file_sets
|
58
|
+
end
|
59
|
+
|
60
|
+
def child_file_set_ids
|
61
|
+
file_set_ids
|
62
|
+
end
|
63
|
+
|
32
64
|
def works
|
33
65
|
members.select(&:work?)
|
34
66
|
end
|
@@ -37,6 +69,16 @@ module Hydra::Works
|
|
37
69
|
works.map(&:id)
|
38
70
|
end
|
39
71
|
|
72
|
+
def member_works
|
73
|
+
return [] if id.nil?
|
74
|
+
member_objects = ActiveFedora::Base.where('object_ids_ssim' => id)
|
75
|
+
member_objects.select(&:work?).to_a
|
76
|
+
end
|
77
|
+
|
78
|
+
def member_work_ids
|
79
|
+
member_works.map(&:id)
|
80
|
+
end
|
81
|
+
|
40
82
|
def ordered_works
|
41
83
|
ordered_members.to_a.select(&:work?)
|
42
84
|
end
|
@@ -82,6 +124,18 @@ module Hydra::Works
|
|
82
124
|
ordered_by.select { |parent| parent.class.included_modules.include?(Hydra::Works::WorkBehavior) }.to_a
|
83
125
|
end
|
84
126
|
|
127
|
+
def in_work_ids
|
128
|
+
in_works.map(&:id)
|
129
|
+
end
|
130
|
+
|
131
|
+
def member_of_works
|
132
|
+
in_objects.to_a.select(&:work?)
|
133
|
+
end
|
134
|
+
|
135
|
+
def member_of_work_ids
|
136
|
+
member_of_works.map(&:id)
|
137
|
+
end
|
138
|
+
|
85
139
|
private
|
86
140
|
|
87
141
|
# Remove this object from parent works or collections
|
@@ -15,7 +15,7 @@ module Hydra::Works
|
|
15
15
|
versioning = opts.fetch(:versioning, true)
|
16
16
|
filename = opts.fetch(:filename, external_file_url)
|
17
17
|
|
18
|
-
# TODO: required as a workaround for https://github.com/
|
18
|
+
# TODO: required as a workaround for https://github.com/samvera/active_fedora/pull/858
|
19
19
|
file_set.save unless file_set.persisted?
|
20
20
|
|
21
21
|
updater_class = versioning ? VersioningUpdater : Updater
|
@@ -11,7 +11,7 @@ module Hydra::Works
|
|
11
11
|
fail ArgumentError, 'supplied object must be a file set' unless file_set.file_set?
|
12
12
|
fail ArgumentError, 'supplied file must respond to read' unless file.respond_to? :read
|
13
13
|
|
14
|
-
# TODO: required as a workaround for https://github.com/
|
14
|
+
# TODO: required as a workaround for https://github.com/samvera/active_fedora/pull/858
|
15
15
|
file_set.save unless file_set.persisted?
|
16
16
|
|
17
17
|
updater_class = versioning ? VersioningUpdater : Updater
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'hydra-file_characterization'
|
2
|
+
require 'nokogiri'
|
2
3
|
|
3
4
|
module Hydra::Works
|
4
5
|
class CharacterizationService
|
@@ -62,6 +63,7 @@ module Hydra::Works
|
|
62
63
|
def parse_metadata(metadata)
|
63
64
|
omdoc = parser_class.new
|
64
65
|
omdoc.ng_xml = Nokogiri::XML(metadata) if metadata.present?
|
66
|
+
omdoc.__cleanup__ if omdoc.respond_to? :__cleanup__
|
65
67
|
characterization_terms(omdoc)
|
66
68
|
end
|
67
69
|
|
@@ -101,7 +103,10 @@ module Hydra::Works
|
|
101
103
|
end
|
102
104
|
|
103
105
|
def append_property_value(property, value)
|
106
|
+
# We don't want multiple mime_types; this overwrites each time to accept last value
|
104
107
|
value = object.send(property) + [value] unless property == :mime_type
|
108
|
+
# We don't want multiple heights / widths, pick the max
|
109
|
+
value = value.map(&:to_i).max.to_s if property == :height || property == :width
|
105
110
|
object.send("#{property}=", value)
|
106
111
|
end
|
107
112
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Hydra::Works
|
2
2
|
class DetermineOriginalName
|
3
3
|
# Determines the original name for a given file
|
4
|
-
# @param [IO, File, Rack::Multipart::UploadedFile
|
4
|
+
# @param [IO, File, Rack::Multipart::UploadedFile] file
|
5
5
|
# @return [String]
|
6
6
|
def self.call(file)
|
7
7
|
return file.original_name if file.respond_to?(:original_name)
|
data/lib/hydra/works/version.rb
CHANGED
@@ -30,16 +30,32 @@ module Hydra::Works
|
|
30
30
|
# Override this method to use your own virus checking software
|
31
31
|
# @return [Boolean]
|
32
32
|
def infected?
|
33
|
-
defined?(
|
33
|
+
if defined?(Clamby)
|
34
|
+
clamby_scanner
|
35
|
+
elsif defined?(ClamAV)
|
36
|
+
clam_av_scanner
|
37
|
+
else
|
38
|
+
null_scanner
|
39
|
+
end
|
34
40
|
end
|
35
41
|
|
36
42
|
def clam_av_scanner
|
43
|
+
Deprecation.warn(self, "The ClamAV has been replaced by Clamby " \
|
44
|
+
"as the supported virus scanner for hydra-works. " \
|
45
|
+
"ClamAV support will be removed in hydra-works 2.0 ")
|
37
46
|
scan_result = ClamAV.instance.method(:scanfile).call(file)
|
38
47
|
return false if scan_result == 0
|
39
48
|
warning "A virus was found in #{file}: #{scan_result}"
|
40
49
|
true
|
41
50
|
end
|
42
51
|
|
52
|
+
# @return [Boolean]
|
53
|
+
def clamby_scanner
|
54
|
+
scan_result = Clamby.virus?(file)
|
55
|
+
warning("A virus was found in #{file}") if scan_result
|
56
|
+
scan_result
|
57
|
+
end
|
58
|
+
|
43
59
|
# Always return zero if there's nothing available to check for viruses. This means that
|
44
60
|
# we assume all files have no viruses because we can't conclusively say if they have or not.
|
45
61
|
def null_scanner
|
@@ -50,7 +66,7 @@ module Hydra::Works
|
|
50
66
|
private
|
51
67
|
|
52
68
|
def warning(msg)
|
53
|
-
ActiveFedora::Base.logger
|
69
|
+
ActiveFedora::Base.logger&.warn(msg)
|
54
70
|
end
|
55
71
|
end
|
56
72
|
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<fits xmlns="http://hul.harvard.edu/ois/xml/ns/fits/fits_output" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hul.harvard.edu/ois/xml/ns/fits/fits_output http://hul
|
3
|
+
.harvard.edu/ois/xml/xsd/fits/fits_output.xsd" version="0.8.5" timestamp="6/20/17 11:20 AM">
|
4
|
+
<identification>
|
5
|
+
<identity format="Tagged Image File Format" mimetype="image/tiff" toolname="FITS" toolversion="0.8.5">
|
6
|
+
<tool toolname="Jhove" toolversion="1.5" />
|
7
|
+
<tool toolname="file utility" toolversion="5.14" />
|
8
|
+
<tool toolname="Exiftool" toolversion="9.13" />
|
9
|
+
<tool toolname="ffident" toolversion="0.2" />
|
10
|
+
<tool toolname="Tika" toolversion="1.3" />
|
11
|
+
<version toolname="Jhove" toolversion="1.5">6.0</version>
|
12
|
+
</identity>
|
13
|
+
</identification>
|
14
|
+
<fileinfo>
|
15
|
+
<size toolname="Jhove" toolversion="1.5">11082294</size>
|
16
|
+
<creatingApplicationName toolname="Jhove" toolversion="1.5">Capture One 8 Macintosh</creatingApplicationName>
|
17
|
+
<lastmodified toolname="Exiftool" toolversion="9.13" status="CONFLICT">2017:06:19 14:26:24-04:00</lastmodified>
|
18
|
+
<lastmodified toolname="Tika" toolversion="1.3" status="CONFLICT">2016-08-22T11:40:49</lastmodified>
|
19
|
+
<created toolname="Exiftool" toolversion="9.13" status="SINGLE_RESULT">2016:08:22 11:40:49</created>
|
20
|
+
<filepath toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">/home/ubuntu/2012-002_928.tif</filepath>
|
21
|
+
<filename toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">2012-002_928.tif</filename>
|
22
|
+
<md5checksum toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">b8344bf2f88bd421986d9ac988578e28</md5checksum>
|
23
|
+
<fslastmodified toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">1497896784000</fslastmodified>
|
24
|
+
</fileinfo>
|
25
|
+
<filestatus>
|
26
|
+
<well-formed toolname="Jhove" toolversion="1.5" status="SINGLE_RESULT">true</well-formed>
|
27
|
+
<valid toolname="Jhove" toolversion="1.5" status="SINGLE_RESULT">true</valid>
|
28
|
+
</filestatus>
|
29
|
+
<metadata>
|
30
|
+
<image>
|
31
|
+
<byteOrder toolname="Jhove" toolversion="1.5" status="SINGLE_RESULT">little endian</byteOrder>
|
32
|
+
<byteOrder toolname="Jhove" toolversion="1.5" status="SINGLE_RESULT">little endian</byteOrder>
|
33
|
+
<compressionScheme toolname="Jhove" toolversion="1.5">Uncompressed</compressionScheme>
|
34
|
+
<imageWidth toolname="Tika" toolversion="1.3" status="CONFLICT">160</imageWidth>
|
35
|
+
<imageWidth toolname="Jhove" toolversion="1.5" status="CONFLICT">2226</imageWidth>
|
36
|
+
<imageHeight toolname="Jhove" toolversion="1.5" status="CONFLICT">1650</imageHeight>
|
37
|
+
<imageHeight toolname="Tika" toolversion="1.3" status="CONFLICT">119</imageHeight>
|
38
|
+
<colorSpace toolname="Jhove" toolversion="1.5">RGB</colorSpace>
|
39
|
+
<referenceBlackWhite toolname="Jhove" toolversion="1.5" status="SINGLE_RESULT">0.0 255.0 0.0 255.0 0.0 255.0 0.0 255.0 0.0 255.0 0.0 255.0</referenceBlackWhite>
|
40
|
+
<iccProfileName toolname="Exiftool" toolversion="9.13" status="SINGLE_RESULT">Adobe RGB (1998)</iccProfileName>
|
41
|
+
<orientation toolname="Jhove" toolversion="1.5">normal*</orientation>
|
42
|
+
<samplingFrequencyUnit toolname="Jhove" toolversion="1.5">in.</samplingFrequencyUnit>
|
43
|
+
<xSamplingFrequency toolname="Jhove" toolversion="1.5">300</xSamplingFrequency>
|
44
|
+
<ySamplingFrequency toolname="Jhove" toolversion="1.5">300</ySamplingFrequency>
|
45
|
+
<bitsPerSample toolname="Jhove" toolversion="1.5">8 8 8</bitsPerSample>
|
46
|
+
<bitsPerSample toolname="Jhove" toolversion="1.5" status="SINGLE_RESULT">8 8 8</bitsPerSample>
|
47
|
+
<samplesPerPixel toolname="Jhove" toolversion="1.5" status="CONFLICT">3 3</samplesPerPixel>
|
48
|
+
<samplesPerPixel toolname="Exiftool" toolversion="9.13" status="CONFLICT">3</samplesPerPixel>
|
49
|
+
<scanningSoftwareName toolname="Jhove" toolversion="1.5">Capture One 8 Macintosh</scanningSoftwareName>
|
50
|
+
<digitalCameraModelName toolname="Exiftool" toolversion="9.13" status="SINGLE_RESULT">IQ3 80MP</digitalCameraModelName>
|
51
|
+
<exposureTime toolname="Jhove" toolversion="1.5" status="CONFLICT">0.017</exposureTime>
|
52
|
+
<exposureTime toolname="Exiftool" toolversion="9.13" status="CONFLICT">1/60</exposureTime>
|
53
|
+
<isoSpeedRating toolname="Jhove" toolversion="1.5">50</isoSpeedRating>
|
54
|
+
<lightSource toolname="Jhove" toolversion="1.5" status="CONFLICT">other</lightSource>
|
55
|
+
<lightSource toolname="Exiftool" toolversion="9.13" status="CONFLICT">other light source</lightSource>
|
56
|
+
<iccProfileVersion toolname="Exiftool" toolversion="9.13" status="SINGLE_RESULT">2.1.0</iccProfileVersion>
|
57
|
+
<captureDevice toolname="Exiftool" toolversion="9.13" status="SINGLE_RESULT">digital still camera</captureDevice>
|
58
|
+
<digitalCameraManufacturer toolname="Exiftool" toolversion="9.13" status="SINGLE_RESULT">Phase One</digitalCameraManufacturer>
|
59
|
+
<exposureProgram toolname="Exiftool" toolversion="9.13" status="SINGLE_RESULT">Manual</exposureProgram>
|
60
|
+
<exifVersion toolname="Exiftool" toolversion="9.13" status="SINGLE_RESULT">0220</exifVersion>
|
61
|
+
<shutterSpeedValue toolname="Exiftool" toolversion="9.13" status="SINGLE_RESULT">1/60</shutterSpeedValue>
|
62
|
+
<sensingMethod toolname="Exiftool" toolversion="9.13" status="SINGLE_RESULT">One-chip color area sensor</sensingMethod>
|
63
|
+
</image>
|
64
|
+
</metadata>
|
65
|
+
<statistics fitsExecutionTime="1523">
|
66
|
+
<tool toolname="OIS Audio Information" toolversion="0.1" status="did not run" />
|
67
|
+
<tool toolname="ADL Tool" toolversion="0.1" status="did not run" />
|
68
|
+
<tool toolname="Jhove" toolversion="1.5" executionTime="1220" />
|
69
|
+
<tool toolname="file utility" toolversion="5.14" executionTime="964" />
|
70
|
+
<tool toolname="Exiftool" toolversion="9.13" executionTime="1110" />
|
71
|
+
<tool toolname="NLNZ Metadata Extractor" toolversion="3.4GA" status="did not run" />
|
72
|
+
<tool toolname="OIS File Information" toolversion="0.2" executionTime="225" />
|
73
|
+
<tool toolname="OIS XML Metadata" toolversion="0.2" status="did not run" />
|
74
|
+
<tool toolname="ffident" toolversion="0.2" executionTime="695" />
|
75
|
+
<tool toolname="Tika" toolversion="1.3" executionTime="1371" />
|
76
|
+
</statistics>
|
77
|
+
</fits>
|
78
|
+
|
@@ -0,0 +1,83 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<fits xmlns="http://hul.harvard.edu/ois/xml/ns/fits/fits_output" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://hul.harvard.edu/ois/xml/ns/fits/fits_output http://hul.harvard.edu/ois/xml/xsd/fits/fits_output.xsd" version="1.2.0" timestamp="4/4/18 4:12 PM">
|
3
|
+
<identification status="CONFLICT">
|
4
|
+
<identity format="AVI" mimetype="video/avi" toolname="FITS" toolversion="1.2.0">
|
5
|
+
<tool toolname="MediaInfo" toolversion="0.7.75" />
|
6
|
+
</identity>
|
7
|
+
<identity format="Audio/Video Interleaved Format" mimetype="video/x-msvideo" toolname="FITS" toolversion="1.2.0">
|
8
|
+
<tool toolname="Droid" toolversion="6.3" />
|
9
|
+
<tool toolname="file utility" toolversion="5.31" />
|
10
|
+
<tool toolname="ffident" toolversion="0.2" />
|
11
|
+
<externalIdentifier toolname="Droid" toolversion="6.3" type="puid">fmt/5</externalIdentifier>
|
12
|
+
</identity>
|
13
|
+
</identification>
|
14
|
+
<fileinfo>
|
15
|
+
<filepath toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">/Users/cjcolvar/Documents/Code/samvera/hydra-works/spec/fixtures/countdown.avi</filepath>
|
16
|
+
<filename toolname="MediaInfo" toolversion="0.7.75">countdown.avi</filename>
|
17
|
+
<size toolname="MediaInfo" toolversion="0.7.75">723678</size>
|
18
|
+
<md5checksum toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">d43ffafa098925dae10feeca46dc9a87</md5checksum>
|
19
|
+
<fslastmodified toolname="OIS File Information" toolversion="0.2" status="SINGLE_RESULT">1522855873000</fslastmodified>
|
20
|
+
</fileinfo>
|
21
|
+
<filestatus />
|
22
|
+
<metadata>
|
23
|
+
<video>
|
24
|
+
<location toolname="MediaInfo" toolversion="0.7.75" status="SINGLE_RESULT">/Users/cjcolvar/Documents/Code/samvera/hydra-works/spec/fixtures/countdown.avi</location>
|
25
|
+
<mimeType toolname="MediaInfo" toolversion="0.7.75" status="SINGLE_RESULT">video/avi</mimeType>
|
26
|
+
<format toolname="MediaInfo" toolversion="0.7.75" status="SINGLE_RESULT">AVI</format>
|
27
|
+
<duration toolname="MediaInfo" toolversion="0.7.75" status="SINGLE_RESULT">14148</duration>
|
28
|
+
<bitRate toolname="MediaInfo" toolversion="0.7.75" status="SINGLE_RESULT">409204</bitRate>
|
29
|
+
<dateModified toolname="MediaInfo" toolversion="0.7.75" status="SINGLE_RESULT">UTC 2018-04-04 15:31:13</dateModified>
|
30
|
+
<track type="video" id="0" toolname="MediaInfo" toolversion="0.7.75" status="SINGLE_RESULT">
|
31
|
+
<videoDataEncoding>CRAM</videoDataEncoding>
|
32
|
+
<codecId>CRAM</codecId>
|
33
|
+
<codecCC>CRAM</codecCC>
|
34
|
+
<codecName>CRAM</codecName>
|
35
|
+
<codecInfo>Microsoft Video 1</codecInfo>
|
36
|
+
<compression>Unknown</compression>
|
37
|
+
<byteOrder>Unknown</byteOrder>
|
38
|
+
<bitDepth>8 bits</bitDepth>
|
39
|
+
<bitRate>313826</bitRate>
|
40
|
+
<duration>14100</duration>
|
41
|
+
<delay>0</delay>
|
42
|
+
<trackSize>553118</trackSize>
|
43
|
+
<width>356 pixels</width>
|
44
|
+
<height>264 pixels</height>
|
45
|
+
<frameRate>10.000</frameRate>
|
46
|
+
<frameCount>141</frameCount>
|
47
|
+
<aspectRatio>4:3</aspectRatio>
|
48
|
+
</track>
|
49
|
+
<track type="audio" id="1" toolname="MediaInfo" toolversion="0.7.75" status="SINGLE_RESULT">
|
50
|
+
<audioDataEncoding>PCM</audioDataEncoding>
|
51
|
+
<codecId>1</codecId>
|
52
|
+
<codecFamily>PCM</codecFamily>
|
53
|
+
<compression>none</compression>
|
54
|
+
<bitRate>88200</bitRate>
|
55
|
+
<bitRateMode>Constant</bitRateMode>
|
56
|
+
<bitDepth>8 bits</bitDepth>
|
57
|
+
<duration>14148</duration>
|
58
|
+
<delay>0</delay>
|
59
|
+
<trackSize>155980</trackSize>
|
60
|
+
<samplingRate>11025</samplingRate>
|
61
|
+
<numSamples>155982</numSamples>
|
62
|
+
<channels>1</channels>
|
63
|
+
<byteOrder>Little</byteOrder>
|
64
|
+
</track>
|
65
|
+
</video>
|
66
|
+
</metadata>
|
67
|
+
<statistics fitsExecutionTime="692">
|
68
|
+
<tool toolname="MediaInfo" toolversion="0.7.75" executionTime="662" />
|
69
|
+
<tool toolname="OIS Audio Information" toolversion="0.1" status="did not run" />
|
70
|
+
<tool toolname="ADL Tool" toolversion="0.1" status="did not run" />
|
71
|
+
<tool toolname="VTT Tool" toolversion="0.1" status="did not run" />
|
72
|
+
<tool toolname="Droid" toolversion="6.3" executionTime="273" />
|
73
|
+
<tool toolname="Jhove" toolversion="1.16" status="did not run" />
|
74
|
+
<tool toolname="file utility" toolversion="5.31" executionTime="644" />
|
75
|
+
<tool toolname="Exiftool" toolversion="10.00" status="did not run" />
|
76
|
+
<tool toolname="NLNZ Metadata Extractor" toolversion="3.6GA" status="did not run" />
|
77
|
+
<tool toolname="OIS File Information" toolversion="0.2" executionTime="80" />
|
78
|
+
<tool toolname="OIS XML Metadata" toolversion="0.2" status="did not run" />
|
79
|
+
<tool toolname="ffident" toolversion="0.2" executionTime="555" />
|
80
|
+
<tool toolname="Tika" toolversion="1.10" status="did not run" />
|
81
|
+
</statistics>
|
82
|
+
</fits>
|
83
|
+
|