craigler 1.3.2 → 1.3.3
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/.document +1 -1
- data/.gitignore +17 -0
- data/.yardopts +1 -0
- data/Gemfile +4 -0
- data/{LICENSE → LICENSE.txt} +0 -0
- data/README.md +167 -0
- data/Rakefile +4 -53
- data/craigler.gemspec +25 -0
- data/lib/craigler.rb +7 -9
- data/lib/craigler/constants.rb +53 -54
- data/lib/craigler/search.rb +11 -19
- data/lib/craigler/version.rb +3 -0
- data/test/test_helper.rb +1 -6
- metadata +103 -82
- data/README.rdoc +0 -165
- data/VERSION.yml +0 -5
data/.document
CHANGED
data/.gitignore
ADDED
data/.yardopts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--no-private -m markdown lib/**/*.rb - LICENSE
|
data/Gemfile
ADDED
data/{LICENSE → LICENSE.txt}
RENAMED
|
File without changes
|
data/README.md
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
# Craigler
|
|
2
|
+
|
|
3
|
+
Search API for [craigslist](http://www.craigslist.org/about/sites)
|
|
4
|
+
|
|
5
|
+
## SYNOPSIS
|
|
6
|
+
I couldn't decide which API I liked best, so you have two choices.
|
|
7
|
+
|
|
8
|
+
Craigler.search(:motorcycles, :in => [:utah, :nevada, :arizona], :for => 'Boulevard M50') do |item|
|
|
9
|
+
puts item.title
|
|
10
|
+
puts item.url
|
|
11
|
+
puts item.time
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
or
|
|
15
|
+
|
|
16
|
+
Craigler.find('Boulevard M50', :in => :california, :only => :motorcycles) do |item|
|
|
17
|
+
puts item.title
|
|
18
|
+
puts item.url
|
|
19
|
+
puts item.time
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
You can also create a search object to fetch the results later. When no location or category is given Craigler searches `:all_for_sale_or_wanted` `:in => :anywhere`
|
|
23
|
+
|
|
24
|
+
search = Craigler::Search.new('Yamaha')
|
|
25
|
+
search.results()
|
|
26
|
+
|
|
27
|
+
Note that the results are cached until you instruct craigler to update them.
|
|
28
|
+
|
|
29
|
+
search.results(:refresh => true)
|
|
30
|
+
|
|
31
|
+
See {Craigler.Search} for a list of all available options
|
|
32
|
+
|
|
33
|
+
### Supported Categories
|
|
34
|
+
`:all_for_sale_or_wanted`, `:art_and_crafts`, `:auto_parts`, `:baby_and_kid_stuff`, `:barter`, `:bicycles`, `:boats`, `:books`, `:business`, `:cars_and_trucks`, `:clothing`, `:collectibles`, `:community`, `:computers_and_tech`, `:electronics`, `:event`, `:farm_and_garden`, `:free_stuff`, `:furniture`, `:games_and_toys`, `:garage_sales`, `:general`, `:gigs`, `:household`, `:housing`, `:items_wanted`, `:jewelry`, `:jobs`, `:materials`, `:media`, `:motorcycles`, `:musical_instruments`, `:personals`, `:photo_and_video`, `:recreational_vehicles`, `:resume`, `:services_offered`, `:sporting_goods`, `:tickets`, `:tools`
|
|
35
|
+
|
|
36
|
+
### Supported Locations
|
|
37
|
+
|
|
38
|
+
Use `:anywhere` to search all supported locations.
|
|
39
|
+
|
|
40
|
+
#### States
|
|
41
|
+
`:alaska`, `:arizona`, `:arkansas`, `:california`, `:colorado`, `:connecticut`, `:delaware`, `:dc`, `:florida`, `:georgia`, `:hawaii`, `:idaho`, `:illinois`, `:indiana`, `:iowa`, `:kansas`, `:kentucky`, `:louisiana`, `:maine`, `:maryland`, `:mass`, `:michigan`, `:minnesota`, `:mississippi`, `:missouri`, `:montana`, `:nebraska`, `:nevada`, `:n_hampshire`, `:new_jersey`, `:new_mexico`, `:new_york`, `:n_carolina`, `:north_dakota`, `:ohio`, `:oklahoma`, `:oregon`, `:pennsylvania`, `:rhode_island`, `:s_carolina`, `:south_dakota`, `:tennessee`, `:texas`, `:utah`, `:vermont`, `:virginia`, `:washington`, `:west_virginia` `:wisconsin`, `:wyoming`
|
|
42
|
+
#### Cities
|
|
43
|
+
##### Alabama
|
|
44
|
+
`:auburn`, `:bham`, `:columbusga`, `:dothan`, `:shoals`, `:gadsden`, `:huntsville`, `:mobile`, `:montgomery`, `:tuscaloosa`
|
|
45
|
+
##### Alaska
|
|
46
|
+
`:anchorage`
|
|
47
|
+
##### Arizona
|
|
48
|
+
`:flagstaff`, `:mohave`, `:phoenix`, `:prescott`, `:sierravista`, `:tucson`, `:yuma`
|
|
49
|
+
##### Arkansas
|
|
50
|
+
`:fayar`, `:fortsmith`, `:jonesboro`, `:littlerock`, `:memphis`, `:texarkana`
|
|
51
|
+
##### California
|
|
52
|
+
`:sfbay`, `:bakersfield`, `:chico`, `:fresno`, `:goldcountry`, `:humboldt`, `:imperial`, `:inlandempire`
|
|
53
|
+
`:losangeles`, `:mendocino`, `:merced`, `:modesto`, `:monterey`, `:orangecounty`, `:palmsprings`, `:redding`
|
|
54
|
+
`:reno`, `:sacramento`, `:sandiego`, `:slo`, `:santabarbara`, `:stockton`, `:ventura`, `:visalia`, `:yubasutter`
|
|
55
|
+
##### Colorado
|
|
56
|
+
`:boulder`, `:cosprings`, `:denver`, `:fortcollins`, `:pueblo`, `:rockies`, `:westslope`
|
|
57
|
+
##### Connecticut
|
|
58
|
+
`:newlondon`, `:hartford`, `:newhaven`, `:nwct`
|
|
59
|
+
##### Delaware
|
|
60
|
+
`:delaware`
|
|
61
|
+
##### Dc
|
|
62
|
+
`:washingtondc`
|
|
63
|
+
##### Florida
|
|
64
|
+
`:daytona`, `:keys`, `:fortmyers`, `:gainesville`, `:jacksonville`, `:lakeland`, `:ocala`, `:orlando`
|
|
65
|
+
`:panamacity`, `:pensacola`, `:sarasota`, `:miami`, `:spacecoast`, `:staugustine`, `:tallahassee`, `:tampa`, `:treasure`
|
|
66
|
+
##### Georgia
|
|
67
|
+
`:athensga`, `:atlanta`, `:augusta`, `:brunswick`, `:columbusga`, `:macon`, `:savannah`, `:valdosta`
|
|
68
|
+
##### Hawaii
|
|
69
|
+
`:honolulu`
|
|
70
|
+
##### Idaho
|
|
71
|
+
`:boise`, `:eastidaho`, `:pullman`, `:spokane`, `:twinfalls`
|
|
72
|
+
##### Illinois
|
|
73
|
+
`:bn`, `:carbondale`, `:chambana`, `:chicago`, `:decatur`, `:peoria`, `:quadcities`, `:rockford`, `:springfieldil`, `:stlouis`
|
|
74
|
+
##### Indiana
|
|
75
|
+
`:bloomington`, `:evansville`, `:fortwayne`, `:indianapolis`, `:tippecanoe`, `:muncie`, `:southbend`, `:terrehaute`
|
|
76
|
+
##### Iowa
|
|
77
|
+
`:ames`, `:cedarrapids`, `:desmoines`, `:dubuque`, `:iowacity`, `:omaha`, `:quadcities`, `:siouxcity`, `:waterloo`
|
|
78
|
+
##### Kansas
|
|
79
|
+
`:kansascity`, `:lawrence`, `:ksu`, `:topeka`, `:wichita`
|
|
80
|
+
##### Kentucky
|
|
81
|
+
`:bgky`, `:cincinnati`, `:huntington`, `:lexington`, `:louisville`, `:westky`
|
|
82
|
+
##### Louisiana
|
|
83
|
+
`:batonrouge`, `:lafayette`, `:lakecharles`, `:monroe`, `:neworleans`, `:shreveport`
|
|
84
|
+
##### Maine
|
|
85
|
+
`:maine`
|
|
86
|
+
##### Maryland
|
|
87
|
+
`:annapolis`, `:baltimore`, `:easternshore`, `:smd`, `:westmd`
|
|
88
|
+
##### Mass
|
|
89
|
+
`:boston`, `:capecod`, `:southcoast`, `:westernmass`, `:worcester`
|
|
90
|
+
##### Michigan
|
|
91
|
+
`:annarbor`, `:centralmich`, `:detroit`, `:flint`, `:grandrapids`, `:jxn`, `:kalamazoo`, `:lansing`
|
|
92
|
+
`:muskegon`, `:nmi`, `:porthuron`, `:saginaw`, `:southbend`, `:swmi`, `:up`
|
|
93
|
+
##### Minnesota
|
|
94
|
+
`:duluth`, `:fargo`, `:mankato`, `:minneapolis`, `:rmn`, `:stcloud`
|
|
95
|
+
##### Mississippi
|
|
96
|
+
`:gulfport`, `:hattiesburg`, `:jackson`, `:memphis`, `:northmiss`
|
|
97
|
+
##### Missouri
|
|
98
|
+
`:columbiamo`, `:joplin`, `:kansascity`, `:semo`, `:springfield`, `:stlouis`
|
|
99
|
+
##### Montana
|
|
100
|
+
`:montana`
|
|
101
|
+
##### Nebraska
|
|
102
|
+
`:grandisland`, `:lincoln`, `:omaha`, `:siouxcity`
|
|
103
|
+
##### Nevada
|
|
104
|
+
`:lasvegas`, `:reno`
|
|
105
|
+
##### N hampshire
|
|
106
|
+
`:nh`
|
|
107
|
+
##### New jersey
|
|
108
|
+
`:cnj`, `:jerseyshore`, `:newjersey`, `:southjersey`
|
|
109
|
+
##### New mexico
|
|
110
|
+
`:albuquerque`, `:farmington`, `:lascruces`, `:roswell`, `:santafe`
|
|
111
|
+
##### New york
|
|
112
|
+
`:albany`, `:binghamton`, `:buffalo`, `:catskills`, `:chautauqua`, `:elmira`, `:hudsonvalley`, `:ithaca`
|
|
113
|
+
`:longisland`, `:newyork`, `:plattsburgh`, `:rochester`, `:syracuse`, `:utica`, `:watertown`
|
|
114
|
+
##### N carolina
|
|
115
|
+
`:asheville`, `:boone`, `:charlotte`, `:eastnc`, `:fayetteville`, `:greensboro`, `:hickory`, `:outerbanks`
|
|
116
|
+
`:raleigh`, `:wilmington`, `:winstonsalem`
|
|
117
|
+
##### North dakota
|
|
118
|
+
`:fargo`, `:nd`
|
|
119
|
+
##### Ohio
|
|
120
|
+
`:akroncanton`, `:athensohio`, `:cincinnati`, `:cleveland`, `:columbus`, `:dayton`, `:huntington`, `:limaohio`
|
|
121
|
+
`:mansfield`, `:parkersburg`, `:sandusky`, `:toledo`, `:wheeling`, `:youngstown`
|
|
122
|
+
##### Oklahoma
|
|
123
|
+
`:fortsmith`, `:lawton`, `:oklahomacity`, `:stillwater`, `:tulsa`
|
|
124
|
+
##### Oregon
|
|
125
|
+
`:bend`, `:corvallis`, `:eastoregon`, `:eugene`, `:medford`, `:oregoncoast`, `:portland`, `:roseburg`, `:salem`
|
|
126
|
+
##### Pennsylvania
|
|
127
|
+
`:altoona`, `:erie`, `:harrisburg`, `:lancaster`, `:allentown`, `:philadelphia`, `:pittsburgh`, `:poconos`
|
|
128
|
+
`:reading`, `:scranton`, `:pennstate`, `:williamsport`, `:york`
|
|
129
|
+
##### Rhode island
|
|
130
|
+
`:providence`
|
|
131
|
+
##### S carolina
|
|
132
|
+
`:charleston`, `:columbia`, `:florencesc`, `:greenville`, `:hiltonhead`, `:myrtlebeach`
|
|
133
|
+
##### South dakota
|
|
134
|
+
`:sd`
|
|
135
|
+
##### Tennessee
|
|
136
|
+
`:chattanooga`, `:clarksville`, `:jacksontn`, `:knoxville`, `:memphis`, `:nashville`, `:tricities`
|
|
137
|
+
##### Texas
|
|
138
|
+
`:abilene`, `:amarillo`, `:austin`, `:beaumont`, `:brownsville`, `:collegestation`, `:corpuschristi`, `:dallas`
|
|
139
|
+
`:elpaso`, `:galveston`, `:houston`, `:killeen`, `:laredo`, `:lubbock`, `:mcallen`, `:odessa`, `:sanantonio`
|
|
140
|
+
`:sanmarcos`, `:texarkana`, `:easttexas`, `:victoriatx`, `:waco`, `:wichitafalls`
|
|
141
|
+
##### Utah
|
|
142
|
+
`:logan`, `:ogden`, `:provo`, `:saltlakecity`, `:stgeorge`
|
|
143
|
+
##### Vermont
|
|
144
|
+
`:burlington`
|
|
145
|
+
##### Virginia
|
|
146
|
+
`:blacksburg`, `:charlottesville`, `:danville`, `:easternshore`, `:fredericksburg`, `:norfolk`, `:harrisonburg`
|
|
147
|
+
`:lynchburg`, `:richmond`, `:roanoke`
|
|
148
|
+
##### Washington
|
|
149
|
+
`:bellingham`, `:kpr`, `:olympic`, `:pullman`, `:seattle`, `:skagit`, `:spokane`, `:wenatchee`, `:yakima`
|
|
150
|
+
##### West virginia
|
|
151
|
+
`:charlestonwv`, `:huntington`, `:martinsburg`, `:morgantown`, `:parkersburg`, `:wv`, `:wheeling`
|
|
152
|
+
##### Wisconsin
|
|
153
|
+
`:appleton`, `:duluth`, `:eauclaire`, `:greenbay`, `:janesville`, `:racine`, `:lacrosse`, `:madison`
|
|
154
|
+
`:milwaukee`, `:sheboygan`, `:wausau`
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
## REQUIREMENTS
|
|
158
|
+
|
|
159
|
+
* Hpricot
|
|
160
|
+
|
|
161
|
+
## INSTALL
|
|
162
|
+
|
|
163
|
+
* sudo gem install craigler
|
|
164
|
+
|
|
165
|
+
## Copyright
|
|
166
|
+
|
|
167
|
+
Copyright (c) 2009 Devin Christensen. See {file:LICENSE} for details.
|
data/Rakefile
CHANGED
|
@@ -1,28 +1,4 @@
|
|
|
1
|
-
require
|
|
2
|
-
require 'rake'
|
|
3
|
-
require 'yaml'
|
|
4
|
-
|
|
5
|
-
begin
|
|
6
|
-
require 'jeweler'
|
|
7
|
-
Jeweler::Tasks.new do |gem|
|
|
8
|
-
gem.name = "craigler"
|
|
9
|
-
gem.summary = %Q{Search API for craigslist}
|
|
10
|
-
gem.email = "quixoten@gmail.com"
|
|
11
|
-
gem.homepage = "http://github.com/threetrieslater/craigler"
|
|
12
|
-
gem.authors = ["Devin Christensen"]
|
|
13
|
-
gem.add_dependency "hpricot", "~> 0.8.4"
|
|
14
|
-
gem.add_development_dependency "shoulda", ">= 2.10.3"
|
|
15
|
-
gem.add_development_dependency "rdoc", "~> 3.11.0"
|
|
16
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
Jeweler::GemcutterTasks.new
|
|
20
|
-
|
|
21
|
-
rescue LoadError
|
|
22
|
-
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
|
23
|
-
exit
|
|
24
|
-
end
|
|
25
|
-
|
|
1
|
+
require "bundler/gem_tasks"
|
|
26
2
|
require 'rake/testtask'
|
|
27
3
|
Rake::TestTask.new(:test) do |test|
|
|
28
4
|
test.libs << 'lib' << 'test'
|
|
@@ -30,35 +6,10 @@ Rake::TestTask.new(:test) do |test|
|
|
|
30
6
|
test.verbose = true
|
|
31
7
|
end
|
|
32
8
|
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
test.libs << 'test'
|
|
37
|
-
test.pattern = 'test/**/*_test.rb'
|
|
38
|
-
test.verbose = true
|
|
39
|
-
end
|
|
40
|
-
rescue LoadError
|
|
41
|
-
task :rcov do
|
|
42
|
-
abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
|
|
43
|
-
end
|
|
9
|
+
require 'yard'
|
|
10
|
+
YARD::Rake::YardocTask.new() do |t|
|
|
11
|
+
t.files = ["-", "LICENSE.txt"]
|
|
44
12
|
end
|
|
45
13
|
|
|
46
|
-
|
|
47
14
|
task :default => :test
|
|
48
15
|
|
|
49
|
-
require 'rdoc/task'
|
|
50
|
-
Rake::RDocTask.new do |rdoc|
|
|
51
|
-
if File.exist?('VERSION.yml')
|
|
52
|
-
config = YAML::load(File.read('VERSION.yml'))
|
|
53
|
-
version = "#{config[:major]}.#{config[:minor]}.#{config[:patch]}"
|
|
54
|
-
else
|
|
55
|
-
version = ""
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
rdoc.rdoc_dir = 'rdoc'
|
|
59
|
-
rdoc.title = "Craigler #{version}"
|
|
60
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
61
|
-
rdoc.rdoc_files.include('README.rdoc', 'LICENSE')
|
|
62
|
-
rdoc.main = 'README.rdoc'
|
|
63
|
-
end
|
|
64
|
-
|
data/craigler.gemspec
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
require 'craigler/version'
|
|
5
|
+
|
|
6
|
+
Gem::Specification.new do |gem|
|
|
7
|
+
gem.name = "craigler"
|
|
8
|
+
gem.version = Craigler::VERSION
|
|
9
|
+
gem.authors = ["Devin Christensen"]
|
|
10
|
+
gem.email = ["quixoten@gmail.com"]
|
|
11
|
+
gem.summary = %Q{Search API for craigslist}
|
|
12
|
+
gem.homepage = "http://github.com/illogician/craigler"
|
|
13
|
+
|
|
14
|
+
gem.files = `git ls-files`.split($/)
|
|
15
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
|
16
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
|
17
|
+
gem.require_paths = ["lib"]
|
|
18
|
+
|
|
19
|
+
gem.add_dependency "hpricot", "~> 0.8"
|
|
20
|
+
gem.add_development_dependency "rake", "~> 0.9.2"
|
|
21
|
+
gem.add_development_dependency "shoulda", "~> 3.3.1"
|
|
22
|
+
gem.add_development_dependency "minitest", "~> 4.1.0"
|
|
23
|
+
gem.add_development_dependency "yard", "~> 0.7"
|
|
24
|
+
end
|
|
25
|
+
|
data/lib/craigler.rb
CHANGED
|
@@ -5,28 +5,26 @@ require 'craigler/constants'
|
|
|
5
5
|
require 'craigler/search'
|
|
6
6
|
|
|
7
7
|
module Craigler
|
|
8
|
-
|
|
9
|
-
# :stopdoc:
|
|
10
8
|
class CraiglerError < StandardError; end
|
|
11
9
|
class InvalidCategory < CraiglerError; end
|
|
12
10
|
class InvalidSearchTerm < CraiglerError; end
|
|
13
11
|
class InvalidLocation < CraiglerError; end
|
|
14
|
-
|
|
15
|
-
|
|
12
|
+
|
|
16
13
|
class << self
|
|
17
|
-
#
|
|
14
|
+
# Alternate interface to {Search#initialize}
|
|
18
15
|
#
|
|
19
|
-
#
|
|
16
|
+
# @param category [Symbol] the category to search
|
|
17
|
+
# @param options [Hash] options passed to {Search#initialize}.
|
|
20
18
|
def search(category, options = {})
|
|
21
19
|
options = options.merge({ :only => category })
|
|
22
20
|
results = Search.new(options.delete(:for), options).results()
|
|
23
21
|
results.each {|result| yield(result) } if block_given?
|
|
24
22
|
results
|
|
25
23
|
end
|
|
26
|
-
|
|
27
|
-
#
|
|
24
|
+
|
|
25
|
+
# Wrapper for {Search#initialize}
|
|
28
26
|
#
|
|
29
|
-
#
|
|
27
|
+
# @param (see Search#initialize)
|
|
30
28
|
def find(search_term, options = {})
|
|
31
29
|
results = Search.new(search_term, options).results()
|
|
32
30
|
results.each {|result| yield(result) } if block_given?
|
data/lib/craigler/constants.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
module Craigler
|
|
2
|
-
|
|
3
|
-
# :stopdoc:
|
|
4
2
|
RESULTS_PER_PAGE = 25
|
|
5
|
-
|
|
3
|
+
|
|
4
|
+
# @private
|
|
6
5
|
LOCATIONS = {
|
|
6
|
+
# States
|
|
7
7
|
:alabama => ['http://auburn.craigslist.org/','http://bham.craigslist.org/','http://columbusga.craigslist.org/','http://dothan.craigslist.org/','http://shoals.craigslist.org/','http://gadsden.craigslist.org/','http://huntsville.craigslist.org/','http://mobile.craigslist.org/','http://montgomery.craigslist.org/','http://tuscaloosa.craigslist.org/'],
|
|
8
8
|
:alaska => ['http://anchorage.craigslist.org/'],
|
|
9
9
|
:arizona => ['http://flagstaff.craigslist.org/','http://mohave.craigslist.org/','http://phoenix.craigslist.org/','http://prescott.craigslist.org/','http://sierravista.craigslist.org/','http://tucson.craigslist.org/','http://yuma.craigslist.org/'],
|
|
@@ -66,9 +66,9 @@ module Craigler
|
|
|
66
66
|
:mobile => ['http://mobile.craigslist.org/'],
|
|
67
67
|
:montgomery => ['http://montgomery.craigslist.org/'],
|
|
68
68
|
:tuscaloosa => ['http://tuscaloosa.craigslist.org/'],
|
|
69
|
-
# Alaska
|
|
69
|
+
# Alaska
|
|
70
70
|
:anchorage => ['http://anchorage.craigslist.org/'],
|
|
71
|
-
# Arizona
|
|
71
|
+
# Arizona
|
|
72
72
|
:flagstaff => ['http://flagstaff.craigslist.org/'],
|
|
73
73
|
:mohave => ['http://mohave.craigslist.org/'],
|
|
74
74
|
:phoenix => ['http://phoenix.craigslist.org/'],
|
|
@@ -76,14 +76,14 @@ module Craigler
|
|
|
76
76
|
:sierravista => ['http://sierravista.craigslist.org/'],
|
|
77
77
|
:tucson => ['http://tucson.craigslist.org/'],
|
|
78
78
|
:yuma => ['http://yuma.craigslist.org/'],
|
|
79
|
-
# Arkansas
|
|
79
|
+
# Arkansas
|
|
80
80
|
:fayar => ['http://fayar.craigslist.org/'],
|
|
81
81
|
:fortsmith => ['http://fortsmith.craigslist.org/'],
|
|
82
82
|
:jonesboro => ['http://jonesboro.craigslist.org/'],
|
|
83
83
|
:littlerock => ['http://littlerock.craigslist.org/'],
|
|
84
84
|
:memphis => ['http://memphis.craigslist.org/'],
|
|
85
85
|
:texarkana => ['http://texarkana.craigslist.org/'],
|
|
86
|
-
# California
|
|
86
|
+
# California
|
|
87
87
|
:sfbay => ['http://sfbay.craigslist.org/'],
|
|
88
88
|
:bakersfield => ['http://bakersfield.craigslist.org/'],
|
|
89
89
|
:chico => ['http://chico.craigslist.org/'],
|
|
@@ -109,7 +109,7 @@ module Craigler
|
|
|
109
109
|
:ventura => ['http://ventura.craigslist.org/'],
|
|
110
110
|
:visalia => ['http://visalia.craigslist.org/'],
|
|
111
111
|
:yubasutter => ['http://yubasutter.craigslist.org/'],
|
|
112
|
-
# Colorado
|
|
112
|
+
# Colorado
|
|
113
113
|
:boulder => ['http://boulder.craigslist.org/'],
|
|
114
114
|
:cosprings => ['http://cosprings.craigslist.org/'],
|
|
115
115
|
:denver => ['http://denver.craigslist.org/'],
|
|
@@ -117,16 +117,16 @@ module Craigler
|
|
|
117
117
|
:pueblo => ['http://pueblo.craigslist.org/'],
|
|
118
118
|
:rockies => ['http://rockies.craigslist.org/'],
|
|
119
119
|
:westslope => ['http://westslope.craigslist.org/'],
|
|
120
|
-
# Connecticut
|
|
120
|
+
# Connecticut
|
|
121
121
|
:newlondon => ['http://newlondon.craigslist.org/'],
|
|
122
122
|
:hartford => ['http://hartford.craigslist.org/'],
|
|
123
123
|
:newhaven => ['http://newhaven.craigslist.org/'],
|
|
124
124
|
:nwct => ['http://nwct.craigslist.org/'],
|
|
125
|
-
# Delaware
|
|
125
|
+
# Delaware
|
|
126
126
|
:delaware => ['http://delaware.craigslist.org/'],
|
|
127
|
-
# Dc
|
|
127
|
+
# Dc
|
|
128
128
|
:washingtondc => ['http://washingtondc.craigslist.org/'],
|
|
129
|
-
# Florida
|
|
129
|
+
# Florida
|
|
130
130
|
:daytona => ['http://daytona.craigslist.org/'],
|
|
131
131
|
:keys => ['http://keys.craigslist.org/'],
|
|
132
132
|
:fortmyers => ['http://fortmyers.craigslist.org/'],
|
|
@@ -144,7 +144,7 @@ module Craigler
|
|
|
144
144
|
:tallahassee => ['http://tallahassee.craigslist.org/'],
|
|
145
145
|
:tampa => ['http://tampa.craigslist.org/'],
|
|
146
146
|
:treasure => ['http://treasure.craigslist.org/'],
|
|
147
|
-
# Georgia
|
|
147
|
+
# Georgia
|
|
148
148
|
:athensga => ['http://athensga.craigslist.org/'],
|
|
149
149
|
:atlanta => ['http://atlanta.craigslist.org/'],
|
|
150
150
|
:augusta => ['http://augusta.craigslist.org/'],
|
|
@@ -153,15 +153,15 @@ module Craigler
|
|
|
153
153
|
:macon => ['http://macon.craigslist.org/'],
|
|
154
154
|
:savannah => ['http://savannah.craigslist.org/'],
|
|
155
155
|
:valdosta => ['http://valdosta.craigslist.org/'],
|
|
156
|
-
# Hawaii
|
|
156
|
+
# Hawaii
|
|
157
157
|
:honolulu => ['http://honolulu.craigslist.org/'],
|
|
158
|
-
# Idaho
|
|
158
|
+
# Idaho
|
|
159
159
|
:boise => ['http://boise.craigslist.org/'],
|
|
160
160
|
:eastidaho => ['http://eastidaho.craigslist.org/'],
|
|
161
161
|
:pullman => ['http://pullman.craigslist.org/'],
|
|
162
162
|
:spokane => ['http://spokane.craigslist.org/'],
|
|
163
163
|
:twinfalls => ['http://twinfalls.craigslist.org/'],
|
|
164
|
-
# Illinois
|
|
164
|
+
# Illinois
|
|
165
165
|
:bn => ['http://bn.craigslist.org/'],
|
|
166
166
|
:carbondale => ['http://carbondale.craigslist.org/'],
|
|
167
167
|
:chambana => ['http://chambana.craigslist.org/'],
|
|
@@ -172,7 +172,7 @@ module Craigler
|
|
|
172
172
|
:rockford => ['http://rockford.craigslist.org/'],
|
|
173
173
|
:springfieldil => ['http://springfieldil.craigslist.org/'],
|
|
174
174
|
:stlouis => ['http://stlouis.craigslist.org/'],
|
|
175
|
-
# Indiana
|
|
175
|
+
# Indiana
|
|
176
176
|
:bloomington => ['http://bloomington.craigslist.org/'],
|
|
177
177
|
:evansville => ['http://evansville.craigslist.org/'],
|
|
178
178
|
:fortwayne => ['http://fortwayne.craigslist.org/'],
|
|
@@ -182,7 +182,7 @@ module Craigler
|
|
|
182
182
|
:southbend => ['http://southbend.craigslist.org/'],
|
|
183
183
|
:terrahaute => ['http://terrehaute.craigslist.org/'],
|
|
184
184
|
:terrehaute => ['http://terrehaute.craigslist.org/'],
|
|
185
|
-
# Iowa
|
|
185
|
+
# Iowa
|
|
186
186
|
:ames => ['http://ames.craigslist.org/'],
|
|
187
187
|
:cedarrapids => ['http://cedarrapids.craigslist.org/'],
|
|
188
188
|
:desmoines => ['http://desmoines.craigslist.org/'],
|
|
@@ -192,41 +192,41 @@ module Craigler
|
|
|
192
192
|
:quadcities => ['http://quadcities.craigslist.org/'],
|
|
193
193
|
:siouxcity => ['http://siouxcity.craigslist.org/'],
|
|
194
194
|
:waterloo => ['http://waterloo.craigslist.org/'],
|
|
195
|
-
# Kansas
|
|
195
|
+
# Kansas
|
|
196
196
|
:kansascity => ['http://kansascity.craigslist.org/'],
|
|
197
197
|
:lawrence => ['http://lawrence.craigslist.org/'],
|
|
198
198
|
:ksu => ['http://ksu.craigslist.org/'],
|
|
199
199
|
:topeka => ['http://topeka.craigslist.org/'],
|
|
200
200
|
:wichita => ['http://wichita.craigslist.org/'],
|
|
201
|
-
# Kentucky
|
|
201
|
+
# Kentucky
|
|
202
202
|
:bgky => ['http://bgky.craigslist.org/'],
|
|
203
203
|
:cincinnati => ['http://cincinnati.craigslist.org/'],
|
|
204
204
|
:huntington => ['http://huntington.craigslist.org/'],
|
|
205
205
|
:lexington => ['http://lexington.craigslist.org/'],
|
|
206
206
|
:louisville => ['http://louisville.craigslist.org/'],
|
|
207
207
|
:westky => ['http://westky.craigslist.org/'],
|
|
208
|
-
# Louisiana
|
|
208
|
+
# Louisiana
|
|
209
209
|
:batonrouge => ['http://batonrouge.craigslist.org/'],
|
|
210
210
|
:lafayette => ['http://lafayette.craigslist.org/'],
|
|
211
211
|
:lakecharles => ['http://lakecharles.craigslist.org/'],
|
|
212
212
|
:monroe => ['http://monroe.craigslist.org/'],
|
|
213
213
|
:neworleans => ['http://neworleans.craigslist.org/'],
|
|
214
214
|
:shreveport => ['http://shreveport.craigslist.org/'],
|
|
215
|
-
# Maine
|
|
215
|
+
# Maine
|
|
216
216
|
:maine => ['http://maine.craigslist.org/'],
|
|
217
|
-
# Maryland
|
|
217
|
+
# Maryland
|
|
218
218
|
:annapolis => ['http://annapolis.craigslist.org/'],
|
|
219
219
|
:baltimore => ['http://baltimore.craigslist.org/'],
|
|
220
220
|
:easternshore => ['http://easternshore.craigslist.org/'],
|
|
221
221
|
:smd => ['http://smd.craigslist.org/'],
|
|
222
222
|
:westmd => ['http://westmd.craigslist.org/'],
|
|
223
|
-
# Mass
|
|
223
|
+
# Mass
|
|
224
224
|
:boston => ['http://boston.craigslist.org/'],
|
|
225
225
|
:capecod => ['http://capecod.craigslist.org/'],
|
|
226
226
|
:southcoast => ['http://southcoast.craigslist.org/'],
|
|
227
227
|
:westernmass => ['http://westernmass.craigslist.org/'],
|
|
228
228
|
:worcester => ['http://worcester.craigslist.org/'],
|
|
229
|
-
# Michigan
|
|
229
|
+
# Michigan
|
|
230
230
|
:annarbor => ['http://annarbor.craigslist.org/'],
|
|
231
231
|
:centralmich => ['http://centralmich.craigslist.org/'],
|
|
232
232
|
:detroit => ['http://detroit.craigslist.org/'],
|
|
@@ -242,50 +242,50 @@ module Craigler
|
|
|
242
242
|
:southbend => ['http://southbend.craigslist.org/'],
|
|
243
243
|
:swmi => ['http://swmi.craigslist.org/'],
|
|
244
244
|
:up => ['http://up.craigslist.org/'],
|
|
245
|
-
# Minnesota
|
|
245
|
+
# Minnesota
|
|
246
246
|
:duluth => ['http://duluth.craigslist.org/'],
|
|
247
247
|
:fargo => ['http://fargo.craigslist.org/'],
|
|
248
248
|
:mankato => ['http://mankato.craigslist.org/'],
|
|
249
249
|
:minneapolis => ['http://minneapolis.craigslist.org/'],
|
|
250
250
|
:rmn => ['http://rmn.craigslist.org/'],
|
|
251
251
|
:stcloud => ['http://stcloud.craigslist.org/'],
|
|
252
|
-
# Mississippi
|
|
252
|
+
# Mississippi
|
|
253
253
|
:gulfport => ['http://gulfport.craigslist.org/'],
|
|
254
254
|
:hattiesburg => ['http://hattiesburg.craigslist.org/'],
|
|
255
255
|
:jackson => ['http://jackson.craigslist.org/'],
|
|
256
256
|
:memphis => ['http://memphis.craigslist.org/'],
|
|
257
257
|
:northmiss => ['http://northmiss.craigslist.org/'],
|
|
258
|
-
# Missouri
|
|
258
|
+
# Missouri
|
|
259
259
|
:columbiamo => ['http://columbiamo.craigslist.org/'],
|
|
260
260
|
:joplin => ['http://joplin.craigslist.org/'],
|
|
261
261
|
:kansascity => ['http://kansascity.craigslist.org/'],
|
|
262
262
|
:semo => ['http://semo.craigslist.org/'],
|
|
263
263
|
:springfield => ['http://springfield.craigslist.org/'],
|
|
264
264
|
:stlouis => ['http://stlouis.craigslist.org/'],
|
|
265
|
-
# Montana
|
|
265
|
+
# Montana
|
|
266
266
|
:montana => ['http://montana.craigslist.org/'],
|
|
267
|
-
# Nebraska
|
|
267
|
+
# Nebraska
|
|
268
268
|
:grandisland => ['http://grandisland.craigslist.org/'],
|
|
269
269
|
:lincoln => ['http://lincoln.craigslist.org/'],
|
|
270
270
|
:omaha => ['http://omaha.craigslist.org/'],
|
|
271
271
|
:siouxcity => ['http://siouxcity.craigslist.org/'],
|
|
272
|
-
# Nevada
|
|
272
|
+
# Nevada
|
|
273
273
|
:lasvegas => ['http://lasvegas.craigslist.org/'],
|
|
274
274
|
:reno => ['http://reno.craigslist.org/'],
|
|
275
|
-
# N hampshire
|
|
275
|
+
# N hampshire
|
|
276
276
|
:nh => ['http://nh.craigslist.org/'],
|
|
277
|
-
# New jersey
|
|
277
|
+
# New jersey
|
|
278
278
|
:cnj => ['http://cnj.craigslist.org/'],
|
|
279
279
|
:jerseyshore => ['http://jerseyshore.craigslist.org/'],
|
|
280
280
|
:newjersey => ['http://newjersey.craigslist.org/'],
|
|
281
281
|
:southjersey => ['http://southjersey.craigslist.org/'],
|
|
282
|
-
# New mexico
|
|
282
|
+
# New mexico
|
|
283
283
|
:albuquerque => ['http://albuquerque.craigslist.org/'],
|
|
284
284
|
:farmington => ['http://farmington.craigslist.org/'],
|
|
285
285
|
:lascruces => ['http://lascruces.craigslist.org/'],
|
|
286
286
|
:roswell => ['http://roswell.craigslist.org/'],
|
|
287
287
|
:santafe => ['http://santafe.craigslist.org/'],
|
|
288
|
-
# New york
|
|
288
|
+
# New york
|
|
289
289
|
:albany => ['http://albany.craigslist.org/'],
|
|
290
290
|
:binghamton => ['http://binghamton.craigslist.org/'],
|
|
291
291
|
:buffalo => ['http://buffalo.craigslist.org/'],
|
|
@@ -301,7 +301,7 @@ module Craigler
|
|
|
301
301
|
:syracuse => ['http://syracuse.craigslist.org/'],
|
|
302
302
|
:utica => ['http://utica.craigslist.org/'],
|
|
303
303
|
:watertown => ['http://watertown.craigslist.org/'],
|
|
304
|
-
# N carolina
|
|
304
|
+
# N carolina
|
|
305
305
|
:asheville => ['http://asheville.craigslist.org/'],
|
|
306
306
|
:boone => ['http://boone.craigslist.org/'],
|
|
307
307
|
:charlotte => ['http://charlotte.craigslist.org/'],
|
|
@@ -313,10 +313,10 @@ module Craigler
|
|
|
313
313
|
:raleigh => ['http://raleigh.craigslist.org/'],
|
|
314
314
|
:wilmington => ['http://wilmington.craigslist.org/'],
|
|
315
315
|
:winstonsalem => ['http://winstonsalem.craigslist.org/'],
|
|
316
|
-
# North dakota
|
|
316
|
+
# North dakota
|
|
317
317
|
:fargo => ['http://fargo.craigslist.org/'],
|
|
318
318
|
:nd => ['http://nd.craigslist.org/'],
|
|
319
|
-
# Ohio
|
|
319
|
+
# Ohio
|
|
320
320
|
:akroncanton => ['http://akroncanton.craigslist.org/'],
|
|
321
321
|
:athensohio => ['http://athensohio.craigslist.org/'],
|
|
322
322
|
:cincinnati => ['http://cincinnati.craigslist.org/'],
|
|
@@ -331,13 +331,13 @@ module Craigler
|
|
|
331
331
|
:toledo => ['http://toledo.craigslist.org/'],
|
|
332
332
|
:wheeling => ['http://wheeling.craigslist.org/'],
|
|
333
333
|
:youngstown => ['http://youngstown.craigslist.org/'],
|
|
334
|
-
# Oklahoma
|
|
334
|
+
# Oklahoma
|
|
335
335
|
:fortsmith => ['http://fortsmith.craigslist.org/'],
|
|
336
336
|
:lawton => ['http://lawton.craigslist.org/'],
|
|
337
337
|
:oklahomacity => ['http://oklahomacity.craigslist.org/'],
|
|
338
338
|
:stillwater => ['http://stillwater.craigslist.org/'],
|
|
339
339
|
:tulsa => ['http://tulsa.craigslist.org/'],
|
|
340
|
-
# Oregon
|
|
340
|
+
# Oregon
|
|
341
341
|
:bend => ['http://bend.craigslist.org/'],
|
|
342
342
|
:corvallis => ['http://corvallis.craigslist.org/'],
|
|
343
343
|
:eastoregon => ['http://eastoregon.craigslist.org/'],
|
|
@@ -347,7 +347,7 @@ module Craigler
|
|
|
347
347
|
:portland => ['http://portland.craigslist.org/'],
|
|
348
348
|
:roseburg => ['http://roseburg.craigslist.org/'],
|
|
349
349
|
:salem => ['http://salem.craigslist.org/'],
|
|
350
|
-
# Pennsylvania
|
|
350
|
+
# Pennsylvania
|
|
351
351
|
:altoona => ['http://altoona.craigslist.org/'],
|
|
352
352
|
:erie => ['http://erie.craigslist.org/'],
|
|
353
353
|
:harrisburg => ['http://harrisburg.craigslist.org/'],
|
|
@@ -361,18 +361,18 @@ module Craigler
|
|
|
361
361
|
:pennstate => ['http://pennstate.craigslist.org/'],
|
|
362
362
|
:williamsport => ['http://williamsport.craigslist.org/'],
|
|
363
363
|
:york => ['http://york.craigslist.org/'],
|
|
364
|
-
# Rhode island
|
|
364
|
+
# Rhode island
|
|
365
365
|
:providence => ['http://providence.craigslist.org/'],
|
|
366
|
-
# S carolina
|
|
366
|
+
# S carolina
|
|
367
367
|
:charleston => ['http://charleston.craigslist.org/'],
|
|
368
368
|
:columbia => ['http://columbia.craigslist.org/'],
|
|
369
369
|
:florencesc => ['http://florencesc.craigslist.org/'],
|
|
370
370
|
:greenville => ['http://greenville.craigslist.org/'],
|
|
371
371
|
:hiltonhead => ['http://hiltonhead.craigslist.org/'],
|
|
372
372
|
:myrtlebeach => ['http://myrtlebeach.craigslist.org/'],
|
|
373
|
-
# South dakota
|
|
373
|
+
# South dakota
|
|
374
374
|
:sd => ['http://sd.craigslist.org/'],
|
|
375
|
-
# Tennessee
|
|
375
|
+
# Tennessee
|
|
376
376
|
:chattanooga => ['http://chattanooga.craigslist.org/'],
|
|
377
377
|
:clarksville => ['http://clarksville.craigslist.org/'],
|
|
378
378
|
:jacksontn => ['http://jacksontn.craigslist.org/'],
|
|
@@ -380,7 +380,7 @@ module Craigler
|
|
|
380
380
|
:memphis => ['http://memphis.craigslist.org/'],
|
|
381
381
|
:nashville => ['http://nashville.craigslist.org/'],
|
|
382
382
|
:tricities => ['http://tricities.craigslist.org/'],
|
|
383
|
-
# Texas
|
|
383
|
+
# Texas
|
|
384
384
|
:abilene => ['http://abilene.craigslist.org/'],
|
|
385
385
|
:amarillo => ['http://amarillo.craigslist.org/'],
|
|
386
386
|
:austin => ['http://austin.craigslist.org/'],
|
|
@@ -404,15 +404,15 @@ module Craigler
|
|
|
404
404
|
:victoriatx => ['http://victoriatx.craigslist.org/'],
|
|
405
405
|
:waco => ['http://waco.craigslist.org/'],
|
|
406
406
|
:wichitafalls => ['http://wichitafalls.craigslist.org/'],
|
|
407
|
-
# Utah
|
|
407
|
+
# Utah
|
|
408
408
|
:logan => ['http://logan.craigslist.org/'],
|
|
409
409
|
:ogden => ['http://ogden.craigslist.org/'],
|
|
410
410
|
:provo => ['http://provo.craigslist.org/'],
|
|
411
411
|
:saltlakecity => ['http://saltlakecity.craigslist.org/'],
|
|
412
412
|
:stgeorge => ['http://stgeorge.craigslist.org/'],
|
|
413
|
-
# Vermont
|
|
413
|
+
# Vermont
|
|
414
414
|
:burlington => ['http://burlington.craigslist.org/'],
|
|
415
|
-
# Virginia
|
|
415
|
+
# Virginia
|
|
416
416
|
:blacksburg => ['http://blacksburg.craigslist.org/'],
|
|
417
417
|
:charlottesville => ['http://charlottesville.craigslist.org/'],
|
|
418
418
|
:danville => ['http://danville.craigslist.org/'],
|
|
@@ -423,7 +423,7 @@ module Craigler
|
|
|
423
423
|
:lynchburg => ['http://lynchburg.craigslist.org/'],
|
|
424
424
|
:richmond => ['http://richmond.craigslist.org/'],
|
|
425
425
|
:roanoke => ['http://roanoke.craigslist.org/'],
|
|
426
|
-
# Washington
|
|
426
|
+
# Washington
|
|
427
427
|
:bellingham => ['http://bellingham.craigslist.org/'],
|
|
428
428
|
:kpr => ['http://kpr.craigslist.org/'],
|
|
429
429
|
:olympic => ['http://olympic.craigslist.org/'],
|
|
@@ -433,7 +433,7 @@ module Craigler
|
|
|
433
433
|
:spokane => ['http://spokane.craigslist.org/'],
|
|
434
434
|
:wenatchee => ['http://wenatchee.craigslist.org/'],
|
|
435
435
|
:yakima => ['http://yakima.craigslist.org/'],
|
|
436
|
-
# West virginia
|
|
436
|
+
# West virginia
|
|
437
437
|
:charlestonwv => ['http://charlestonwv.craigslist.org/'],
|
|
438
438
|
:huntington => ['http://huntington.craigslist.org/'],
|
|
439
439
|
:martinsburg => ['http://martinsburg.craigslist.org/'],
|
|
@@ -441,7 +441,7 @@ module Craigler
|
|
|
441
441
|
:parkersburg => ['http://parkersburg.craigslist.org/'],
|
|
442
442
|
:wv => ['http://wv.craigslist.org/'],
|
|
443
443
|
:wheeling => ['http://wheeling.craigslist.org/'],
|
|
444
|
-
# Wisconsin
|
|
444
|
+
# Wisconsin
|
|
445
445
|
:appleton => ['http://appleton.craigslist.org/'],
|
|
446
446
|
:duluth => ['http://duluth.craigslist.org/'],
|
|
447
447
|
:eauclaire => ['http://eauclaire.craigslist.org/'],
|
|
@@ -455,6 +455,7 @@ module Craigler
|
|
|
455
455
|
:wausau => ['http://wausau.craigslist.org/']
|
|
456
456
|
}
|
|
457
457
|
|
|
458
|
+
# @private
|
|
458
459
|
CATEGORIES = {
|
|
459
460
|
:community => 'ccc',
|
|
460
461
|
:event => 'eee',
|
|
@@ -497,6 +498,4 @@ module Craigler
|
|
|
497
498
|
:resume => 'res',
|
|
498
499
|
:services_offered => 'bbb'
|
|
499
500
|
}
|
|
500
|
-
|
|
501
|
-
# :startdoc:
|
|
502
501
|
end
|
data/lib/craigler/search.rb
CHANGED
|
@@ -8,17 +8,11 @@ module Craigler
|
|
|
8
8
|
|
|
9
9
|
# Creates a wrapper object for a craigslist search
|
|
10
10
|
#
|
|
11
|
-
#
|
|
12
|
-
# [:in
|
|
13
|
-
#
|
|
14
|
-
# [:
|
|
15
|
-
#
|
|
16
|
-
# [:page_limit]
|
|
17
|
-
# Maximum number of pages to fetch results from. Defaults to <tt>4</tt>.
|
|
18
|
-
# <b>Note:</b> A location may, and often does, have more than one searchable
|
|
19
|
-
# url assciated with it, e.g., {California}[http://geo.craigslist.org/iso/us/ca]. Because
|
|
20
|
-
# <tt>:page_limit</tt> is applied seperately to each url within the location, searching <tt>:in => :california</tt>
|
|
21
|
-
# with a <tt>:page_limit => 4</tt> could potentially make up to 100 page requests.
|
|
11
|
+
# @param [String] search_term
|
|
12
|
+
# @option options [Symbol, Array] :in (:anywhere) location(s) to search
|
|
13
|
+
# @option options [Symbol, Array] :only (:all_for_sale_or_wanted) category or categories to search
|
|
14
|
+
# @option options [Fixnum] :page_limit (4) maximum number of pages to read per url
|
|
15
|
+
# @note A location often has more than one url associated with it. For example, [`:california`](http://geo.craigslist.org/iso/us/ca) has 29 associated urls as of this writing. In this case, up to 116 pages could potentially be searched (`:page_limit * num_urls = 4 * 29 = 116`).
|
|
22
16
|
def initialize(search_term, options = {})
|
|
23
17
|
raise InvalidSearchTerm if search_term.nil? || search_term == ''
|
|
24
18
|
|
|
@@ -37,9 +31,7 @@ module Craigler
|
|
|
37
31
|
# Returns the results of the search. If this is the first time
|
|
38
32
|
# calling #results then they will be fetched over the internet and cached in the search object.
|
|
39
33
|
#
|
|
40
|
-
#
|
|
41
|
-
# [:refresh]
|
|
42
|
-
# Set to <tt>true</tt> to force an update across the internet.
|
|
34
|
+
# @option options [Boolean] :refresh (false) force the results to be updated before they are returned
|
|
43
35
|
def results(options = {})
|
|
44
36
|
options = { :refresh => false }.merge(options)
|
|
45
37
|
return @results unless @results.nil? || options[:refresh]
|
|
@@ -59,20 +51,20 @@ module Craigler
|
|
|
59
51
|
end
|
|
60
52
|
|
|
61
53
|
protected
|
|
62
|
-
def _validate_locations
|
|
54
|
+
def _validate_locations
|
|
63
55
|
@locations.each() do |location|
|
|
64
56
|
raise InvalidLocation.new(":anywhere not expected as part of an array") if location == :anywhere
|
|
65
57
|
raise InvalidLocation.new(":#{location} is not a valid location") unless LOCATIONS.key?(location)
|
|
66
58
|
end
|
|
67
59
|
end
|
|
68
60
|
|
|
69
|
-
def _validate_categories
|
|
61
|
+
def _validate_categories
|
|
70
62
|
@categories.each() do |category|
|
|
71
63
|
raise InvalidCategory unless CATEGORIES.key?(category)
|
|
72
64
|
end
|
|
73
65
|
end
|
|
74
66
|
|
|
75
|
-
def _for_each_locations_search_url
|
|
67
|
+
def _for_each_locations_search_url
|
|
76
68
|
@locations.each do |location|
|
|
77
69
|
LOCATIONS[location].each do |url|
|
|
78
70
|
@categories.each do |category|
|
|
@@ -82,7 +74,7 @@ module Craigler
|
|
|
82
74
|
end
|
|
83
75
|
end
|
|
84
76
|
|
|
85
|
-
def _extract_items_from_url(location, url)
|
|
77
|
+
def _extract_items_from_url(location, url)
|
|
86
78
|
(Hpricot(open(url))/'item').collect { |item| {
|
|
87
79
|
:url => item['rdf:about'],
|
|
88
80
|
:title => (item%'title').inner_text,
|
|
@@ -91,4 +83,4 @@ module Craigler
|
|
|
91
83
|
}}
|
|
92
84
|
end
|
|
93
85
|
end
|
|
94
|
-
end
|
|
86
|
+
end
|
data/test/test_helper.rb
CHANGED
|
@@ -1,12 +1,7 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'craigler'
|
|
2
2
|
require 'test/unit'
|
|
3
3
|
require 'shoulda'
|
|
4
4
|
|
|
5
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
6
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
|
7
|
-
|
|
8
|
-
require 'craigler'
|
|
9
|
-
|
|
10
5
|
module Craigler
|
|
11
6
|
class Search
|
|
12
7
|
def open(*args)
|
metadata
CHANGED
|
@@ -1,123 +1,144 @@
|
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: craigler
|
|
3
|
-
version: !ruby/object:Gem::Version
|
|
4
|
-
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.3.3
|
|
5
5
|
prerelease:
|
|
6
|
-
segments:
|
|
7
|
-
- 1
|
|
8
|
-
- 3
|
|
9
|
-
- 2
|
|
10
|
-
version: 1.3.2
|
|
11
6
|
platform: ruby
|
|
12
|
-
authors:
|
|
7
|
+
authors:
|
|
13
8
|
- Devin Christensen
|
|
14
9
|
autorequire:
|
|
15
10
|
bindir: bin
|
|
16
11
|
cert_chain: []
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
- !ruby/object:Gem::Dependency
|
|
12
|
+
date: 2012-10-16 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
21
15
|
name: hpricot
|
|
22
|
-
|
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
24
17
|
none: false
|
|
25
|
-
requirements:
|
|
18
|
+
requirements:
|
|
26
19
|
- - ~>
|
|
27
|
-
- !ruby/object:Gem::Version
|
|
28
|
-
|
|
29
|
-
segments:
|
|
30
|
-
- 0
|
|
31
|
-
- 8
|
|
32
|
-
- 4
|
|
33
|
-
version: 0.8.4
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '0.8'
|
|
34
22
|
type: :runtime
|
|
35
|
-
|
|
36
|
-
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ~>
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '0.8'
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
31
|
+
name: rake
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
none: false
|
|
34
|
+
requirements:
|
|
35
|
+
- - ~>
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
37
|
+
version: 0.9.2
|
|
38
|
+
type: :development
|
|
39
|
+
prerelease: false
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ~>
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: 0.9.2
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
37
47
|
name: shoulda
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
none: false
|
|
50
|
+
requirements:
|
|
51
|
+
- - ~>
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: 3.3.1
|
|
54
|
+
type: :development
|
|
38
55
|
prerelease: false
|
|
39
|
-
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
none: false
|
|
58
|
+
requirements:
|
|
59
|
+
- - ~>
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: 3.3.1
|
|
62
|
+
- !ruby/object:Gem::Dependency
|
|
63
|
+
name: minitest
|
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
|
40
65
|
none: false
|
|
41
|
-
requirements:
|
|
42
|
-
- -
|
|
43
|
-
- !ruby/object:Gem::Version
|
|
44
|
-
|
|
45
|
-
segments:
|
|
46
|
-
- 2
|
|
47
|
-
- 10
|
|
48
|
-
- 3
|
|
49
|
-
version: 2.10.3
|
|
66
|
+
requirements:
|
|
67
|
+
- - ~>
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: 4.1.0
|
|
50
70
|
type: :development
|
|
51
|
-
version_requirements: *id002
|
|
52
|
-
- !ruby/object:Gem::Dependency
|
|
53
|
-
name: rdoc
|
|
54
71
|
prerelease: false
|
|
55
|
-
|
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
+
none: false
|
|
74
|
+
requirements:
|
|
75
|
+
- - ~>
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: 4.1.0
|
|
78
|
+
- !ruby/object:Gem::Dependency
|
|
79
|
+
name: yard
|
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
|
56
81
|
none: false
|
|
57
|
-
requirements:
|
|
82
|
+
requirements:
|
|
58
83
|
- - ~>
|
|
59
|
-
- !ruby/object:Gem::Version
|
|
60
|
-
|
|
61
|
-
segments:
|
|
62
|
-
- 3
|
|
63
|
-
- 11
|
|
64
|
-
- 0
|
|
65
|
-
version: 3.11.0
|
|
84
|
+
- !ruby/object:Gem::Version
|
|
85
|
+
version: '0.7'
|
|
66
86
|
type: :development
|
|
67
|
-
|
|
87
|
+
prerelease: false
|
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
89
|
+
none: false
|
|
90
|
+
requirements:
|
|
91
|
+
- - ~>
|
|
92
|
+
- !ruby/object:Gem::Version
|
|
93
|
+
version: '0.7'
|
|
68
94
|
description:
|
|
69
|
-
email:
|
|
95
|
+
email:
|
|
96
|
+
- quixoten@gmail.com
|
|
70
97
|
executables: []
|
|
71
|
-
|
|
72
98
|
extensions: []
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
- LICENSE
|
|
76
|
-
- README.rdoc
|
|
77
|
-
files:
|
|
99
|
+
extra_rdoc_files: []
|
|
100
|
+
files:
|
|
78
101
|
- .document
|
|
79
|
-
-
|
|
80
|
-
-
|
|
102
|
+
- .gitignore
|
|
103
|
+
- .yardopts
|
|
104
|
+
- Gemfile
|
|
105
|
+
- LICENSE.txt
|
|
106
|
+
- README.md
|
|
81
107
|
- Rakefile
|
|
82
|
-
-
|
|
108
|
+
- craigler.gemspec
|
|
83
109
|
- lib/craigler.rb
|
|
84
110
|
- lib/craigler/constants.rb
|
|
85
111
|
- lib/craigler/search.rb
|
|
112
|
+
- lib/craigler/version.rb
|
|
86
113
|
- test/craigler_search_test.rb
|
|
87
114
|
- test/craigler_test.rb
|
|
88
115
|
- test/test_helper.rb
|
|
89
|
-
homepage: http://github.com/
|
|
116
|
+
homepage: http://github.com/illogician/craigler
|
|
90
117
|
licenses: []
|
|
91
|
-
|
|
92
118
|
post_install_message:
|
|
93
119
|
rdoc_options: []
|
|
94
|
-
|
|
95
|
-
require_paths:
|
|
120
|
+
require_paths:
|
|
96
121
|
- lib
|
|
97
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
98
123
|
none: false
|
|
99
|
-
requirements:
|
|
100
|
-
- -
|
|
101
|
-
- !ruby/object:Gem::Version
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
- 0
|
|
105
|
-
version: "0"
|
|
106
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
124
|
+
requirements:
|
|
125
|
+
- - ! '>='
|
|
126
|
+
- !ruby/object:Gem::Version
|
|
127
|
+
version: '0'
|
|
128
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
107
129
|
none: false
|
|
108
|
-
requirements:
|
|
109
|
-
- -
|
|
110
|
-
- !ruby/object:Gem::Version
|
|
111
|
-
|
|
112
|
-
segments:
|
|
113
|
-
- 0
|
|
114
|
-
version: "0"
|
|
130
|
+
requirements:
|
|
131
|
+
- - ! '>='
|
|
132
|
+
- !ruby/object:Gem::Version
|
|
133
|
+
version: '0'
|
|
115
134
|
requirements: []
|
|
116
|
-
|
|
117
135
|
rubyforge_project:
|
|
118
|
-
rubygems_version: 1.8.
|
|
136
|
+
rubygems_version: 1.8.24
|
|
119
137
|
signing_key:
|
|
120
138
|
specification_version: 3
|
|
121
139
|
summary: Search API for craigslist
|
|
122
|
-
test_files:
|
|
123
|
-
|
|
140
|
+
test_files:
|
|
141
|
+
- test/craigler_search_test.rb
|
|
142
|
+
- test/craigler_test.rb
|
|
143
|
+
- test/test_helper.rb
|
|
144
|
+
has_rdoc:
|
data/README.rdoc
DELETED
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
= Craigler
|
|
2
|
-
|
|
3
|
-
Search API for craigslist
|
|
4
|
-
|
|
5
|
-
== SYNOPSIS:
|
|
6
|
-
I couldn't decide which API I liked best, so you have two choices.
|
|
7
|
-
|
|
8
|
-
Craigler.search(:motorcycles, :in => [:utah, :nevada, :arizona], :for => 'Boulevard M50') do |item|
|
|
9
|
-
puts item.title
|
|
10
|
-
puts item.url
|
|
11
|
-
puts item.time
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
or
|
|
15
|
-
|
|
16
|
-
Craigler.find('Boulevard M50', :in => :california, :only => :motorcycles) do |item|
|
|
17
|
-
puts item.title
|
|
18
|
-
puts item.url
|
|
19
|
-
puts item.time
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
You can also create a search object to fetch the results later. When no location or category is given Craigler searches <tt>:all_for_sale_or_wanted</tt> <tt>:in => :anywhere</tt>
|
|
23
|
-
|
|
24
|
-
search = Craigler::Search.new('Yamaha')
|
|
25
|
-
search.results()
|
|
26
|
-
|
|
27
|
-
Note that additional calls to <tt>search.results()</tt> will always return the same result set unless refresh is forced
|
|
28
|
-
search.results(:refresh => true)
|
|
29
|
-
|
|
30
|
-
See Craigler::Search for a list of all available options
|
|
31
|
-
|
|
32
|
-
=== Supported Categories
|
|
33
|
-
<tt>:all_for_sale_or_wanted</tt>, <tt>:art_and_crafts</tt>, <tt>:auto_parts</tt>, <tt>:baby_and_kid_stuff</tt>, <tt>:barter</tt>, <tt>:bicycles</tt>, <tt>:boats</tt>, <tt>:books</tt>, <tt>:business</tt>, <tt>:cars_and_trucks</tt>, <tt>:clothing</tt>, <tt>:collectibles</tt>, <tt>:community</tt>, <tt>:computers_and_tech</tt>, <tt>:electronics</tt>, <tt>:event</tt>, <tt>:farm_and_garden</tt>, <tt>:free_stuff</tt>, <tt>:furniture</tt>, <tt>:games_and_toys</tt>, <tt>:garage_sales</tt>, <tt>:general</tt>, <tt>:gigs</tt>, <tt>:household</tt>, <tt>:housing</tt>, <tt>:items_wanted</tt>, <tt>:jewelry</tt>, <tt>:jobs</tt>, <tt>:materials</tt>, <tt>:media</tt>, <tt>:motorcycles</tt>, <tt>:musical_instruments</tt>, <tt>:personals</tt>, <tt>:photo_and_video</tt>, <tt>:recreational_vehicles</tt>, <tt>:resume</tt>, <tt>:services_offered</tt>, <tt>:sporting_goods</tt>, <tt>:tickets</tt>, <tt>:tools</tt>
|
|
34
|
-
|
|
35
|
-
=== Supported Locations
|
|
36
|
-
==== States
|
|
37
|
-
<tt>:alaska</tt>, <tt>:arizona</tt>, <tt>:arkansas</tt>, <tt>:california</tt>, <tt>:colorado</tt>, <tt>:connecticut</tt>, <tt>:delaware</tt>, <tt>:dc</tt>, <tt>:florida</tt>, <tt>:georgia</tt>, <tt>:hawaii</tt>, <tt>:idaho</tt>, <tt>:illinois</tt>, <tt>:indiana</tt>, <tt>:iowa</tt>, <tt>:kansas</tt>, <tt>:kentucky</tt>, <tt>:louisiana</tt>, <tt>:maine</tt>, <tt>:maryland</tt>, <tt>:mass</tt>, <tt>:michigan</tt>, <tt>:minnesota</tt>, <tt>:mississippi</tt>, <tt>:missouri</tt>, <tt>:montana</tt>, <tt>:nebraska</tt>, <tt>:nevada</tt>, <tt>:n_hampshire</tt>, <tt>:new_jersey</tt>, <tt>:new_mexico</tt>, <tt>:new_york</tt>, <tt>:n_carolina</tt>, <tt>:north_dakota</tt>, <tt>:ohio</tt>, <tt>:oklahoma</tt>, <tt>:oregon</tt>, <tt>:pennsylvania</tt>, <tt>:rhode_island</tt>, <tt>:s_carolina</tt>, <tt>:south_dakota</tt>, <tt>:tennessee</tt>, <tt>:texas</tt>, <tt>:utah</tt>, <tt>:vermont</tt>, <tt>:virginia</tt>, <tt>:washington</tt>, <tt>:west_virginia</tt> <tt>:wisconsin</tt>, <tt>:wyoming</tt>
|
|
38
|
-
==== Cities
|
|
39
|
-
===== Alabama
|
|
40
|
-
<tt>:auburn</tt>,<tt>:bham</tt>,<tt>:columbusga</tt>,<tt>:dothan</tt>,<tt>:shoals</tt>,<tt>:gadsden</tt>,<tt>:huntsville</tt>,<tt>:mobile</tt>,<tt>:montgomery</tt>,<tt>:tuscaloosa</tt>,
|
|
41
|
-
===== Alaska
|
|
42
|
-
<tt>:anchorage</tt>,
|
|
43
|
-
===== Arizona
|
|
44
|
-
<tt>:flagstaff</tt>,<tt>:mohave</tt>,<tt>:phoenix</tt>,<tt>:prescott</tt>,<tt>:sierravista</tt>,<tt>:tucson</tt>,<tt>:yuma</tt>,
|
|
45
|
-
===== Arkansas
|
|
46
|
-
<tt>:fayar</tt>,<tt>:fortsmith</tt>,<tt>:jonesboro</tt>,<tt>:littlerock</tt>,<tt>:memphis</tt>,<tt>:texarkana</tt>,
|
|
47
|
-
===== California
|
|
48
|
-
<tt>:sfbay</tt>,<tt>:bakersfield</tt>,<tt>:chico</tt>,<tt>:fresno</tt>,<tt>:goldcountry</tt>,<tt>:humboldt</tt>,<tt>:imperial</tt>,<tt>:inlandempire</tt>,
|
|
49
|
-
<tt>:losangeles</tt>,<tt>:mendocino</tt>,<tt>:merced</tt>,<tt>:modesto</tt>,<tt>:monterey</tt>,<tt>:orangecounty</tt>,<tt>:palmsprings</tt>,<tt>:redding</tt>,
|
|
50
|
-
<tt>:reno</tt>,<tt>:sacramento</tt>,<tt>:sandiego</tt>,<tt>:slo</tt>,<tt>:santabarbara</tt>,<tt>:stockton</tt>,<tt>:ventura</tt>,<tt>:visalia</tt>,<tt>:yubasutter</tt>,
|
|
51
|
-
===== Colorado
|
|
52
|
-
<tt>:boulder</tt>,<tt>:cosprings</tt>,<tt>:denver</tt>,<tt>:fortcollins</tt>,<tt>:pueblo</tt>,<tt>:rockies</tt>,<tt>:westslope</tt>,
|
|
53
|
-
===== Connecticut
|
|
54
|
-
<tt>:newlondon</tt>,<tt>:hartford</tt>,<tt>:newhaven</tt>,<tt>:nwct</tt>,
|
|
55
|
-
===== Delaware
|
|
56
|
-
<tt>:delaware</tt>,
|
|
57
|
-
===== Dc
|
|
58
|
-
<tt>:washingtondc</tt>,
|
|
59
|
-
===== Florida
|
|
60
|
-
<tt>:daytona</tt>,<tt>:keys</tt>,<tt>:fortmyers</tt>,<tt>:gainesville</tt>,<tt>:jacksonville</tt>,<tt>:lakeland</tt>,<tt>:ocala</tt>,<tt>:orlando</tt>,
|
|
61
|
-
<tt>:panamacity</tt>,<tt>:pensacola</tt>,<tt>:sarasota</tt>,<tt>:miami</tt>,<tt>:spacecoast</tt>,<tt>:staugustine</tt>,<tt>:tallahassee</tt>,<tt>:tampa</tt>,<tt>:treasure</tt>,
|
|
62
|
-
===== Georgia
|
|
63
|
-
<tt>:athensga</tt>,<tt>:atlanta</tt>,<tt>:augusta</tt>,<tt>:brunswick</tt>,<tt>:columbusga</tt>,<tt>:macon</tt>,<tt>:savannah</tt>,<tt>:valdosta</tt>,
|
|
64
|
-
===== Hawaii
|
|
65
|
-
<tt>:honolulu</tt>,
|
|
66
|
-
===== Idaho
|
|
67
|
-
<tt>:boise</tt>,<tt>:eastidaho</tt>,<tt>:pullman</tt>,<tt>:spokane</tt>,<tt>:twinfalls</tt>,
|
|
68
|
-
===== Illinois
|
|
69
|
-
<tt>:bn</tt>,<tt>:carbondale</tt>,<tt>:chambana</tt>,<tt>:chicago</tt>,<tt>:decatur</tt>,<tt>:peoria</tt>,<tt>:quadcities</tt>,<tt>:rockford</tt>,<tt>:springfieldil</tt>,<tt>:stlouis</tt>,
|
|
70
|
-
===== Indiana
|
|
71
|
-
<tt>:bloomington</tt>,<tt>:evansville</tt>,<tt>:fortwayne</tt>,<tt>:indianapolis</tt>,<tt>:tippecanoe</tt>,<tt>:muncie</tt>,<tt>:southbend</tt>,<tt>:terrehaute</tt>,
|
|
72
|
-
===== Iowa
|
|
73
|
-
<tt>:ames</tt>,<tt>:cedarrapids</tt>,<tt>:desmoines</tt>,<tt>:dubuque</tt>,<tt>:iowacity</tt>,<tt>:omaha</tt>,<tt>:quadcities</tt>,<tt>:siouxcity</tt>,<tt>:waterloo</tt>,
|
|
74
|
-
===== Kansas
|
|
75
|
-
<tt>:kansascity</tt>,<tt>:lawrence</tt>,<tt>:ksu</tt>,<tt>:topeka</tt>,<tt>:wichita</tt>,
|
|
76
|
-
===== Kentucky
|
|
77
|
-
<tt>:bgky</tt>,<tt>:cincinnati</tt>,<tt>:huntington</tt>,<tt>:lexington</tt>,<tt>:louisville</tt>,<tt>:westky</tt>,
|
|
78
|
-
===== Louisiana
|
|
79
|
-
<tt>:batonrouge</tt>,<tt>:lafayette</tt>,<tt>:lakecharles</tt>,<tt>:monroe</tt>,<tt>:neworleans</tt>,<tt>:shreveport</tt>,
|
|
80
|
-
===== Maine
|
|
81
|
-
<tt>:maine</tt>,
|
|
82
|
-
===== Maryland
|
|
83
|
-
<tt>:annapolis</tt>,<tt>:baltimore</tt>,<tt>:easternshore</tt>,<tt>:smd</tt>,<tt>:westmd</tt>,
|
|
84
|
-
===== Mass
|
|
85
|
-
<tt>:boston</tt>,<tt>:capecod</tt>,<tt>:southcoast</tt>,<tt>:westernmass</tt>,<tt>:worcester</tt>,
|
|
86
|
-
===== Michigan
|
|
87
|
-
<tt>:annarbor</tt>,<tt>:centralmich</tt>,<tt>:detroit</tt>,<tt>:flint</tt>,<tt>:grandrapids</tt>,<tt>:jxn</tt>,<tt>:kalamazoo</tt>,<tt>:lansing</tt>,
|
|
88
|
-
<tt>:muskegon</tt>,<tt>:nmi</tt>,<tt>:porthuron</tt>,<tt>:saginaw</tt>,<tt>:southbend</tt>,<tt>:swmi</tt>,<tt>:up</tt>,
|
|
89
|
-
===== Minnesota
|
|
90
|
-
<tt>:duluth</tt>,<tt>:fargo</tt>,<tt>:mankato</tt>,<tt>:minneapolis</tt>,<tt>:rmn</tt>,<tt>:stcloud</tt>,
|
|
91
|
-
===== Mississippi
|
|
92
|
-
<tt>:gulfport</tt>,<tt>:hattiesburg</tt>,<tt>:jackson</tt>,<tt>:memphis</tt>,<tt>:northmiss</tt>,
|
|
93
|
-
===== Missouri
|
|
94
|
-
<tt>:columbiamo</tt>,<tt>:joplin</tt>,<tt>:kansascity</tt>,<tt>:semo</tt>,<tt>:springfield</tt>,<tt>:stlouis</tt>,
|
|
95
|
-
===== Montana
|
|
96
|
-
<tt>:montana</tt>,
|
|
97
|
-
===== Nebraska
|
|
98
|
-
<tt>:grandisland</tt>,<tt>:lincoln</tt>,<tt>:omaha</tt>,<tt>:siouxcity</tt>,
|
|
99
|
-
===== Nevada
|
|
100
|
-
<tt>:lasvegas</tt>,<tt>:reno</tt>,
|
|
101
|
-
===== N hampshire
|
|
102
|
-
<tt>:nh</tt>,
|
|
103
|
-
===== New jersey
|
|
104
|
-
<tt>:cnj</tt>,<tt>:jerseyshore</tt>,<tt>:newjersey</tt>,<tt>:southjersey</tt>,
|
|
105
|
-
===== New mexico
|
|
106
|
-
<tt>:albuquerque</tt>,<tt>:farmington</tt>,<tt>:lascruces</tt>,<tt>:roswell</tt>,<tt>:santafe</tt>,
|
|
107
|
-
===== New york
|
|
108
|
-
<tt>:albany</tt>,<tt>:binghamton</tt>,<tt>:buffalo</tt>,<tt>:catskills</tt>,<tt>:chautauqua</tt>,<tt>:elmira</tt>,<tt>:hudsonvalley</tt>,<tt>:ithaca</tt>,
|
|
109
|
-
<tt>:longisland</tt>,<tt>:newyork</tt>,<tt>:plattsburgh</tt>,<tt>:rochester</tt>,<tt>:syracuse</tt>,<tt>:utica</tt>,<tt>:watertown</tt>,
|
|
110
|
-
===== N carolina
|
|
111
|
-
<tt>:asheville</tt>,<tt>:boone</tt>,<tt>:charlotte</tt>,<tt>:eastnc</tt>,<tt>:fayetteville</tt>,<tt>:greensboro</tt>,<tt>:hickory</tt>,<tt>:outerbanks</tt>,
|
|
112
|
-
<tt>:raleigh</tt>,<tt>:wilmington</tt>,<tt>:winstonsalem</tt>,
|
|
113
|
-
===== North dakota
|
|
114
|
-
<tt>:fargo</tt>,<tt>:nd</tt>,
|
|
115
|
-
===== Ohio
|
|
116
|
-
<tt>:akroncanton</tt>,<tt>:athensohio</tt>,<tt>:cincinnati</tt>,<tt>:cleveland</tt>,<tt>:columbus</tt>,<tt>:dayton</tt>,<tt>:huntington</tt>,<tt>:limaohio</tt>,
|
|
117
|
-
<tt>:mansfield</tt>,<tt>:parkersburg</tt>,<tt>:sandusky</tt>,<tt>:toledo</tt>,<tt>:wheeling</tt>,<tt>:youngstown</tt>,
|
|
118
|
-
===== Oklahoma
|
|
119
|
-
<tt>:fortsmith</tt>,<tt>:lawton</tt>,<tt>:oklahomacity</tt>,<tt>:stillwater</tt>,<tt>:tulsa</tt>,
|
|
120
|
-
===== Oregon
|
|
121
|
-
<tt>:bend</tt>,<tt>:corvallis</tt>,<tt>:eastoregon</tt>,<tt>:eugene</tt>,<tt>:medford</tt>,<tt>:oregoncoast</tt>,<tt>:portland</tt>,<tt>:roseburg</tt>,<tt>:salem</tt>,
|
|
122
|
-
===== Pennsylvania
|
|
123
|
-
<tt>:altoona</tt>,<tt>:erie</tt>,<tt>:harrisburg</tt>,<tt>:lancaster</tt>,<tt>:allentown</tt>,<tt>:philadelphia</tt>,<tt>:pittsburgh</tt>,<tt>:poconos</tt>,
|
|
124
|
-
<tt>:reading</tt>,<tt>:scranton</tt>,<tt>:pennstate</tt>,<tt>:williamsport</tt>,<tt>:york</tt>,
|
|
125
|
-
===== Rhode island
|
|
126
|
-
<tt>:providence</tt>,
|
|
127
|
-
===== S carolina
|
|
128
|
-
<tt>:charleston</tt>,<tt>:columbia</tt>,<tt>:florencesc</tt>,<tt>:greenville</tt>,<tt>:hiltonhead</tt>,<tt>:myrtlebeach</tt>,
|
|
129
|
-
===== South dakota
|
|
130
|
-
<tt>:sd</tt>,
|
|
131
|
-
===== Tennessee
|
|
132
|
-
<tt>:chattanooga</tt>,<tt>:clarksville</tt>,<tt>:jacksontn</tt>,<tt>:knoxville</tt>,<tt>:memphis</tt>,<tt>:nashville</tt>,<tt>:tricities</tt>,
|
|
133
|
-
===== Texas
|
|
134
|
-
<tt>:abilene</tt>,<tt>:amarillo</tt>,<tt>:austin</tt>,<tt>:beaumont</tt>,<tt>:brownsville</tt>,<tt>:collegestation</tt>,<tt>:corpuschristi</tt>,<tt>:dallas</tt>,
|
|
135
|
-
<tt>:elpaso</tt>,<tt>:galveston</tt>,<tt>:houston</tt>,<tt>:killeen</tt>,<tt>:laredo</tt>,<tt>:lubbock</tt>,<tt>:mcallen</tt>,<tt>:odessa</tt>,<tt>:sanantonio</tt>,
|
|
136
|
-
<tt>:sanmarcos</tt>,<tt>:texarkana</tt>,<tt>:easttexas</tt>,<tt>:victoriatx</tt>,<tt>:waco</tt>,<tt>:wichitafalls</tt>,
|
|
137
|
-
===== Utah
|
|
138
|
-
<tt>:logan</tt>,<tt>:ogden</tt>,<tt>:provo</tt>,<tt>:saltlakecity</tt>,<tt>:stgeorge</tt>,
|
|
139
|
-
===== Vermont
|
|
140
|
-
<tt>:burlington</tt>,
|
|
141
|
-
===== Virginia
|
|
142
|
-
<tt>:blacksburg</tt>,<tt>:charlottesville</tt>,<tt>:danville</tt>,<tt>:easternshore</tt>,<tt>:fredericksburg</tt>,<tt>:norfolk</tt>,<tt>:harrisonburg</tt>,
|
|
143
|
-
<tt>:lynchburg</tt>,<tt>:richmond</tt>,<tt>:roanoke</tt>,
|
|
144
|
-
===== Washington
|
|
145
|
-
<tt>:bellingham</tt>,<tt>:kpr</tt>,<tt>:olympic</tt>,<tt>:pullman</tt>,<tt>:seattle</tt>,<tt>:skagit</tt>,<tt>:spokane</tt>,<tt>:wenatchee</tt>,<tt>:yakima</tt>,
|
|
146
|
-
===== West virginia
|
|
147
|
-
<tt>:charlestonwv</tt>,<tt>:huntington</tt>,<tt>:martinsburg</tt>,<tt>:morgantown</tt>,<tt>:parkersburg</tt>,<tt>:wv</tt>,<tt>:wheeling</tt>,
|
|
148
|
-
===== Wisconsin
|
|
149
|
-
<tt>:appleton</tt>,<tt>:duluth</tt>,<tt>:eauclaire</tt>,<tt>:greenbay</tt>,<tt>:janesville</tt>,<tt>:racine</tt>,<tt>:lacrosse</tt>,<tt>:madison</tt>,
|
|
150
|
-
<tt>:milwaukee</tt>,<tt>:sheboygan</tt>,<tt>:wausau</tt>
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
Or use <tt>:in => :anywhere</tt> to search all supported locations.
|
|
154
|
-
|
|
155
|
-
== REQUIREMENTS:
|
|
156
|
-
|
|
157
|
-
* Hpricot
|
|
158
|
-
|
|
159
|
-
== INSTALL:
|
|
160
|
-
|
|
161
|
-
* sudo gem install quixoten-craigler
|
|
162
|
-
|
|
163
|
-
== Copyright
|
|
164
|
-
|
|
165
|
-
Copyright (c) 2009 Devin Christensen. See LICENSE for details.
|