HoustonLibrarySearch 0.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.
- data/Gemfile +3 -0
- data/HoustonLibrarySearch.gemspec +41 -0
- data/Rakefile +18 -0
- data/VERSION +1 -0
- data/lib/HoustonLibrarySearch.rb +25 -0
- data/lib/listing.rb +12 -0
- data/lib/plugins/HCPL.rb +27 -0
- data/lib/plugins/HPL.rb +22 -0
- metadata +62 -0
data/Gemfile
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{HoustonLibrarySearch}
|
8
|
+
s.version = "0.0.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Nelson Morris"]
|
12
|
+
s.date = %q{2010-02-19}
|
13
|
+
s.description = %q{Search Houston area libraries for ISBNs}
|
14
|
+
s.email = %q{nmorris@nelsonmorris.net}
|
15
|
+
s.files = [
|
16
|
+
"Gemfile",
|
17
|
+
"HoustonLibrarySearch.gemspec",
|
18
|
+
"Rakefile",
|
19
|
+
"VERSION",
|
20
|
+
"lib/HoustonLibrarySearch.rb",
|
21
|
+
"lib/listing.rb",
|
22
|
+
"lib/plugins/HCPL.rb",
|
23
|
+
"lib/plugins/HPL.rb"
|
24
|
+
]
|
25
|
+
s.homepage = %q{http://github.com/xeqi/HoustonLibrarySearch}
|
26
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
27
|
+
s.require_paths = ["lib"]
|
28
|
+
s.rubygems_version = %q{1.3.5}
|
29
|
+
s.summary = %q{Search Houston area libraries for ISBNs}
|
30
|
+
|
31
|
+
if s.respond_to? :specification_version then
|
32
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
33
|
+
s.specification_version = 3
|
34
|
+
|
35
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
36
|
+
else
|
37
|
+
end
|
38
|
+
else
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gemspec|
|
7
|
+
gemspec.name = "HoustonLibrarySearch"
|
8
|
+
gemspec.summary = "Search Houston area libraries for ISBNs"
|
9
|
+
gemspec.description = "Search Houston area libraries for ISBNs"
|
10
|
+
gemspec.email = "nmorris@nelsonmorris.net"
|
11
|
+
gemspec.homepage = "http://github.com/xeqi/HoustonLibrarySearch"
|
12
|
+
gemspec.authors = ["Nelson Morris"]
|
13
|
+
gemspec.files = FileList["[A-Z]*", "{lib,test}/**/*"]
|
14
|
+
end
|
15
|
+
Jeweler::GemcutterTasks.new
|
16
|
+
rescue LoadError
|
17
|
+
puts "Jeweler not available. Install it with: sudo gem install jeweler"
|
18
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.0
|
@@ -0,0 +1,25 @@
|
|
1
|
+
begin
|
2
|
+
# Try to require the preresolved locked set of gems.
|
3
|
+
require File.expand_path('../.bundle/environment', __FILE__)
|
4
|
+
rescue LoadError
|
5
|
+
# Fall back on doing an unlocked resolve at runtime.
|
6
|
+
require "rubygems"
|
7
|
+
require "bundler"
|
8
|
+
Bundler.setup
|
9
|
+
end
|
10
|
+
|
11
|
+
require "curb"
|
12
|
+
require "nokogiri"
|
13
|
+
require File.join(File.expand_path(File.dirname(__FILE__)), "listing.rb")
|
14
|
+
|
15
|
+
Dir[File.join(File.expand_path(File.dirname(__FILE__)), "plugins/*.rb")].each {|file| require file }
|
16
|
+
|
17
|
+
class HoustonLibrarySearch
|
18
|
+
def self.search(isbn)
|
19
|
+
hash = {}
|
20
|
+
[HPL, HCPL].collect do |x|
|
21
|
+
hash.merge!({x.name => x.listings(isbn)})
|
22
|
+
end
|
23
|
+
hash
|
24
|
+
end
|
25
|
+
end
|
data/lib/listing.rb
ADDED
data/lib/plugins/HCPL.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'curb'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
class HCPL
|
5
|
+
def self.listings(isbn)
|
6
|
+
c = Curl::Easy.perform("http://catalog.hcpl.net/ipac20/ipac.jsp?index=ISBNEXH&term=#{isbn}")
|
7
|
+
xml = Nokogiri::XML.parse(c.body_str)
|
8
|
+
results = xml.css(".tableBackground .tableBackground .tableBackground .tableBackground .tableBackground .tableBackground").collect do |table|
|
9
|
+
trs = table.css("tr")
|
10
|
+
# mask multiple books as no results
|
11
|
+
# see isbn 0887307280
|
12
|
+
if(trs[0].css("td")[0].css("a").text =~ /Location/)
|
13
|
+
trs[1, trs.length-1].collect do |tr|
|
14
|
+
tds = tr.css("td")
|
15
|
+
Listing.new(tds[0].text, tds[2].text, tds[3].text, tds[4].text)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
#handle masking
|
20
|
+
results = results.select{|x| x}
|
21
|
+
results.flatten
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.name
|
25
|
+
"Harris County Public Library"
|
26
|
+
end
|
27
|
+
end
|
data/lib/plugins/HPL.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'curb'
|
2
|
+
require 'nokogiri'
|
3
|
+
|
4
|
+
class HPL
|
5
|
+
def self.listings(isbn)
|
6
|
+
c = Curl::Easy.perform("http://catalog.houstonlibrary.org/search~S0/?searchtype=i&searcharg=#{isbn}")
|
7
|
+
xml = Nokogiri::XML.parse(c.body_str)
|
8
|
+
xml.css('.bibItemsEntry').collect do |x|
|
9
|
+
due = ''
|
10
|
+
row = x.css('td')
|
11
|
+
status = row[3].text.strip
|
12
|
+
if status =~ /DUE/
|
13
|
+
due = status[4, 8]
|
14
|
+
status = "Checked out"
|
15
|
+
end
|
16
|
+
Listing.new(row[0].text.strip, row[2].text.strip, status.capitalize, due)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
def self.name
|
20
|
+
"Houston Public Library"
|
21
|
+
end
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: HoustonLibrarySearch
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nelson Morris
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-02-19 00:00:00 -06:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Search Houston area libraries for ISBNs
|
17
|
+
email: nmorris@nelsonmorris.net
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- Gemfile
|
26
|
+
- HoustonLibrarySearch.gemspec
|
27
|
+
- Rakefile
|
28
|
+
- VERSION
|
29
|
+
- lib/HoustonLibrarySearch.rb
|
30
|
+
- lib/listing.rb
|
31
|
+
- lib/plugins/HCPL.rb
|
32
|
+
- lib/plugins/HPL.rb
|
33
|
+
has_rdoc: true
|
34
|
+
homepage: http://github.com/xeqi/HoustonLibrarySearch
|
35
|
+
licenses: []
|
36
|
+
|
37
|
+
post_install_message:
|
38
|
+
rdoc_options:
|
39
|
+
- --charset=UTF-8
|
40
|
+
require_paths:
|
41
|
+
- lib
|
42
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: "0"
|
47
|
+
version:
|
48
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: "0"
|
53
|
+
version:
|
54
|
+
requirements: []
|
55
|
+
|
56
|
+
rubyforge_project:
|
57
|
+
rubygems_version: 1.3.5
|
58
|
+
signing_key:
|
59
|
+
specification_version: 3
|
60
|
+
summary: Search Houston area libraries for ISBNs
|
61
|
+
test_files: []
|
62
|
+
|