hydra-works 0.16.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
|