overdrive_metadata 1.0.0 → 1.0.1
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.
- data/.gitignore +2 -0
- data/Gemfile +6 -0
- data/Rakefile +21 -6
- data/lib/overdrive_metadata.rb +18 -11
- data/overdrive_metadata.gemspec +48 -0
- metadata +26 -21
- data/.autotest +0 -23
- data/.gemtest +0 -0
- data/History.txt +0 -2
- data/Manifest.txt +0 -8
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Rakefile
CHANGED
|
@@ -1,13 +1,28 @@
|
|
|
1
1
|
# -*- ruby -*-
|
|
2
2
|
|
|
3
|
-
require '
|
|
4
|
-
require 'hoe'
|
|
3
|
+
require 'rake/testtask'
|
|
5
4
|
|
|
6
|
-
|
|
7
|
-
|
|
5
|
+
desc "Validate the gemspec"
|
|
6
|
+
task :gemspec do
|
|
7
|
+
gemspec.validate
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
desc "Build gem locally"
|
|
11
|
+
task :build => :gemspec do
|
|
12
|
+
system "gem build #{gemspec.name}.gemspec"
|
|
13
|
+
FileUtils.mkdir_p "pkg"
|
|
14
|
+
FileUtils.mv "#{gemspec.name}-#{gemspec.version}.gem", "pkg"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
desc "Install gem locally"
|
|
18
|
+
task :install => :build do
|
|
19
|
+
system "gem install pkg/#{gemspec.name}-#{gemspec.version}"
|
|
20
|
+
end
|
|
8
21
|
|
|
9
|
-
|
|
10
|
-
|
|
22
|
+
Rake::TestTask.new do |t|
|
|
23
|
+
t.libs << "test"
|
|
24
|
+
t.test_files = FileList['test/test*.rb']
|
|
25
|
+
t.verbose = true
|
|
11
26
|
end
|
|
12
27
|
|
|
13
28
|
# vim: syntax=ruby
|
data/lib/overdrive_metadata.rb
CHANGED
|
@@ -20,7 +20,7 @@ require 'spreadsheet'
|
|
|
20
20
|
# w.close
|
|
21
21
|
|
|
22
22
|
class OverdriveMetadata
|
|
23
|
-
VERSION = '1.0.
|
|
23
|
+
VERSION = '1.0.1'
|
|
24
24
|
|
|
25
25
|
attr_reader :records
|
|
26
26
|
|
|
@@ -58,24 +58,26 @@ class OverdriveMetadata
|
|
|
58
58
|
|
|
59
59
|
def initialize(metadata_file)
|
|
60
60
|
begin
|
|
61
|
-
|
|
62
|
-
@coder = HTMLEntities.new
|
|
63
|
-
@records = []
|
|
64
|
-
map
|
|
65
|
-
merge_by_isbn
|
|
61
|
+
@metadata = Spreadsheet.open(metadata_file).worksheet 0
|
|
66
62
|
rescue Exception => ex
|
|
67
63
|
raise READ_ERR
|
|
68
64
|
end
|
|
65
|
+
@coder = HTMLEntities.new
|
|
66
|
+
@records = []
|
|
67
|
+
@count = 0
|
|
68
|
+
map
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
def map
|
|
72
72
|
@metadata.each do |row|
|
|
73
73
|
@records << create_record(row)
|
|
74
74
|
end
|
|
75
|
-
@records.compact
|
|
75
|
+
@records.compact!
|
|
76
|
+
merge_by_isbn
|
|
76
77
|
end
|
|
77
78
|
|
|
78
79
|
def create_record(data)
|
|
80
|
+
@count += 1
|
|
79
81
|
field = package_data(data)
|
|
80
82
|
r = field[:format].match(/#{DEF_FORMAT}/) ? EBook.new : EAudioBook.new
|
|
81
83
|
begin
|
|
@@ -109,7 +111,7 @@ class OverdriveMetadata
|
|
|
109
111
|
r.make_data_field('991', ' ', ' ', {'a' => DISCLAIM})
|
|
110
112
|
return r.record
|
|
111
113
|
rescue Exception => ex
|
|
112
|
-
puts ex.message
|
|
114
|
+
puts @count.to_s + ': ' + ex.message
|
|
113
115
|
nil
|
|
114
116
|
end
|
|
115
117
|
end
|
|
@@ -151,6 +153,7 @@ class OverdriveMetadata
|
|
|
151
153
|
end
|
|
152
154
|
|
|
153
155
|
def merge_by_isbn
|
|
156
|
+
puts 'Merging (may take a while on large record sets) ...'
|
|
154
157
|
isbns = Hash.new(0)
|
|
155
158
|
@records.each do |record|
|
|
156
159
|
isbns[record['020'].value] += 1 if record['020']
|
|
@@ -162,9 +165,13 @@ class OverdriveMetadata
|
|
|
162
165
|
file_note = rcds[1].find { |f| f.tag == '500' and f['a'] =~ /OverDrive (WMA|MP3) Audiobook/ }
|
|
163
166
|
excerpt = rcds[1].find { |f| f.tag == '856' and f['y'] =~ /Excerpt/ }
|
|
164
167
|
if file_note and excerpt
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
+
begin
|
|
169
|
+
rcds[0].fields.insert(rcds[0].fields.index { |f| f.tag == '500' }, file_note)
|
|
170
|
+
rcds[0].fields.insert(rcds[0].fields.index { |f| f.tag == '856' and f['y'] =~ /Excerpt/ }, excerpt)
|
|
171
|
+
@records.delete rcds[1]
|
|
172
|
+
rescue Exception => ex
|
|
173
|
+
puts isbn + ': ' + 'failed to merge'
|
|
174
|
+
end
|
|
168
175
|
end
|
|
169
176
|
end
|
|
170
177
|
@records
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
#!/usr/bin/env gem build
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
4
|
+
require "base64"
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |s|
|
|
7
|
+
s.name = %q{overdrive_metadata}
|
|
8
|
+
s.version = "1.0.1"
|
|
9
|
+
s.authors = ["Mark Cooper"]
|
|
10
|
+
s.date = %q{2011-11-22}
|
|
11
|
+
s.homepage = %q{http://www.libcode.net}
|
|
12
|
+
s.email = Base64.decode64("bWFya2NocmlzdG9waGVyY29vcGVyQGdtYWlsLmNvbQ==\n")
|
|
13
|
+
|
|
14
|
+
s.summary = "Generate marc records from Overdrive provided metadata spreadsheets."
|
|
15
|
+
s.description = "#{s.summary}"
|
|
16
|
+
s.cert_chain = nil
|
|
17
|
+
s.has_rdoc = true
|
|
18
|
+
|
|
19
|
+
# files
|
|
20
|
+
s.files = `git ls-files`.split("\n")
|
|
21
|
+
s.test_files = `git ls-files test`.split("\n")
|
|
22
|
+
s.extra_rdoc_files = ["README.txt"]
|
|
23
|
+
s.rdoc_options = ["--main", "README.txt"]
|
|
24
|
+
|
|
25
|
+
Dir["bin/*"].map(&File.method(:basename))
|
|
26
|
+
# s.default_executable = "overdrive_metadata"
|
|
27
|
+
s.require_paths = ["lib"]
|
|
28
|
+
|
|
29
|
+
# Ruby version
|
|
30
|
+
s.required_ruby_version = ::Gem::Requirement.new("~> 1.9")
|
|
31
|
+
|
|
32
|
+
# dependencies
|
|
33
|
+
# RubyGems has runtime dependencies (add_dependency) and
|
|
34
|
+
# development dependencies (add_development_dependency)
|
|
35
|
+
s.add_development_dependency "simple-templater", ">= 0.0.1.2"
|
|
36
|
+
s.add_development_dependency "bundler"
|
|
37
|
+
|
|
38
|
+
begin
|
|
39
|
+
require "changelog"
|
|
40
|
+
rescue LoadError
|
|
41
|
+
warn "You have to have changelog gem installed for post install message"
|
|
42
|
+
else
|
|
43
|
+
s.post_install_message = CHANGELOG.new.version_changes
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# RubyForge
|
|
47
|
+
s.rubyforge_project = %q{overdrive_metadata}
|
|
48
|
+
end
|
metadata
CHANGED
|
@@ -1,51 +1,56 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: overdrive_metadata
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.
|
|
4
|
+
version: 1.0.1
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
8
8
|
- Mark Cooper
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
|
-
cert_chain:
|
|
12
|
-
date: 2011-11-
|
|
11
|
+
cert_chain:
|
|
12
|
+
date: 2011-11-22 00:00:00.000000000 -08:00
|
|
13
13
|
default_executable:
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
|
-
name:
|
|
17
|
-
requirement: &
|
|
16
|
+
name: simple-templater
|
|
17
|
+
requirement: &10315236 !ruby/object:Gem::Requirement
|
|
18
18
|
none: false
|
|
19
19
|
requirements:
|
|
20
|
-
- -
|
|
20
|
+
- - ! '>='
|
|
21
21
|
- !ruby/object:Gem::Version
|
|
22
|
-
version:
|
|
22
|
+
version: 0.0.1.2
|
|
23
23
|
type: :development
|
|
24
24
|
prerelease: false
|
|
25
|
-
version_requirements: *
|
|
25
|
+
version_requirements: *10315236
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: bundler
|
|
28
|
+
requirement: &10314960 !ruby/object:Gem::Requirement
|
|
29
|
+
none: false
|
|
30
|
+
requirements:
|
|
31
|
+
- - ! '>='
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: *10314960
|
|
26
37
|
description: Generate marc records from Overdrive provided metadata spreadsheets.
|
|
27
|
-
email:
|
|
28
|
-
- markchristophercooper@gmail.com
|
|
38
|
+
email: markchristophercooper@gmail.com
|
|
29
39
|
executables: []
|
|
30
40
|
extensions: []
|
|
31
41
|
extra_rdoc_files:
|
|
32
|
-
- History.txt
|
|
33
|
-
- Manifest.txt
|
|
34
42
|
- README.txt
|
|
35
43
|
files:
|
|
36
|
-
- .
|
|
37
|
-
-
|
|
38
|
-
- Manifest.txt
|
|
44
|
+
- .gitignore
|
|
45
|
+
- Gemfile
|
|
39
46
|
- README.txt
|
|
40
47
|
- Rakefile
|
|
41
48
|
- lib/overdrive_metadata.rb
|
|
49
|
+
- overdrive_metadata.gemspec
|
|
42
50
|
- raw/test.xls
|
|
43
51
|
- test/test_overdrive_metadata.rb
|
|
44
|
-
- .gemtest
|
|
45
52
|
has_rdoc: true
|
|
46
|
-
homepage:
|
|
47
|
-
|
|
48
|
-
'
|
|
53
|
+
homepage: http://www.libcode.net
|
|
49
54
|
licenses: []
|
|
50
55
|
post_install_message:
|
|
51
56
|
rdoc_options:
|
|
@@ -56,9 +61,9 @@ require_paths:
|
|
|
56
61
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
57
62
|
none: false
|
|
58
63
|
requirements:
|
|
59
|
-
- -
|
|
64
|
+
- - ~>
|
|
60
65
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '
|
|
66
|
+
version: '1.9'
|
|
62
67
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
68
|
none: false
|
|
64
69
|
requirements:
|
data/.autotest
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# -*- ruby -*-
|
|
2
|
-
|
|
3
|
-
require 'autotest/restart'
|
|
4
|
-
|
|
5
|
-
# Autotest.add_hook :initialize do |at|
|
|
6
|
-
# at.extra_files << "../some/external/dependency.rb"
|
|
7
|
-
#
|
|
8
|
-
# at.libs << ":../some/external"
|
|
9
|
-
#
|
|
10
|
-
# at.add_exception 'vendor'
|
|
11
|
-
#
|
|
12
|
-
# at.add_mapping(/dependency.rb/) do |f, _|
|
|
13
|
-
# at.files_matching(/test_.*rb$/)
|
|
14
|
-
# end
|
|
15
|
-
#
|
|
16
|
-
# %w(TestA TestB).each do |klass|
|
|
17
|
-
# at.extra_class_map[klass] = "test/test_misc.rb"
|
|
18
|
-
# end
|
|
19
|
-
# end
|
|
20
|
-
|
|
21
|
-
# Autotest.add_hook :run_command do |at|
|
|
22
|
-
# system "rake build"
|
|
23
|
-
# end
|
data/.gemtest
DELETED
|
File without changes
|
data/History.txt
DELETED