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 ADDED
@@ -0,0 +1,2 @@
1
+ *.gem
2
+ *.lock
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'htmlentities'
4
+ gem 'marc'
5
+ gem 'sanitize'
6
+ gem 'spreadsheet'
data/Rakefile CHANGED
@@ -1,13 +1,28 @@
1
1
  # -*- ruby -*-
2
2
 
3
- require 'rubygems'
4
- require 'hoe'
3
+ require 'rake/testtask'
5
4
 
6
- Hoe.plugin :gemspec
7
- Hoe.plugin :git
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
- Hoe.spec 'overdrive_metadata' do
10
- developer('Mark Cooper', 'markchristophercooper@gmail.com')
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
@@ -20,7 +20,7 @@ require 'spreadsheet'
20
20
  # w.close
21
21
 
22
22
  class OverdriveMetadata
23
- VERSION = '1.0.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
- @metadata = Spreadsheet.open(metadata_file).worksheet 0
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
- rcds[0].fields.insert(rcds[0].fields.index { |f| f.tag == '500' }, file_note)
166
- rcds[0].fields.insert(rcds[0].fields.index { |f| f.tag == '856' and f['y'] =~ /Excerpt/ }, excerpt)
167
- @records.delete rcds[1]
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.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-21 00:00:00.000000000 -08:00
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: hoe
17
- requirement: &10533756 !ruby/object:Gem::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: '2.12'
22
+ version: 0.0.1.2
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *10533756
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
- - .autotest
37
- - History.txt
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: ! 'http://www.libcode.net
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: '0'
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
@@ -1,2 +0,0 @@
1
- === 1.0.0 / 2011-10-27
2
-
data/Manifest.txt DELETED
@@ -1,8 +0,0 @@
1
- .autotest
2
- History.txt
3
- Manifest.txt
4
- README.txt
5
- Rakefile
6
- lib/overdrive_metadata.rb
7
- raw/test.xls
8
- test/test_overdrive_metadata.rb