berkeley_library-av-core 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.dockerignore +391 -0
- data/.github/workflows/build.yml +30 -0
- data/.gitignore +388 -0
- data/.idea/av_core.iml +146 -0
- data/.idea/codeStyles/Project.xml +12 -0
- data/.idea/codeStyles/codeStyleConfig.xml +5 -0
- data/.idea/go.imports.xml +6 -0
- data/.idea/inspectionProfiles/Project_Default.xml +37 -0
- data/.idea/misc.xml +6 -0
- data/.idea/modules.xml +8 -0
- data/.idea/vcs.xml +6 -0
- data/.rubocop.yml +241 -0
- data/.ruby-version +1 -0
- data/.simplecov +8 -0
- data/CHANGES.md +38 -0
- data/Gemfile +3 -0
- data/Jenkinsfile +16 -0
- data/LICENSE.md +21 -0
- data/README.md +20 -0
- data/Rakefile +20 -0
- data/av_core.gemspec +49 -0
- data/lib/berkeley_library/av/config.rb +238 -0
- data/lib/berkeley_library/av/constants.rb +30 -0
- data/lib/berkeley_library/av/core/module_info.rb +18 -0
- data/lib/berkeley_library/av/core.rb +7 -0
- data/lib/berkeley_library/av/marc/util.rb +114 -0
- data/lib/berkeley_library/av/marc.rb +52 -0
- data/lib/berkeley_library/av/metadata/README.md +5 -0
- data/lib/berkeley_library/av/metadata/field.rb +110 -0
- data/lib/berkeley_library/av/metadata/fields.rb +130 -0
- data/lib/berkeley_library/av/metadata/link.rb +28 -0
- data/lib/berkeley_library/av/metadata/readers/alma.rb +54 -0
- data/lib/berkeley_library/av/metadata/readers/base.rb +53 -0
- data/lib/berkeley_library/av/metadata/readers/tind.rb +52 -0
- data/lib/berkeley_library/av/metadata/readers.rb +2 -0
- data/lib/berkeley_library/av/metadata/source.rb +93 -0
- data/lib/berkeley_library/av/metadata/tind_html_metadata_da.json +2076 -0
- data/lib/berkeley_library/av/metadata/value.rb +121 -0
- data/lib/berkeley_library/av/metadata.rb +103 -0
- data/lib/berkeley_library/av/record.rb +86 -0
- data/lib/berkeley_library/av/record_id.rb +121 -0
- data/lib/berkeley_library/av/record_not_found.rb +7 -0
- data/lib/berkeley_library/av/restrictions.rb +36 -0
- data/lib/berkeley_library/av/track.rb +132 -0
- data/lib/berkeley_library/av/types/duration.rb +67 -0
- data/lib/berkeley_library/av/types/file_type.rb +84 -0
- data/lib/berkeley_library/av/util.rb +65 -0
- data/rakelib/bundle.rake +8 -0
- data/rakelib/coverage.rake +11 -0
- data/rakelib/gem.rake +54 -0
- data/rakelib/rubocop.rake +18 -0
- data/rakelib/spec.rake +12 -0
- data/spec/.rubocop.yml +116 -0
- data/spec/data/10.23.19.JessieLaCavalier.02.mrc +3 -0
- data/spec/data/alma/991005939359706532-sru.xml +123 -0
- data/spec/data/alma/991034756419706532-sru.xml +162 -0
- data/spec/data/alma/991047179369706532-sru.xml +210 -0
- data/spec/data/alma/991054360089706532-sru.xml +186 -0
- data/spec/data/alma/b11082434-sru.xml +165 -0
- data/spec/data/alma/b18538031-sru.xml +123 -0
- data/spec/data/alma/b20786580-sru.xml +123 -0
- data/spec/data/alma/b22139647-sru.xml +171 -0
- data/spec/data/alma/b22139658-sru.xml +282 -0
- data/spec/data/alma/b23161018-sru.xml +182 -0
- data/spec/data/alma/b23305522-sru.xml +144 -0
- data/spec/data/alma/b24071548-sru.xml +136 -0
- data/spec/data/alma/b24659129-sru.xml +210 -0
- data/spec/data/alma/b25207857-sru.xml +217 -0
- data/spec/data/alma/b25716973-sru.xml +186 -0
- data/spec/data/alma/b25742488-sru.xml +246 -0
- data/spec/data/record-(cityarts)00002.xml +78 -0
- data/spec/data/record-(cityarts)00773.xml +94 -0
- data/spec/data/record-(clir)00020.xml +153 -0
- data/spec/data/record-(miscmat)00615.xml +45 -0
- data/spec/data/record-(pacradio)00107.xml +85 -0
- data/spec/data/record-(pacradio)01469.xml +82 -0
- data/spec/data/record-empty-result.xml +4 -0
- data/spec/data/record-multiple-998s-disordered.xml +178 -0
- data/spec/data/record-multiple-998s.xml +178 -0
- data/spec/data/record-physcolloquia-bk00169017b.xml +78 -0
- data/spec/data/record-ragged-998-subfields.xml +122 -0
- data/spec/data/record-ragged-998s-multiple-fields.xml +160 -0
- data/spec/data/record-redirect-to-login.html +288 -0
- data/spec/data/record_id/bibs_with_check_digits.txt +151 -0
- data/spec/data/search-1993.xml +158 -0
- data/spec/data/search-b23305516.xml +81 -0
- data/spec/lib/berkeley_library/av/av_spec.rb +12 -0
- data/spec/lib/berkeley_library/av/config_spec.rb +250 -0
- data/spec/lib/berkeley_library/av/marc/util_spec.rb +150 -0
- data/spec/lib/berkeley_library/av/marc_spec.rb +62 -0
- data/spec/lib/berkeley_library/av/metadata/field_spec.rb +81 -0
- data/spec/lib/berkeley_library/av/metadata/fields_spec.rb +180 -0
- data/spec/lib/berkeley_library/av/metadata/metadata_spec.rb +274 -0
- data/spec/lib/berkeley_library/av/metadata/source_spec.rb +261 -0
- data/spec/lib/berkeley_library/av/metadata/value_spec.rb +29 -0
- data/spec/lib/berkeley_library/av/record_id_spec.rb +72 -0
- data/spec/lib/berkeley_library/av/record_spec.rb +284 -0
- data/spec/lib/berkeley_library/av/track_spec.rb +335 -0
- data/spec/lib/berkeley_library/av/types/duration_spec.rb +91 -0
- data/spec/lib/berkeley_library/av/types/file_type_spec.rb +98 -0
- data/spec/lib/berkeley_library/av/util_spec.rb +30 -0
- data/spec/spec_helper.rb +63 -0
- metadata +499 -0
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'typesafe_enum'
|
2
|
+
|
3
|
+
module BerkeleyLibrary
|
4
|
+
module AV
|
5
|
+
module Types
|
6
|
+
class FileType < TypesafeEnum::Base
|
7
|
+
|
8
|
+
# ############################################################
|
9
|
+
# Non-enum constants
|
10
|
+
|
11
|
+
# Supported extensions for MP3 files
|
12
|
+
MP3_EXTENSIONS = ['.mp3'].freeze
|
13
|
+
# Supported extensions for MP4 files, per https://www.wowza.com/docs/understanding-protocols-and-formats-supported-by-wowza-streaming-engine#supported-media-file-formats-for-vod-streaming
|
14
|
+
MP4_EXTENSIONS = %w[.mp4 .f4v .mov .m4a .m4v .mp4a .mp4v .3gp .3g2].freeze
|
15
|
+
|
16
|
+
# ############################################################
|
17
|
+
# Initializer
|
18
|
+
|
19
|
+
# rubocop:disable Metrics/ParameterLists
|
20
|
+
def initialize(key, player_tag, mime_type, label: nil, prefix: nil, extensions: [])
|
21
|
+
raise_if_duplicate(extensions)
|
22
|
+
|
23
|
+
@player_tag = player_tag
|
24
|
+
@mime_type = mime_type
|
25
|
+
@label = label || player_tag.capitalize
|
26
|
+
@prefix = prefix || key.to_s.downcase
|
27
|
+
@extensions = extensions
|
28
|
+
|
29
|
+
super(key)
|
30
|
+
end
|
31
|
+
|
32
|
+
# rubocop:enable Metrics/ParameterLists
|
33
|
+
|
34
|
+
# ############################################################
|
35
|
+
# Accessors and instance methods
|
36
|
+
|
37
|
+
attr_reader :player_tag, :mime_type, :label, :prefix, :extensions
|
38
|
+
|
39
|
+
def to_s
|
40
|
+
value.to_s
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
# ############################################################
|
46
|
+
# Private methods
|
47
|
+
|
48
|
+
def raise_if_duplicate(extensions)
|
49
|
+
FileType.each do |t|
|
50
|
+
next if (dups = extensions & t.extensions).empty?
|
51
|
+
|
52
|
+
raise(ArgumentError, "#{FileType}::#{t.key} already covers extensions #{dups.join(', ')}") if t
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# ############################################################
|
57
|
+
# Enum members
|
58
|
+
|
59
|
+
new(:MP3, 'audio', 'application/x-mpegURL', extensions: MP3_EXTENSIONS)
|
60
|
+
new(:MP4, 'video', 'video/mp4', extensions: MP4_EXTENSIONS)
|
61
|
+
new(:UNKNOWN, 'object', 'application/octet-stream', label: 'Unknown')
|
62
|
+
|
63
|
+
# ############################################################
|
64
|
+
# Class methods
|
65
|
+
|
66
|
+
class << self
|
67
|
+
# Returns the AV file type for the specified path
|
68
|
+
#
|
69
|
+
# @param path [String]
|
70
|
+
# @return [FileType] The file type, or FileType::UNKNOWN if the type cannot be determined
|
71
|
+
def for_path(path)
|
72
|
+
extension = path && File.extname(path)
|
73
|
+
by_extension[extension] || FileType::UNKNOWN
|
74
|
+
end
|
75
|
+
|
76
|
+
def by_extension
|
77
|
+
@by_extension ||= FileType.flat_map { |t| t.extensions.map { |x| [x, t] } }.to_h
|
78
|
+
end
|
79
|
+
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
require 'berkeley_library/logging'
|
3
|
+
require 'berkeley_library/util'
|
4
|
+
require 'berkeley_library/av/core/module_info'
|
5
|
+
|
6
|
+
module BerkeleyLibrary
|
7
|
+
module AV
|
8
|
+
module Util
|
9
|
+
include BerkeleyLibrary::Logging
|
10
|
+
include BerkeleyLibrary::Util
|
11
|
+
|
12
|
+
DEFAULT_USER_AGENT = "#{Core::ModuleInfo::NAME} #{Core::ModuleInfo::VERSION} (#{Core::ModuleInfo::HOMEPAGE})".freeze
|
13
|
+
|
14
|
+
def do_get(uri, ignore_errors: false)
|
15
|
+
body = URIs.get(uri, headers: { user_agent: DEFAULT_USER_AGENT })
|
16
|
+
body && body.scrub
|
17
|
+
rescue RestClient::Exception
|
18
|
+
raise unless ignore_errors
|
19
|
+
end
|
20
|
+
|
21
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
22
|
+
def compare_by_attributes(v1, v2, *attrs)
|
23
|
+
return 0 if v1.equal?(v2)
|
24
|
+
return if v2.nil?
|
25
|
+
|
26
|
+
attr_order = attrs.lazy.filter_map do |attr|
|
27
|
+
return nil unless v2.respond_to?(attr)
|
28
|
+
|
29
|
+
a1 = v1.send(attr)
|
30
|
+
a2 = v2.send(attr)
|
31
|
+
o = compare_values(a1, a2)
|
32
|
+
o unless o.nil? || o == 0
|
33
|
+
end.first
|
34
|
+
|
35
|
+
attr_order || 0
|
36
|
+
end
|
37
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
38
|
+
|
39
|
+
def compare_values(v1, v2)
|
40
|
+
return 0 if v1 == v2
|
41
|
+
return 1 if v1.nil?
|
42
|
+
return -1 if v2.nil?
|
43
|
+
# TODO: better array comparison
|
44
|
+
return compare_values(v1.to_s, v2.to_s) unless v1.respond_to?(:<)
|
45
|
+
|
46
|
+
v1 < v2 ? -1 : 1
|
47
|
+
end
|
48
|
+
|
49
|
+
def tidy_value(value)
|
50
|
+
value && value.gsub(/[[:space:]]*-[[:space:]]*/, '-').strip
|
51
|
+
end
|
52
|
+
|
53
|
+
def class_name(t)
|
54
|
+
return class_name(t.class) unless t.is_a?(Class) || t.is_a?(Module)
|
55
|
+
|
56
|
+
t.name.sub(/^.*::/, '')
|
57
|
+
end
|
58
|
+
|
59
|
+
class << self
|
60
|
+
include AV::Util
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
data/rakelib/bundle.rake
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'ci/reporter/rake/rspec'
|
2
|
+
|
3
|
+
# Configure CI::Reporter report generation
|
4
|
+
ENV['GENERATE_REPORTS'] ||= 'true'
|
5
|
+
ENV['CI_REPORTS'] = 'artifacts/rspec'
|
6
|
+
|
7
|
+
desc 'Run all specs in spec directory, with coverage'
|
8
|
+
task coverage: ['ci:setup:rspec'] do
|
9
|
+
ENV['COVERAGE'] ||= 'true'
|
10
|
+
Rake::Task['spec:all'].invoke
|
11
|
+
end
|
data/rakelib/gem.rake
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
require 'rubygems/gem_runner'
|
2
|
+
require 'berkeley_library/av/core/module_info'
|
3
|
+
|
4
|
+
gem_root_module = BerkeleyLibrary::AV::Core
|
5
|
+
|
6
|
+
class << gem_root_module
|
7
|
+
def project_root
|
8
|
+
@project_root ||= File.expand_path('..', __dir__)
|
9
|
+
end
|
10
|
+
|
11
|
+
def artifacts_dir
|
12
|
+
return project_root unless ENV['CI']
|
13
|
+
|
14
|
+
@artifacts_dir ||= File.join(project_root, 'artifacts')
|
15
|
+
end
|
16
|
+
|
17
|
+
def gemspec_file
|
18
|
+
@gemspec_file ||= begin
|
19
|
+
gemspec_files = Dir.glob(File.expand_path('*.gemspec', project_root))
|
20
|
+
raise ArgumentError, "Too many .gemspecs: #{gemspec_files.join(', ')}" if gemspec_files.size > 1
|
21
|
+
raise ArgumentError, 'No .gemspec file found' if gemspec_files.empty?
|
22
|
+
|
23
|
+
gemspec_files[0]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def gemspec_basename
|
28
|
+
File.basename(gemspec_file)
|
29
|
+
end
|
30
|
+
|
31
|
+
def output_file
|
32
|
+
@output_file ||= begin
|
33
|
+
gem_name = self::ModuleInfo::NAME
|
34
|
+
version = self::ModuleInfo::VERSION
|
35
|
+
basename = "#{gem_name}-#{version}.gem"
|
36
|
+
File.join(artifacts_dir, basename)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def output_file_relative
|
41
|
+
return File.basename(output_file) unless ENV['CI']
|
42
|
+
|
43
|
+
@output_file_relative ||= begin
|
44
|
+
artifacts_dir_relative = File.basename(artifacts_dir)
|
45
|
+
File.join(artifacts_dir_relative, File.basename(output_file))
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
desc "Build #{gem_root_module.gemspec_basename} as #{gem_root_module.output_file_relative}"
|
51
|
+
task :gem do
|
52
|
+
args = ['build', gem_root_module.gemspec_file, "--output=#{gem_root_module.output_file}"]
|
53
|
+
Gem::GemRunner.new.run(args)
|
54
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubocop'
|
2
|
+
require 'rubocop/rake_task'
|
3
|
+
|
4
|
+
desc 'Run rubocop with HTML output'
|
5
|
+
RuboCop::RakeTask.new(:rubocop) do |cop|
|
6
|
+
output = ENV['RUBOCOP_OUTPUT'] || 'artifacts/rubocop/index.html'
|
7
|
+
puts "Writing RuboCop inspection report to #{output}"
|
8
|
+
|
9
|
+
cop.verbose = false
|
10
|
+
cop.formatters = ['html']
|
11
|
+
cop.options = ['--out', output]
|
12
|
+
end
|
13
|
+
|
14
|
+
desc 'Run RuboCop with auto-correct, and output results to console'
|
15
|
+
task :ra do
|
16
|
+
# b/c we want console output, we can't just use `rubocop:auto_correct`
|
17
|
+
RuboCop::CLI.new.run(['--safe-auto-correct'])
|
18
|
+
end
|
data/rakelib/spec.rake
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'rspec/core/rake_task'
|
2
|
+
|
3
|
+
namespace :spec do
|
4
|
+
desc 'Run all tests'
|
5
|
+
RSpec::Core::RakeTask.new(:all) do |task|
|
6
|
+
task.rspec_opts = %w[--color --format documentation --order default]
|
7
|
+
task.pattern = 'spec/**/*_spec.rb'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
desc 'Run all tests'
|
12
|
+
task spec: ['spec:all']
|
data/spec/.rubocop.yml
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
inherit_from: ../.rubocop.yml
|
2
|
+
|
3
|
+
require:
|
4
|
+
- rubocop-rspec
|
5
|
+
|
6
|
+
Layout/LineLength:
|
7
|
+
Enabled: false
|
8
|
+
|
9
|
+
# Sometimes we're testing the operator
|
10
|
+
Lint/BinaryOperatorWithIdenticalOperands:
|
11
|
+
Enabled: false
|
12
|
+
|
13
|
+
Metrics/AbcSize:
|
14
|
+
Enabled: false
|
15
|
+
|
16
|
+
Metrics/BlockLength:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
Metrics/ClassLength:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
Metrics/ModuleLength:
|
23
|
+
Enabled: false
|
24
|
+
|
25
|
+
Metrics/MethodLength:
|
26
|
+
Enabled: false
|
27
|
+
|
28
|
+
############################################################
|
29
|
+
# rubocop-rspec
|
30
|
+
|
31
|
+
# believe me, it wasn't by choice
|
32
|
+
RSpec/AnyInstance:
|
33
|
+
Enabled: false
|
34
|
+
|
35
|
+
# we meant to do that
|
36
|
+
RSpec/BeforeAfterAll:
|
37
|
+
Enabled: false
|
38
|
+
|
39
|
+
# more words != more readable
|
40
|
+
RSpec/ContextWording:
|
41
|
+
Enabled: false
|
42
|
+
|
43
|
+
# not everything we test is a class
|
44
|
+
RSpec/DescribeClass:
|
45
|
+
Enabled: false
|
46
|
+
|
47
|
+
# explicit >>> implicit
|
48
|
+
RSpec/DescribedClass:
|
49
|
+
Enabled: false
|
50
|
+
|
51
|
+
# more punctuation != more readable
|
52
|
+
RSpec/DescribeSymbol:
|
53
|
+
Enabled: false
|
54
|
+
|
55
|
+
# setup cost / time >>> failure granularity
|
56
|
+
RSpec/ExampleLength:
|
57
|
+
Max: 20
|
58
|
+
CountAsOne:
|
59
|
+
- array
|
60
|
+
- hash
|
61
|
+
- heredoc
|
62
|
+
|
63
|
+
# we meant to do that
|
64
|
+
RSpec/ExpectInHook:
|
65
|
+
Enabled: false
|
66
|
+
|
67
|
+
# your naming scheme is not in possession of all the facts
|
68
|
+
RSpec/FilePath:
|
69
|
+
Enabled: false
|
70
|
+
|
71
|
+
# explicit >>> implicit
|
72
|
+
RSpec/InstanceVariable:
|
73
|
+
Enabled: false
|
74
|
+
|
75
|
+
# maybe when 'all' has a corresponding 'none' matcher
|
76
|
+
RSpec/IteratedExpectation:
|
77
|
+
Enabled: false
|
78
|
+
|
79
|
+
# we meant to do that
|
80
|
+
RSpec/MessageSpies:
|
81
|
+
Enabled: false
|
82
|
+
|
83
|
+
# too late now
|
84
|
+
RSpec/MultipleMemoizedHelpers:
|
85
|
+
Enabled: false
|
86
|
+
|
87
|
+
# setup cost / time >>> failure granularity
|
88
|
+
RSpec/MultipleExpectations:
|
89
|
+
Enabled: false
|
90
|
+
|
91
|
+
# cure is worse than the disease
|
92
|
+
RSpec/NestedGroups:
|
93
|
+
Enabled: false
|
94
|
+
|
95
|
+
# more quotation marks != more readable
|
96
|
+
RSpec/SharedExamples:
|
97
|
+
Enabled: false
|
98
|
+
|
99
|
+
# we meant to do that
|
100
|
+
RSpec/StubbedMock:
|
101
|
+
Enabled: false
|
102
|
+
|
103
|
+
# we meant to do that
|
104
|
+
RSpec/VerifiedDoubles:
|
105
|
+
Enabled: false
|
106
|
+
|
107
|
+
############################################################
|
108
|
+
# rubocop-rspec
|
109
|
+
|
110
|
+
# enable newer rubocop-rspec cops
|
111
|
+
|
112
|
+
RSpec/IdenticalEqualityAssertion: # new in 2.4
|
113
|
+
Enabled: true
|
114
|
+
|
115
|
+
RSpec/Rails/AvoidSetupHook: # new in 2.4
|
116
|
+
Enabled: true
|
@@ -0,0 +1,3 @@
|
|
1
|
+
02139ngm 2200241 a 4500007001400000007001000014008004100024040001300065100002300078245008600101260008800187300004900275500004800324518011900372520109600491538003601587710006601623799002801689799007201717856008801789949000701877999001301884cr cn||||||||vz czaz||191205s2019 cau o vleng d aCUYcCUY1 aLeCavalier, Jesse.10aJessie LaCavalier Architecture LecturecJesse. LeCavalierh[electronic resource]. aBerkeley, CA :bUniversity of California, Berkeley, Coll. of Environ. Design,c2019 a1 streaming video file :bdigital, sd., col. aoriginally produced as an .mts file in 2019 aRecorded at a Lecture held on null, sponsored by the Coll. of Environ. Design, University of California, Berkeley. aLeCavalier will consider the influence of logistics on contemporary urbanism by describing some of his recent research and design work.
|
2
|
+
|
3
|
+
Jesse LeCavalier (LECAVALIER R+D) explores the architectural and urban implications of contemporary logistics and infrastructure. He is the author of The Rule of Logistics: Walmart and the Architecture of Fulfillment (University of Minnesota Press, 2016) and associate professor of architecture at the Daniels Faculty of Architecture at the University of Toronto. LeCavalier was the Daniel Rose Visiting Assistant Professor at the Yale School of Architecture from 2018-19 and the 2010�11 Sanders Fellow at the University of Michigan. His work has appeared in Cabinet, Public Culture, Places, Art Papers, and Harvard Design Magazine and his essay, �The Restlessness of Objects,� was the recipient of a 2013 Core77 Design Award. LeCavalier�s installation �Architectures of Fulfillment� was part of the 2017 Seoul Biennale for Architecture and Urbanism as his project "Shelf Life" was one of five finalists for the 2018 MoMA PS1 Young Architects Program. aMode of access: World Wide Web.2 aUniversity of California, Berkeley.bColl. of Environ. Design0 aOnline ced lectures5CU0 aUC Berkeley Library online video collection: fkZUC7oX6hG4RNe7wn0kTQ40uhttp://n2t.net/ark:/28722/bk001887n8zzUC Berkeley Library Online Video Collection. 1lwb c - -
|
@@ -0,0 +1,123 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?><searchRetrieveResponse xmlns="http://www.loc.gov/zing/srw/">
|
2
|
+
<version>1.2</version>
|
3
|
+
<numberOfRecords>1</numberOfRecords>
|
4
|
+
<records>
|
5
|
+
<record>
|
6
|
+
<recordSchema>marcxml</recordSchema>
|
7
|
+
<recordPacking>xml</recordPacking>
|
8
|
+
<recordData>
|
9
|
+
<record xmlns="http://www.loc.gov/MARC21/slim">
|
10
|
+
<leader>01754ngm a2200265 4500</leader>
|
11
|
+
<controlfield tag="001">991005939359706532</controlfield>
|
12
|
+
<controlfield tag="005">20210907142744.0</controlfield>
|
13
|
+
<controlfield tag="007">cr cn|||||||||</controlfield>
|
14
|
+
<controlfield tag="007">vz czaz||</controlfield>
|
15
|
+
<controlfield tag="008">131125s2010 cau o v|eng d</controlfield>
|
16
|
+
<datafield ind1=" " ind2=" " tag="035">
|
17
|
+
<subfield code="a">(CUY)UCB-b207865802-01ucs_ber</subfield>
|
18
|
+
</datafield>
|
19
|
+
<datafield ind1=" " ind2=" " tag="035">
|
20
|
+
<subfield code="a">(OCoLC)864425217</subfield>
|
21
|
+
<subfield code="9">ExL</subfield>
|
22
|
+
</datafield>
|
23
|
+
<datafield ind1=" " ind2=" " tag="035">
|
24
|
+
<subfield code="a">(EXLNZ-01UCS_NETWORK)9915213295606531</subfield>
|
25
|
+
</datafield>
|
26
|
+
<datafield ind1="1" ind2=" " tag="100">
|
27
|
+
<subfield code="a">Oakland family.</subfield>
|
28
|
+
</datafield>
|
29
|
+
<datafield ind1="0" ind2="0" tag="245">
|
30
|
+
<subfield code="a">Iraqi Refugee Interview of Oakland family</subfield>
|
31
|
+
<subfield code="h">[electronic resource].</subfield>
|
32
|
+
</datafield>
|
33
|
+
<datafield ind1=" " ind2=" " tag="260">
|
34
|
+
<subfield code="a">[Hayward, CA :</subfield>
|
35
|
+
<subfield code="b">Citizens Reach Out,</subfield>
|
36
|
+
<subfield code="c">2010]</subfield>
|
37
|
+
</datafield>
|
38
|
+
<datafield ind1=" " ind2=" " tag="300">
|
39
|
+
<subfield code="a">3 video files (1 hour, 26 min., 50 sec.)</subfield>
|
40
|
+
</datafield>
|
41
|
+
<datafield ind1="1" ind2=" " tag="490">
|
42
|
+
<subfield code="a">Iraqi refugee interviews</subfield>
|
43
|
+
</datafield>
|
44
|
+
<datafield ind1=" " ind2=" " tag="518">
|
45
|
+
<subfield code="a">Interview conducted on: 7/10/2010.</subfield>
|
46
|
+
</datafield>
|
47
|
+
<datafield ind1=" " ind2=" " tag="520">
|
48
|
+
<subfield code="a">This is the story of a family with extreme medical problems caught in the war and unable to receive medical care in Iraq any longer. They make it to the USA and find themselves living in a dangerous neighborhood and trying to learn the medical procedures to get care. This family spoke no English. They ranged in age from mother and sister in their 40’s to their daughters in their 20’s and a son 12. They all suffered a genetic blood disease. Because of their disease they had to go regularly to get blood transfusions and other medical care in Iraq. It became impossible to function after the US invasion as transportation shut down, and the hospitals had no medical supplies to offer them. They finally were able to immigrate to the U.S. They told us that many people who had severe health problems before the war either died or managed to find a country to take them.</subfield>
|
49
|
+
</datafield>
|
50
|
+
<datafield ind1=" " ind2="0" tag="650">
|
51
|
+
<subfield code="a">Iraq War, 2003-2011</subfield>
|
52
|
+
<subfield code="x">Refugees</subfield>
|
53
|
+
<subfield code="v">Interviews.</subfield>
|
54
|
+
</datafield>
|
55
|
+
<datafield ind1=" " ind2="0" tag="650">
|
56
|
+
<subfield code="a">Political refugees</subfield>
|
57
|
+
<subfield code="z">Iraq</subfield>
|
58
|
+
<subfield code="v">Interviews.</subfield>
|
59
|
+
</datafield>
|
60
|
+
<datafield ind1=" " ind2="0" tag="650">
|
61
|
+
<subfield code="a">Refugees</subfield>
|
62
|
+
<subfield code="z">Iraq</subfield>
|
63
|
+
<subfield code="v">Interviews.</subfield>
|
64
|
+
</datafield>
|
65
|
+
<datafield ind1="1" ind2=" " tag="700">
|
66
|
+
<subfield code="a">Shapiro, Ruth.</subfield>
|
67
|
+
</datafield>
|
68
|
+
<datafield ind1="1" ind2=" " tag="700">
|
69
|
+
<subfield code="a">Friend, Ruth.</subfield>
|
70
|
+
</datafield>
|
71
|
+
<datafield ind1=" " ind2="0" tag="830">
|
72
|
+
<subfield code="a">Iraqi refugee interviews.</subfield>
|
73
|
+
</datafield>
|
74
|
+
<datafield ind1=" " ind2=" " tag="955">
|
75
|
+
<subfield code="a">20131125</subfield>
|
76
|
+
<subfield code="b">Citizens Reach Out</subfield>
|
77
|
+
<subfield code="9">LOCAL</subfield>
|
78
|
+
</datafield>
|
79
|
+
<datafield ind1="4" ind2="0" tag="956">
|
80
|
+
<subfield code="z">Citizens Reach Out Iraqi refugee interviews. Freely available for streaming.</subfield>
|
81
|
+
<subfield code="u">https://avplayer.lib.berkeley.edu/Video-Public-CitizensReachOut/b20786580</subfield>
|
82
|
+
<subfield code="9">LOCAL</subfield>
|
83
|
+
</datafield>
|
84
|
+
<datafield ind1="0" ind2=" " tag="973">
|
85
|
+
<subfield code="a">Citizens Reach Out. Iraqi refugee interviews.</subfield>
|
86
|
+
<subfield code="5">CU</subfield>
|
87
|
+
<subfield code="9">LOCAL</subfield>
|
88
|
+
</datafield>
|
89
|
+
<datafield ind1=" " ind2=" " tag="996">
|
90
|
+
<subfield code="a">b207865802</subfield>
|
91
|
+
<subfield code="b">Updated: 11-22-20</subfield>
|
92
|
+
<subfield code="c">Created: 11-25-13</subfield>
|
93
|
+
<subfield code="d">CatDate: 11-25-13</subfield>
|
94
|
+
<subfield code="9">LOCAL</subfield>
|
95
|
+
</datafield>
|
96
|
+
<datafield ind1=" " ind2=" " tag="998">
|
97
|
+
<subfield code="a">00:26:35</subfield>
|
98
|
+
<subfield code="t">Part 1</subfield>
|
99
|
+
<subfield code="g">CRO00001_Oakland_Family_1.mp4</subfield>
|
100
|
+
<subfield code="a">00:21:24</subfield>
|
101
|
+
<subfield code="t">Part 2</subfield>
|
102
|
+
<subfield code="g">CRO00001_Oakland_Family_2.mp4</subfield>
|
103
|
+
<subfield code="a">00:38:51</subfield>
|
104
|
+
<subfield code="t">Part 3</subfield>
|
105
|
+
<subfield code="g">CRO00001_Oakland_Family_3.mp4</subfield>
|
106
|
+
<subfield code="9">LOCAL</subfield>
|
107
|
+
</datafield>
|
108
|
+
<datafield ind1=" " ind2=" " tag="AVE">
|
109
|
+
<subfield code="8">531004455860006532</subfield>
|
110
|
+
<subfield code="e">Available</subfield>
|
111
|
+
<subfield code="n">Citizens Reach Out Iraqi refugee interviews. Freely available for streaming.</subfield>
|
112
|
+
</datafield>
|
113
|
+
</record>
|
114
|
+
</recordData>
|
115
|
+
<recordIdentifier>991005939359706532</recordIdentifier>
|
116
|
+
<recordPosition>1</recordPosition>
|
117
|
+
</record>
|
118
|
+
</records>
|
119
|
+
<extraResponseData xmlns:xb="http://www.exlibris.com/repository/search/xmlbeans/">
|
120
|
+
<xb:exact>true</xb:exact>
|
121
|
+
<xb:responseDate>2021-11-08T12:06:46-0800</xb:responseDate>
|
122
|
+
</extraResponseData>
|
123
|
+
</searchRetrieveResponse>
|
@@ -0,0 +1,162 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?><searchRetrieveResponse xmlns="http://www.loc.gov/zing/srw/">
|
2
|
+
<version>1.2</version>
|
3
|
+
<numberOfRecords>1</numberOfRecords>
|
4
|
+
<records>
|
5
|
+
<record>
|
6
|
+
<recordSchema>marcxml</recordSchema>
|
7
|
+
<recordPacking>xml</recordPacking>
|
8
|
+
<recordData>
|
9
|
+
<record xmlns="http://www.loc.gov/MARC21/slim">
|
10
|
+
<leader>01580ngm a2200277Ki 4500</leader>
|
11
|
+
<controlfield tag="001">991034756419706532</controlfield>
|
12
|
+
<controlfield tag="005">20211112121037.0</controlfield>
|
13
|
+
<controlfield tag="008">160308s1926 xxu||| mleng d</controlfield>
|
14
|
+
<datafield ind1="8" ind2=" " tag="024">
|
15
|
+
<subfield code="a">Motion Picture 204 B</subfield>
|
16
|
+
</datafield>
|
17
|
+
<datafield ind1=" " ind2=" " tag="035">
|
18
|
+
<subfield code="a">(CUY)UCB-b232415080-01ucs_ber</subfield>
|
19
|
+
</datafield>
|
20
|
+
<datafield ind1=" " ind2=" " tag="035">
|
21
|
+
<subfield code="a">(OCoLC)944128179</subfield>
|
22
|
+
<subfield code="9">ExL</subfield>
|
23
|
+
</datafield>
|
24
|
+
<datafield ind1=" " ind2=" " tag="035">
|
25
|
+
<subfield code="a">(EXLNZ-01UCS_NETWORK)9915015568206531</subfield>
|
26
|
+
</datafield>
|
27
|
+
<datafield ind1=" " ind2=" " tag="040">
|
28
|
+
<subfield code="a">CUY</subfield>
|
29
|
+
<subfield code="b">eng</subfield>
|
30
|
+
<subfield code="e">rda</subfield>
|
31
|
+
<subfield code="c">CUY</subfield>
|
32
|
+
</datafield>
|
33
|
+
<datafield ind1="0" ind2="0" tag="245">
|
34
|
+
<subfield code="a">Yellowstone trip, 1926.</subfield>
|
35
|
+
</datafield>
|
36
|
+
<datafield ind1=" " ind2="0" tag="264">
|
37
|
+
<subfield code="a">[United States?] :</subfield>
|
38
|
+
<subfield code="b">[producer not identified],</subfield>
|
39
|
+
<subfield code="c">1926.</subfield>
|
40
|
+
</datafield>
|
41
|
+
<datafield ind1=" " ind2=" " tag="300">
|
42
|
+
<subfield code="a">9 motion picture reels :</subfield>
|
43
|
+
<subfield code="b">silent, black and white ;</subfield>
|
44
|
+
<subfield code="c">16 mm</subfield>
|
45
|
+
</datafield>
|
46
|
+
<datafield ind1=" " ind2=" " tag="336">
|
47
|
+
<subfield code="a">two-dimensional moving image</subfield>
|
48
|
+
<subfield code="b">tdi</subfield>
|
49
|
+
<subfield code="2">rdacontent.</subfield>
|
50
|
+
</datafield>
|
51
|
+
<datafield ind1=" " ind2=" " tag="337">
|
52
|
+
<subfield code="a">projected</subfield>
|
53
|
+
<subfield code="b">g</subfield>
|
54
|
+
<subfield code="2">rdamedia.</subfield>
|
55
|
+
</datafield>
|
56
|
+
<datafield ind1=" " ind2=" " tag="338">
|
57
|
+
<subfield code="a">film reel</subfield>
|
58
|
+
<subfield code="b">mr</subfield>
|
59
|
+
<subfield code="2">rdacarrier.</subfield>
|
60
|
+
</datafield>
|
61
|
+
<datafield ind1=" " ind2=" " tag="500">
|
62
|
+
<subfield code="a">Item call number: Motion Picture 204 B. Reels 1-2 shelved in BMP 1 Box 99; reels 3-9, Box 100.</subfield>
|
63
|
+
</datafield>
|
64
|
+
<datafield ind1="0" ind2=" " tag="505">
|
65
|
+
<subfield code="a">Reel 1. Start to Grant's Pass (210 feet) -- Reel 2. Grant's Pass to Yellowstone (225 feet) -- Reel 3. Entering Yellowstone (425 feet) -- Reel 4. Old Faithful, Heart Lake (450 feet) -- Reel 5. Heart Lake to Grand Canyon (425 feet) -- Reel 6. Animals and birds (425 feet) -- Reel 7. Animals and birds (200 feet) -- Reel 8. Grand Canyon to Tetons (350 feet) -- Reel 9. Yellowstone to Burlingame (350 feet).</subfield>
|
66
|
+
</datafield>
|
67
|
+
<datafield ind1=" " ind2=" " tag="506">
|
68
|
+
<subfield code="a">RESTRICTED.</subfield>
|
69
|
+
<subfield code="b">Requests for use of original must be approved by the appropriate curator.</subfield>
|
70
|
+
<subfield code="5">CU-BANC</subfield>
|
71
|
+
</datafield>
|
72
|
+
<datafield ind1=" " ind2=" " tag="506">
|
73
|
+
<subfield code="a">ITEM STORED OFF-SITE AS PART OF BANCROFT MOTION PICTURE COLLECTION (BMP 1) :</subfield>
|
74
|
+
<subfield code="b">Advance notice required for use.</subfield>
|
75
|
+
</datafield>
|
76
|
+
<datafield ind1=" " ind2=" " tag="508">
|
77
|
+
<subfield code="a">Photographed by Dr. Ernest W. Cleary.</subfield>
|
78
|
+
</datafield>
|
79
|
+
<datafield ind1="1" ind2=" " tag="592">
|
80
|
+
<subfield code="c">Gift,</subfield>
|
81
|
+
<subfield code="a">Dr. Ernest W. Cleary to Sierra Club papers,</subfield>
|
82
|
+
<subfield code="d">June 1972.</subfield>
|
83
|
+
<subfield code="9">LOCAL</subfield>
|
84
|
+
</datafield>
|
85
|
+
<datafield ind1=" " ind2="0" tag="651">
|
86
|
+
<subfield code="a">Yellowstone National Park.</subfield>
|
87
|
+
</datafield>
|
88
|
+
<datafield ind1="1" ind2=" " tag="700">
|
89
|
+
<subfield code="a">Cleary, Ernest W.,</subfield>
|
90
|
+
<subfield code="e">filmmaker.</subfield>
|
91
|
+
</datafield>
|
92
|
+
<datafield ind1=" " ind2=" " tag="910">
|
93
|
+
<subfield code="a">Has related records (UCB)</subfield>
|
94
|
+
</datafield>
|
95
|
+
<datafield ind1=" " ind2=" " tag="955">
|
96
|
+
<subfield code="a">20160308</subfield>
|
97
|
+
<subfield code="b">tbtb01</subfield>
|
98
|
+
<subfield code="9">LOCAL</subfield>
|
99
|
+
</datafield>
|
100
|
+
<datafield ind1=" " ind2=" " tag="980">
|
101
|
+
<subfield code="a">ITEM STORED OFF-SITE AS PART OF BANCROFT MOTION PICTURE COLLECTION (BMP 1) :</subfield>
|
102
|
+
<subfield code="b">Advance notice required for use.</subfield>
|
103
|
+
<subfield code="9">LOCAL</subfield>
|
104
|
+
</datafield>
|
105
|
+
<datafield ind1=" " ind2=" " tag="980">
|
106
|
+
<subfield code="a">RESTRICTED.</subfield>
|
107
|
+
<subfield code="b">Requests for use of original must be approved by the appropriate curator.</subfield>
|
108
|
+
<subfield code="5">CU-BANC</subfield>
|
109
|
+
<subfield code="9">LOCAL</subfield>
|
110
|
+
</datafield>
|
111
|
+
<datafield ind1=" " ind2=" " tag="996">
|
112
|
+
<!-- injected for testing; real record has bib number -->
|
113
|
+
<subfield code="a">991034756419706532</subfield>
|
114
|
+
<!-- <subfield code="a">b232415080</subfield>-->
|
115
|
+
<subfield code="b">Updated: 05-28-21</subfield>
|
116
|
+
<subfield code="c">Created: 03-08-16</subfield>
|
117
|
+
<subfield code="d">CatDate: 03-08-16</subfield>
|
118
|
+
<subfield code="9">LOCAL</subfield>
|
119
|
+
</datafield>
|
120
|
+
<datafield ind1=" " ind2=" " tag="AVA">
|
121
|
+
<subfield code="0">991082710499706532</subfield>
|
122
|
+
<subfield code="8">22955977220006532</subfield>
|
123
|
+
<subfield code="a">01UCS_BER</subfield>
|
124
|
+
<subfield code="b">NRLF</subfield>
|
125
|
+
<subfield code="c">Bancroft (NRLF)</subfield>
|
126
|
+
<subfield code="d">BMP 1</subfield>
|
127
|
+
<subfield code="e">unavailable</subfield>
|
128
|
+
<subfield code="f">1</subfield>
|
129
|
+
<subfield code="g">1</subfield>
|
130
|
+
<subfield code="i">UCB_Campus</subfield>
|
131
|
+
<subfield code="j">nbtbr</subfield>
|
132
|
+
<subfield code="k">8</subfield>
|
133
|
+
<subfield code="p">1</subfield>
|
134
|
+
<subfield code="q">Northern Regional Library Facility</subfield>
|
135
|
+
</datafield>
|
136
|
+
<datafield ind1=" " ind2=" " tag="AVA">
|
137
|
+
<subfield code="0">991083642049706532</subfield>
|
138
|
+
<subfield code="8">22956020930006532</subfield>
|
139
|
+
<subfield code="a">01UCS_BER</subfield>
|
140
|
+
<subfield code="b">NRLF</subfield>
|
141
|
+
<subfield code="c">Bancroft (NRLF)</subfield>
|
142
|
+
<subfield code="d">BMP 1</subfield>
|
143
|
+
<subfield code="e">unavailable</subfield>
|
144
|
+
<subfield code="f">1</subfield>
|
145
|
+
<subfield code="g">1</subfield>
|
146
|
+
<subfield code="i">UCB_Campus</subfield>
|
147
|
+
<subfield code="j">nbtbr</subfield>
|
148
|
+
<subfield code="k">8</subfield>
|
149
|
+
<subfield code="p">2</subfield>
|
150
|
+
<subfield code="q">Northern Regional Library Facility</subfield>
|
151
|
+
</datafield>
|
152
|
+
</record>
|
153
|
+
</recordData>
|
154
|
+
<recordIdentifier>991034756419706532</recordIdentifier>
|
155
|
+
<recordPosition>1</recordPosition>
|
156
|
+
</record>
|
157
|
+
</records>
|
158
|
+
<extraResponseData xmlns:xb="http://www.exlibris.com/repository/search/xmlbeans/">
|
159
|
+
<xb:exact>true</xb:exact>
|
160
|
+
<xb:responseDate>2022-01-05T11:35:15-0800</xb:responseDate>
|
161
|
+
</extraResponseData>
|
162
|
+
</searchRetrieveResponse>
|