olek-libcraigscrape 1.0.3 → 1.1.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/CHANGELOG +12 -6
- data/COPYING.LESSER +1 -1
- data/README +10 -10
- data/Rakefile +5 -54
- data/bin/craig_report_schema.yml +3 -3
- data/bin/craigwatch +32 -44
- data/bin/report_mailer/report.html.erb +17 -0
- data/bin/report_mailer/{craigslist_report.plain.erb → report.text.erb} +6 -6
- data/lib/geo_listings.rb +24 -24
- data/lib/libcraigscrape.rb +6 -11
- data/lib/listings.rb +62 -45
- data/lib/posting.rb +153 -106
- data/lib/scraper.rb +37 -94
- data/test/libcraigscrape_test_helpers.rb +10 -10
- data/test/test_craigslist_geolisting.rb +53 -53
- data/test/test_craigslist_listing.rb +26 -26
- data/test/test_craigslist_posting.rb +39 -38
- metadata +38 -114
- data/bin/report_mailer/craigslist_report.html.erb +0 -17
@@ -6,8 +6,8 @@ require File.dirname(__FILE__)+'/libcraigscrape_test_helpers'
|
|
6
6
|
|
7
7
|
class CraigslistListingTest < Test::Unit::TestCase
|
8
8
|
include LibcraigscrapeTestHelpers
|
9
|
-
|
10
|
-
def test_listings_parse
|
9
|
+
|
10
|
+
def test_listings_parse
|
11
11
|
category = CraigScrape::Listings.new relative_uri_for('listing_samples/category_output.html')
|
12
12
|
assert_equal 'index100.html', category.next_page_href
|
13
13
|
assert_equal 100, category.posts.length
|
@@ -16,19 +16,19 @@ class CraigslistListingTest < Test::Unit::TestCase
|
|
16
16
|
assert_equal 4, l.post_date.month
|
17
17
|
assert_equal 18, l.post_date.day
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
category2 = CraigScrape::Listings.new relative_uri_for('listing_samples/category_output_2.html')
|
21
21
|
assert_equal 'index900.html', category2.next_page_href
|
22
22
|
assert_equal 100, category2.posts.length
|
23
|
-
|
23
|
+
|
24
24
|
long_search = CraigScrape::Listings.new relative_uri_for('listing_samples/long_search_output.html')
|
25
25
|
assert_equal '/search/rea?query=house&minAsk=min&maxAsk=max&bedrooms=&s=800', long_search.next_page_href
|
26
26
|
assert_equal 100, long_search.posts.length
|
27
|
-
|
27
|
+
|
28
28
|
short_search = CraigScrape::Listings.new relative_uri_for('listing_samples/short_search_output.html')
|
29
29
|
assert_equal nil, short_search.next_page_href
|
30
30
|
assert_equal 93, short_search.posts.length
|
31
|
-
|
31
|
+
|
32
32
|
mia_fua_index8900_052109 = CraigScrape::Listings.new relative_uri_for('listing_samples/mia_fua_index8900.5.21.09.html')
|
33
33
|
assert_equal 'index9000.html', mia_fua_index8900_052109.next_page_href
|
34
34
|
assert_equal 100, mia_fua_index8900_052109.posts.length
|
@@ -36,13 +36,13 @@ class CraigslistListingTest < Test::Unit::TestCase
|
|
36
36
|
# This actually happens quite a bit...
|
37
37
|
mia_fua_index8900_052109.posts[0..13].each do |l|
|
38
38
|
assert_equal 5, l.post_date.month
|
39
|
-
assert_equal 15, l.post_date.day
|
39
|
+
assert_equal 15, l.post_date.day
|
40
40
|
end
|
41
41
|
mia_fua_index8900_052109.posts[14..99].each do |l|
|
42
42
|
assert_equal 5, l.post_date.month
|
43
43
|
assert_equal 14, l.post_date.day
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
empty_listings = CraigScrape::Listings.new relative_uri_for('listing_samples/empty_listings.html')
|
47
47
|
assert_equal nil, empty_listings.next_page_href
|
48
48
|
assert_equal [], empty_listings.posts
|
@@ -52,12 +52,12 @@ class CraigslistListingTest < Test::Unit::TestCase
|
|
52
52
|
# libcraigscrape is supposed to 'smart' when downloading postings that don't make 'sense' solely by looking at the listings.
|
53
53
|
# I'm only seen this on occasion, but its annoying and craigslist seems to use a lot of approximations sometimes
|
54
54
|
# The test page supplied is slightly adjusted to compensate for the lack of a web server when readng pages form the filesystem.
|
55
|
-
|
55
|
+
|
56
56
|
fortmyers_art_index500_060909 = CraigScrape::Listings.new relative_uri_for('listing_samples/fortmyers_art_index.060909/fortmyers_art_index500.060909.html')
|
57
57
|
fortmyers_art_index500_060909.posts[0..12].each do |l|
|
58
58
|
assert_equal 5, l.post_date.month
|
59
59
|
assert_equal 16, l.post_date.day
|
60
|
-
end
|
60
|
+
end
|
61
61
|
fortmyers_art_index500_060909.posts[13..36].each do |l|
|
62
62
|
assert_equal 5, l.post_date.month
|
63
63
|
assert_equal 15, l.post_date.day
|
@@ -65,7 +65,7 @@ class CraigslistListingTest < Test::Unit::TestCase
|
|
65
65
|
fortmyers_art_index500_060909.posts[37..41].each do |l|
|
66
66
|
assert_equal 5, l.post_date.month
|
67
67
|
assert_equal 14, l.post_date.day
|
68
|
-
end
|
68
|
+
end
|
69
69
|
fortmyers_art_index500_060909.posts[42..55].each do |l|
|
70
70
|
assert_equal 5, l.post_date.month
|
71
71
|
assert_equal 13, l.post_date.day
|
@@ -73,19 +73,19 @@ class CraigslistListingTest < Test::Unit::TestCase
|
|
73
73
|
fortmyers_art_index500_060909.posts[56..65].each do |l|
|
74
74
|
assert_equal 5, l.post_date.month
|
75
75
|
assert_equal 12, l.post_date.day
|
76
|
-
end
|
76
|
+
end
|
77
77
|
fortmyers_art_index500_060909.posts[66..87].each do |l|
|
78
78
|
assert_equal 5, l.post_date.month
|
79
79
|
assert_equal 11, l.post_date.day
|
80
|
-
end
|
80
|
+
end
|
81
81
|
fortmyers_art_index500_060909.posts[88..94].each do |l|
|
82
82
|
assert_equal 5, l.post_date.month
|
83
83
|
assert_equal 10, l.post_date.day
|
84
|
-
end
|
84
|
+
end
|
85
85
|
assert_equal 4, fortmyers_art_index500_060909.posts[95].post_date.month
|
86
86
|
assert_equal 8, fortmyers_art_index500_060909.posts[95].post_date.day
|
87
87
|
assert_equal 2, fortmyers_art_index500_060909.posts[96].post_date.month
|
88
|
-
assert_equal 27, fortmyers_art_index500_060909.posts[96].post_date.day
|
88
|
+
assert_equal 27, fortmyers_art_index500_060909.posts[96].post_date.day
|
89
89
|
assert_equal 2, fortmyers_art_index500_060909.posts[97].post_date.month
|
90
90
|
assert_equal 23, fortmyers_art_index500_060909.posts[97].post_date.day
|
91
91
|
assert_equal 1, fortmyers_art_index500_060909.posts[98].post_date.month
|
@@ -93,9 +93,9 @@ class CraigslistListingTest < Test::Unit::TestCase
|
|
93
93
|
assert_equal 12, fortmyers_art_index500_060909.posts[99].post_date.month
|
94
94
|
assert_equal 16, fortmyers_art_index500_060909.posts[99].post_date.day
|
95
95
|
|
96
|
-
# Now we'll do one of these elusive 'trailer' pages which don't seem to really make much sense.
|
96
|
+
# Now we'll do one of these elusive 'trailer' pages which don't seem to really make much sense.
|
97
97
|
# Best I can tell, it only comes after a page like the one tested just above
|
98
|
-
fortmyers_art_index600_060909 = CraigScrape::Listings.new relative_uri_for('listing_samples/fortmyers_art_index.060909/fortmyers_art_index600.060909.html')
|
98
|
+
fortmyers_art_index600_060909 = CraigScrape::Listings.new relative_uri_for('listing_samples/fortmyers_art_index.060909/fortmyers_art_index600.060909.html')
|
99
99
|
assert_equal "Husqvarna Viking Rose: Used Embroidery/Sewing Machine. Instruction book, Video, Embroidery Unit, 4\" 4\" hoop, designs, tool box with accessories including 8 feet (A, B, C, D, E, J, P, U and zipper foot). $400.00 Firm. (941) 347-8014 or (352)638-4707.", fortmyers_art_index600_060909.posts[0].contents
|
100
100
|
assert_equal "Husqvarna Viking Rose: Used Embroidery/Sewing Machine. Instruction book, Video, Embroidery Unit, 4\" 4\" hoop, designs, tool box with accessories including 8 feet (A, B, C, D, E, J, P, U and zipper foot). $400.00 Firm. (941) 347-8014 or (352)638-4707.", fortmyers_art_index600_060909.posts[0].contents_as_plain
|
101
101
|
assert_equal false, fortmyers_art_index600_060909.posts[0].deleted_by_author?
|
@@ -121,7 +121,7 @@ class CraigslistListingTest < Test::Unit::TestCase
|
|
121
121
|
assert_equal "art & crafts", fortmyers_art_index600_060909.posts[0].section
|
122
122
|
assert_equal false, fortmyers_art_index600_060909.posts[0].system_post?
|
123
123
|
assert_equal "Husqvarna Viking Rose Embroidery-Sewing Machine", fortmyers_art_index600_060909.posts[0].title
|
124
|
-
|
124
|
+
|
125
125
|
assert_equal "Multiple artists' moving sale. Lots of unusual items including art, art supplies, ceramics and ceramic glazes, furniture, clothes, books, electronics, cd's and much more. Also for sale is alot of restaurant equpment.\r<br>\n\r<br>\nSale to be held at 3570 Bayshore Dr. next to Bayshore Coffee Co.\r<br>\n\r<br>\nSaturday 8:00 a.m. until 2:00 Rain or shine.\r<br>", fortmyers_art_index600_060909.posts[1].contents
|
126
126
|
assert_equal "Multiple artists' moving sale. Lots of unusual items including art, art supplies, ceramics and ceramic glazes, furniture, clothes, books, electronics, cd's and much more. Also for sale is alot of restaurant equpment.\r\n\r\nSale to be held at 3570 Bayshore Dr. next to Bayshore Coffee Co.\r\n\r\nSaturday 8:00 a.m. until 2:00 Rain or shine.\r", fortmyers_art_index600_060909.posts[1].contents_as_plain
|
127
127
|
assert_equal false, fortmyers_art_index600_060909.posts[1].deleted_by_author?
|
@@ -147,7 +147,7 @@ class CraigslistListingTest < Test::Unit::TestCase
|
|
147
147
|
assert_equal "art & crafts", fortmyers_art_index600_060909.posts[1].section
|
148
148
|
assert_equal false, fortmyers_art_index600_060909.posts[1].system_post?
|
149
149
|
assert_equal "ARTISTS' MOVING SALE-BAYSHORE", fortmyers_art_index600_060909.posts[1].title
|
150
|
-
|
150
|
+
|
151
151
|
assert_equal "Tapestry sewing machine and embroidery arm luggage for Viking designer sewing machine. Two years old in excellent condition.", fortmyers_art_index600_060909.posts[2].contents
|
152
152
|
assert_equal "Tapestry sewing machine and embroidery arm luggage for Viking designer sewing machine. Two years old in excellent condition.", fortmyers_art_index600_060909.posts[2].contents_as_plain
|
153
153
|
assert_equal false, fortmyers_art_index600_060909.posts[2].deleted_by_author?
|
@@ -173,7 +173,7 @@ class CraigslistListingTest < Test::Unit::TestCase
|
|
173
173
|
assert_equal "art & crafts", fortmyers_art_index600_060909.posts[2].section
|
174
174
|
assert_equal false, fortmyers_art_index600_060909.posts[2].system_post?
|
175
175
|
assert_equal "tapestry sewing machine and embroidery arm luggage", fortmyers_art_index600_060909.posts[2].title
|
176
|
-
|
176
|
+
|
177
177
|
assert_equal "Gorgeous and one of a kind! Museum-collected artist Jay von Koffler's Aurora Series - cast glass nude sculpture - Aurora. Mounted on marble and enhanced with bronze beak. \r<br>\n\r<br>\nDimensions: 30x16x6\r<br>\nCall for appointment for studio viewing - 239.595.1793", fortmyers_art_index600_060909.posts[3].contents
|
178
178
|
assert_equal "Gorgeous and one of a kind! Museum-collected artist Jay von Koffler's Aurora Series - cast glass nude sculpture - Aurora. Mounted on marble and enhanced with bronze beak. \r\n\r\nDimensions: 30x16x6\r\nCall for appointment for studio viewing - 239.595.1793", fortmyers_art_index600_060909.posts[3].contents_as_plain
|
179
179
|
assert_equal false, fortmyers_art_index600_060909.posts[3].deleted_by_author?
|
@@ -200,14 +200,14 @@ class CraigslistListingTest < Test::Unit::TestCase
|
|
200
200
|
assert_equal false, fortmyers_art_index600_060909.posts[3].system_post?
|
201
201
|
assert_equal "Cast Glass Sculpture - Aurora", fortmyers_art_index600_060909.posts[3].title
|
202
202
|
end
|
203
|
-
|
203
|
+
|
204
204
|
def test_nasty_search_listings
|
205
205
|
miami_search_sss_rack900_061809 = CraigScrape::Listings.new relative_uri_for('listing_samples/miami_search_sss_rack.6.18.09/miami_search_sss_rack900.6.18.09.html')
|
206
206
|
assert_equal '/search/sss?query=rack&s=1000', miami_search_sss_rack900_061809.next_page_href
|
207
|
-
|
207
|
+
|
208
208
|
miami_search_sss_rack1000_061809 = CraigScrape::Listings.new relative_uri_for('listing_samples/miami_search_sss_rack.6.18.09/miami_search_sss_rack1000.6.18.09.html')
|
209
209
|
assert_equal nil, miami_search_sss_rack1000_061809.next_page_href
|
210
|
-
|
210
|
+
|
211
211
|
mia_search_kitten031510 = CraigScrape::Listings.new relative_uri_for('listing_samples/mia_search_kitten.3.15.10.html')
|
212
212
|
assert_equal "Adopt a 7 month on kitten- $75", mia_search_kitten031510.posts[0].label
|
213
213
|
assert_equal [15, 3], mia_search_kitten031510.posts[0].post_date.to_a[3..4]
|
@@ -256,7 +256,7 @@ class CraigslistListingTest < Test::Unit::TestCase
|
|
256
256
|
|
257
257
|
def test_new_listing_span051710_labels
|
258
258
|
new_listing_span051710 = CraigScrape::Listings.new relative_uri_for('listing_samples/new_listing_span.4.17.10.html')
|
259
|
-
|
259
|
+
|
260
260
|
assert_equal " Art Directly for Sale from the Artist", new_listing_span051710.posts[0].label
|
261
261
|
assert_equal "Wall Art, Contemporary Abstract by Vista Gallories", new_listing_span051710.posts[1].label
|
262
262
|
assert_equal "Gary George \"Darice\" Giclee Semi Nude Woman COA NEW", new_listing_span051710.posts[2].label
|
@@ -358,5 +358,5 @@ class CraigslistListingTest < Test::Unit::TestCase
|
|
358
358
|
assert_equal "Wyland Oil Painting", new_listing_span051710.posts[98].label
|
359
359
|
assert_equal "Denim Fabric Blocks for Crafts", new_listing_span051710.posts[99].label
|
360
360
|
end
|
361
|
-
|
362
|
-
end
|
361
|
+
|
362
|
+
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
#!/usr/bin/ruby
|
2
|
+
# encoding: UTF-8
|
2
3
|
|
3
4
|
require 'test/unit'
|
4
5
|
require File.dirname(__FILE__)+'/../lib/libcraigscrape'
|
@@ -7,7 +8,7 @@ require File.dirname(__FILE__)+'/libcraigscrape_test_helpers'
|
|
7
8
|
|
8
9
|
class CraigslistPostingTest < Test::Unit::TestCase
|
9
10
|
include LibcraigscrapeTestHelpers
|
10
|
-
|
11
|
+
|
11
12
|
def test_pukes
|
12
13
|
assert_raise(CraigScrape::Scraper::ParseError) do
|
13
14
|
CraigScrape::Posting.new( relative_uri_for('google.html') ).contents
|
@@ -22,7 +23,7 @@ EOD
|
|
22
23
|
<p> Jan 4 - <a href="/mdc/reb/1128609783.html">$348000 / 1br - Large 1/1 plus office on 49th Floor. 5-Star NEW Condo. Great Views -</a><font size="-1"> (Miami)</font> <span class="p"> pic img</span> <<<i><a href="/reb/">real estate - by broker</a></i></p>
|
23
24
|
EOD
|
24
25
|
search_html_three = <<EOD
|
25
|
-
<p> Dec 31 - <a href="/mdc/reb/1128520894.html">$22,000 HOME -ADULT COMMUNITY BOYNTON BEACH -</a> <span class="p"> pic</span> <<<i><a href="/reb/">real estate - by broker</a></i></p>
|
26
|
+
<p> Dec 31 - <a href="/mdc/reb/1128520894.html">$22,000 HOME -ADULT COMMUNITY BOYNTON BEACH -</a> <span class="p"> pic</span> <<<i><a href="/reb/">real estate - by broker</a></i></p>
|
26
27
|
EOD
|
27
28
|
search_html_four = <<EOD
|
28
29
|
<p> Jul 22 - <a href="/mdc/reb/1128474725.html">$325000 / 3br - GOOD DEAL GREAT HOUSE AND LOCATION -</a><font size="-1"> (CORAL GABLES)</font> <<<i><a href="/reb/">real estate - by broker</a></i></p>
|
@@ -45,7 +46,7 @@ EOD
|
|
45
46
|
assert_equal true, one.has_pic_or_img?
|
46
47
|
assert_equal '/brw/reb/1128608404.html', one.href
|
47
48
|
assert_equal "Losing your house? You'll need this New Loan Mod Video", one.label
|
48
|
-
assert_equal "real
|
49
|
+
assert_equal "real estate - by broker", one.section
|
49
50
|
assert_equal "W. Woodland", one.location
|
50
51
|
assert_equal 4, one.post_date.month
|
51
52
|
assert_equal 18, one.post_date.day
|
@@ -59,7 +60,7 @@ EOD
|
|
59
60
|
assert_equal true, two.has_pic_or_img?
|
60
61
|
assert_equal '/mdc/reb/1128609783.html', two.href
|
61
62
|
assert_equal "$348000 / 1br - Large 1/1 plus office on 49th Floor. 5-Star NEW Condo. Great Views", two.label
|
62
|
-
assert_equal "real
|
63
|
+
assert_equal "real estate - by broker", two.section
|
63
64
|
assert_equal "Miami", two.location
|
64
65
|
assert_equal 1, two.post_date.month
|
65
66
|
assert_equal 4, two.post_date.day
|
@@ -73,7 +74,7 @@ EOD
|
|
73
74
|
assert_equal true, three.has_pic_or_img?
|
74
75
|
assert_equal '/mdc/reb/1128520894.html', three.href
|
75
76
|
assert_equal "$22,000 HOME -ADULT COMMUNITY BOYNTON BEACH", three.label
|
76
|
-
assert_equal "real
|
77
|
+
assert_equal "real estate - by broker", three.section
|
77
78
|
assert_equal nil, three.location
|
78
79
|
assert_equal 12, three.post_date.month
|
79
80
|
assert_equal 31, three.post_date.day
|
@@ -87,7 +88,7 @@ EOD
|
|
87
88
|
assert_equal false, four.has_pic_or_img?
|
88
89
|
assert_equal '/mdc/reb/1128474725.html', four.href
|
89
90
|
assert_equal "$325000 / 3br - GOOD DEAL GREAT HOUSE AND LOCATION", four.label
|
90
|
-
assert_equal "real
|
91
|
+
assert_equal "real estate - by broker", four.section
|
91
92
|
assert_equal "CORAL GABLES", four.location
|
92
93
|
assert_equal 7, four.post_date.month
|
93
94
|
assert_equal 22, four.post_date.day
|
@@ -115,7 +116,7 @@ EOD
|
|
115
116
|
assert_equal true, six.has_pic_or_img?
|
116
117
|
assert_equal '/pbc/reb/1128661387.html', six.href
|
117
118
|
assert_equal "$2995000 / 5br - Downtown Boca New Home To Be Built", six.label
|
118
|
-
assert_equal "real
|
119
|
+
assert_equal "real estate - by broker", six.section
|
119
120
|
assert_equal "Boca Raton", six.location
|
120
121
|
assert_equal nil, six.post_date
|
121
122
|
assert_equal 2995000.0, six.price
|
@@ -133,7 +134,7 @@ EOD
|
|
133
134
|
assert_equal nil, seven.post_date
|
134
135
|
assert_equal 25.0, seven.price
|
135
136
|
end
|
136
|
-
|
137
|
+
|
137
138
|
|
138
139
|
def test_posting_parse
|
139
140
|
posting0 = CraigScrape::Posting.new relative_uri_for('post_samples/posting0.html')
|
@@ -144,40 +145,40 @@ EOD
|
|
144
145
|
assert_equal "tv cart on wheels", posting0.title
|
145
146
|
assert_equal "NMB", posting0.location
|
146
147
|
assert_equal 1131363612, posting0.posting_id
|
147
|
-
assert_equal "sale-ktf9w-1131363612@craigslist.org", posting0.reply_to
|
148
|
+
assert_equal "sale-ktf9w-1131363612@craigslist.org", posting0.reply_to
|
148
149
|
assert_equal [0, 21, 13, 20, 4, 2009, 1, 110, true, "EDT"], posting0.post_time.to_a
|
149
150
|
assert_equal [], posting0.pics
|
150
151
|
assert_equal "Has storage for videos/dvds. About 2 ft high by 21/2 ft widw. Almond/light beige color",posting0.contents_as_plain
|
151
152
|
assert_equal 35.0, posting0.price
|
152
153
|
assert_equal [], posting0.images
|
153
154
|
assert_equal [], posting0.img_types
|
154
|
-
|
155
|
+
|
155
156
|
posting1 = CraigScrape::Posting.new relative_uri_for('post_samples/posting1.html')
|
156
|
-
assert_equal "Residential income property\
|
157
|
+
assert_equal "Residential income property\u0097Investors this property is for you! This duplex has a 2bedroom/1bath unit on each side. It features updated kitchens and baths (new tubs, toilet, sink, vanities), ceramic tile flooring throughout, separate water and electric meters and on site laundry facilities. It is also closed to the Galleria, beaches and downtown Fort Lauderdale! \r<br>\n\r<br>\nJe parle le Français\r<br>\n\r<br>\nThis property is being offered by Blaunch Perrier, Broker Associate, Atlantic Properties International. Blaunch can be reached at 954-593-0077. For additional property information you may also visit www.garylanham.com\r<br>\n\r<br>", posting1.contents
|
157
158
|
assert_equal ["south florida craigslist", "broward county", "real estate - by broker"], posting1.full_section
|
158
159
|
assert_equal "$189900 / 4br - Investment Property--Duplex in Fort Lauderdale", posting1.header
|
159
160
|
assert_equal "$189900 / 4br - Investment Property--Duplex in Fort Lauderdale", posting1.label
|
160
161
|
assert_equal "Investment Property--Duplex in Fort Lauderdale", posting1.title
|
161
162
|
assert_equal '1000 NE 14th Pl', posting1.location
|
162
163
|
assert_equal 1131242195, posting1.posting_id
|
163
|
-
assert_equal "hous-5nzhq-1131242195@craigslist.org", posting1.reply_to
|
164
|
+
assert_equal "hous-5nzhq-1131242195@craigslist.org", posting1.reply_to
|
164
165
|
assert_equal [0, 33, 13, 20, 4, 2009, 1, 110, true, "EDT"], posting1.post_time.to_a
|
165
166
|
assert_equal %w(http://images.craigslist.org/3n83o33l5ZZZZZZZZZ94k913ac1582d4b1fa4.jpg http://images.craigslist.org/3n93p63obZZZZZZZZZ94k19d5e32eb3b610c2.jpg http://images.craigslist.org/3n93m03l6ZZZZZZZZZ94k6e9785e37a1b1f3f.jpg http://images.craigslist.org/3ma3oc3l4ZZZZZZZZZ94kbfecbcd2fb2e19cc.jpg), posting1.pics
|
166
|
-
assert_equal "Residential income property\
|
167
|
+
assert_equal "Residential income property\u0097Investors this property is for you! This duplex has a 2bedroom/1bath unit on each side. It features updated kitchens and baths (new tubs, toilet, sink, vanities), ceramic tile flooring throughout, separate water and electric meters and on site laundry facilities. It is also closed to the Galleria, beaches and downtown Fort Lauderdale! \r\n\r\nJe parle le Français\r\n\r\nThis property is being offered by Blaunch Perrier, Broker Associate, Atlantic Properties International. Blaunch can be reached at 954-593-0077. For additional property information you may also visit www.garylanham.com\r\n\r", posting1.contents_as_plain
|
167
168
|
assert_equal 189900.0, posting1.price
|
168
169
|
assert_equal [], posting1.images
|
169
170
|
assert_equal ["http://images.craigslist.org/3n83o33l5ZZZZZZZZZ94k913ac1582d4b1fa4.jpg", "http://images.craigslist.org/3n93p63obZZZZZZZZZ94k19d5e32eb3b610c2.jpg", "http://images.craigslist.org/3n93m03l6ZZZZZZZZZ94k6e9785e37a1b1f3f.jpg", "http://images.craigslist.org/3ma3oc3l4ZZZZZZZZZ94kbfecbcd2fb2e19cc.jpg"], posting1.pics
|
170
171
|
assert_equal [:pic], posting1.img_types
|
171
172
|
|
172
173
|
posting2 = CraigScrape::Posting.new relative_uri_for('post_samples/posting2.html')
|
173
|
-
assert_equal
|
174
|
+
assert_equal 15473, posting2.contents.length # This is easy, and probably fine enough
|
174
175
|
assert_equal ["south florida craigslist", "broward county", "cars & trucks - by dealer"], posting2.full_section
|
175
176
|
assert_equal "PRESENTING A ELECTRON BLUE METALLIC 2002 CHEVROLET CORVETTE Z06 6 SPEE - $23975 (Fort Lauderdale)", posting2.header
|
176
177
|
assert_equal "PRESENTING A ELECTRON BLUE METALLIC 2002 CHEVROLET CORVETTE Z06 6 SPEE - $23975", posting2.label
|
177
178
|
assert_equal "PRESENTING A ELECTRON BLUE METALLIC 2002 CHEVROLET CORVETTE Z06 6 SPEE", posting2.title
|
178
179
|
assert_equal 'Fort Lauderdale', posting2.location
|
179
180
|
assert_equal 1127037648, posting2.posting_id
|
180
|
-
assert_equal nil, posting2.reply_to
|
181
|
+
assert_equal nil, posting2.reply_to
|
181
182
|
assert_equal [0, 16, 14, 17, 4, 2009, 5, 107, true, "EDT"], posting2.post_time.to_a
|
182
183
|
assert_equal [], posting2.pics
|
183
184
|
assert_equal "\302\240 Sheehan Buick Pontiac GMC \302\240 Pompano Beach, FL(754) 224-3257 \302\240PRESENTING A ELECTRON BLUE METALLIC 2002 CHEVROLET CORVETTE Z06 6 SPEED FLORIDA DRIVEN SMOKIN' SPORTS CAR!2002 Chevrolet Corvette Z06 Florida Driven AutoCheck Certified 5.7L V8 6sp2 Door Coupe.\302\240Price: \302\240 $23,975Exterior:Electron Blue MetallicInterior:BlackStock#:P5110AVIN:1G1YY12S625129021FREE AutoCheck Vehicle ReportMileage:63,560Transmission:6 Speed ManualEngine:V8 5.7L OHVWarranty:Limited WarrantyTitle:Clear\302\273\302\240View All 58 Photos\302\273\302\240View Full Vehicle Details\302\273\302\240Ask the Seller a Question\302\273\302\240E-mail this to a Friend\302\240 DescriptionPRESENTING A ELECTRON BLUE METALLIC 2002 CHEVROLET CORVETTE Z06 6 SPEED FLORIDA DRIVEN SMOKIN' SPORTS CAR!\r\n\r\nLOADED WITH BLACK LEATHER BUCKET SEATS, POWER DRIVERS SEAT, DUAL ZONE CLIMATE CONTROL, 4 WHEEL ABS BRAKES, POWER STEERING AND BRAKES, REAR LIMITED SLIP DIFFERENTIAL, STABILITY CONTROL, CRUISE CONTROL, TLT STEERING WHEEL, POWER WINDOWS AND LOCKS, AUTOMATIC ON/OFF HEADLAMPS, FOG LIGHTS, DUAL AIR BAG SAFETY, AM/FM STEREO CD PLAYER, INTERMITTENT WINDSHIELD WIPERS AND SO MUCH MORE - THIS CAR IS TOTALLY HOT WITH GREAT LOW MILES!\r\n\r\nPlease call us to make your deal now at 1-888-453-5244. Please visit our Website at www.sheehanautoplex.com ***View 50+ Pictures of this vehicle - a complete description including standard features and all added options & a FREE AUTO CHECK REPORT at www.sheehanautoplex.com. ***Financing for Everyone - Good credit - bad credit - divorce - charge off's - NO PROBLEM. To complete a secure credit application, please visit our website at www.sheehanautoplex.com ***The largest Dealer in the State of Florida - We export all over the world - For details please visit www.sheehanautoplex.com ***Sheehan Autoplex takes great pride in our outstanding customer service and has been recognized by the following associations - BBB (Better Business Bureau) - NIADA - and the FIADA. Call us to get your best deal. CALL NOW. 1-888-453-5244\302\240 Contact Sheehan Buick Pontiac GMCPhone:(754) 224-3257Fax:(954) 781-9050Phone:(754) 224-3257E-mail:sales@proauto.comBusiness HoursWeekdays:9:00 AM to 9:00 PMSat:9:00 AM to 6:00 PMSun:",posting2.contents_as_plain
|
@@ -193,7 +194,7 @@ EOD
|
|
193
194
|
assert_equal "300ZX Nissan Twin Turbo 1992", posting3.title
|
194
195
|
assert_equal "N.Miami/ Hialeah", posting3.location
|
195
196
|
assert_equal 1130212403, posting3.posting_id
|
196
|
-
assert_equal "sale-c9bpa-1130212403@craigslist.org", posting3.reply_to
|
197
|
+
assert_equal "sale-c9bpa-1130212403@craigslist.org", posting3.reply_to
|
197
198
|
assert_equal [0, 21, 18, 19, 4, 2009, 0, 109, true, "EDT"], posting3.post_time.to_a
|
198
199
|
assert_equal %w(http://images.craigslist.org/3n23kf3lfZZZZZZZZZ94j1160e7d7b0601934.jpg http://images.craigslist.org/3nc3kf3p2ZZZZZZZZZ94j04fbc71e0a551ace.jpg http://images.craigslist.org/3nc3k33l7ZZZZZZZZZ94k13d8d7b1024e1e0e.jpg http://images.craigslist.org/3n23k63mfZZZZZZZZZ94k7838ae5d48d91eb8.jpg), posting3.pics
|
199
200
|
assert_equal "1992 Twin Turbo 300ZX. This car is pearl white outside and Camel leather interior with suede accents. Motor was re-done from the ground up two years ago. 23,000 on new motor rebuild! New Leather seats and center arm rest done also two years ago. Has Alpine Am/Fm Cd with Ipod cable, Viper pager alarm New! JL Audio Amp & JLAudio sub box custom made. Mtx mids& highs component speakers sparate tweeter. Car runs strong & straight. Just detailed the interior. Exterior should be painted. This car once painted will sell for over $10,000. \r\nCome get a great deal now! offers and trades will be considered. 786-303-6550 Manny",posting3.contents_as_plain
|
@@ -204,21 +205,21 @@ EOD
|
|
204
205
|
|
205
206
|
# This one ended up being quite a curveball since the user uploaded HTML was such junk:
|
206
207
|
posting4 = CraigScrape::Posting.new relative_uri_for('post_samples/posting4.html')
|
207
|
-
assert_equal
|
208
|
+
assert_equal 19337, posting4.contents.length
|
208
209
|
assert_equal ["south florida craigslist", "broward county", "real estate - by broker"], posting4.full_section
|
209
210
|
assert_equal "$225000 / 3br - Palm Aire Golf Corner Unit!", posting4.header
|
210
211
|
assert_equal "Palm Aire Golf Corner Unit!", posting4.title
|
211
212
|
assert_equal "$225000 / 3br - Palm Aire Golf Corner Unit!", posting4.label
|
212
213
|
assert_equal nil, posting4.location
|
213
214
|
assert_equal 1139303170, posting4.posting_id
|
214
|
-
assert_equal "hous-sk9f2-1139303170@craigslist.org", posting4.reply_to
|
215
|
+
assert_equal "hous-sk9f2-1139303170@craigslist.org", posting4.reply_to
|
215
216
|
assert_equal [0, 8, 9, 25, 4, 2009, 6, 115, true, "EDT"], posting4.post_time.to_a
|
216
217
|
assert_equal [], posting4.pics
|
217
|
-
assert_equal
|
218
|
+
assert_equal 6321,posting4.contents_as_plain.length
|
218
219
|
assert_equal 225000.0, posting4.price
|
219
220
|
assert_equal ["http://fortlauderdaleareahomesales.com/myfiles/5.jpg", "http://fortlauderdaleareahomesales.com/myfiles/4.jpg", "http://fortlauderdaleareahomesales.com/myfiles/7.jpg", "http://fortlauderdaleareahomesales.com/myfiles/10.jpg", "http://fortlauderdaleareahomesales.com/myfiles/1.jpg", "http://fortlauderdaleareahomesales.com/myfiles/2.jpg", "http://fortlauderdaleareahomesales.com/myfiles/3.jpg", "http://fortlauderdaleareahomesales.com/myfiles/8.jpg", "http://fortlauderdaleareahomesales.com/myfiles/9.jpg", "http://fortlauderdaleareahomesales.com/myfiles/11.jpg", "http://fortlauderdaleareahomesales.com/myfiles/14.jpg", "http://fortlauderdaleareahomesales.com/myfiles/6.jpg"], posting4.images
|
220
|
-
assert_equal [:img], posting4.img_types
|
221
|
-
|
221
|
+
assert_equal [:img], posting4.img_types
|
222
|
+
|
222
223
|
posting5 = CraigScrape::Posting.new relative_uri_for('post_samples/posting5.html')
|
223
224
|
assert_equal true, posting5.flagged_for_removal?
|
224
225
|
assert_equal nil, posting5.contents
|
@@ -228,14 +229,14 @@ EOD
|
|
228
229
|
assert_equal nil, posting5.label
|
229
230
|
assert_equal nil, posting5.location
|
230
231
|
assert_equal nil, posting5.posting_id
|
231
|
-
assert_equal nil, posting5.reply_to
|
232
|
+
assert_equal nil, posting5.reply_to
|
232
233
|
assert_equal nil, posting5.post_time
|
233
234
|
assert_equal [], posting5.pics
|
234
235
|
assert_equal nil, posting5.contents_as_plain
|
235
236
|
assert_equal nil, posting5.price
|
236
237
|
assert_equal [], posting5.images
|
237
238
|
assert_equal [], posting5.img_types
|
238
|
-
|
239
|
+
|
239
240
|
posting_deleted = CraigScrape::Posting.new relative_uri_for('post_samples/this_post_has_been_deleted_by_its_author.html')
|
240
241
|
assert_equal true, posting_deleted.deleted_by_author?
|
241
242
|
assert_equal nil, posting_deleted.contents
|
@@ -245,7 +246,7 @@ EOD
|
|
245
246
|
assert_equal nil, posting_deleted.title
|
246
247
|
assert_equal nil, posting_deleted.location
|
247
248
|
assert_equal nil, posting_deleted.posting_id
|
248
|
-
assert_equal nil, posting_deleted.reply_to
|
249
|
+
assert_equal nil, posting_deleted.reply_to
|
249
250
|
assert_equal nil, posting_deleted.post_time
|
250
251
|
assert_equal [], posting_deleted.pics
|
251
252
|
assert_equal nil, posting_deleted.contents_as_plain
|
@@ -267,11 +268,11 @@ EOD
|
|
267
268
|
assert_equal 1207457727,posting6.posting_id
|
268
269
|
assert_equal 1350.0,posting6.price
|
269
270
|
assert_equal "hous-ccpap-1207457727@craigslist.org",posting6.reply_to
|
270
|
-
assert_equal "2bth for no deposit req",posting6.title
|
271
|
+
assert_equal "2bth for no deposit req",posting6.title
|
271
272
|
assert_equal [], posting6.images
|
272
273
|
assert_equal ["http://images.craigslist.org/3k43pe3o8ZZZZZZZZZ9655022102a3ea51624.jpg", "http://images.craigslist.org/3n13m53p6ZZZZZZZZZ96596515e51237a179c.jpg", "http://images.craigslist.org/3od3p33leZZZZZZZZZ9656d614da8e3a51dd9.jpg", "http://images.craigslist.org/3pb3oa3leZZZZZZZZZ965eb60e4d2344019fb.jpg"], posting6.pics
|
273
274
|
assert_equal [:pic], posting6.img_types
|
274
|
-
|
275
|
+
|
275
276
|
brw_reb_1224008903 = CraigScrape::Posting.new relative_uri_for('post_samples/brw_reb_1224008903.html')
|
276
277
|
assert_equal "Nice 3 Bedroom/ 2 Bathroom/ Garage Home in Sunrise. 1,134 square feet of living area with a 6,000 square foot lot. Wood laminate flooring throughout the entire house. House has been updated. Stamped concrete driveway which leads to garage. Big back yard. Central AC. Washer/Dryer. Not a short sale or foreclosure. Asking $189,999. Call Charles Schneider (The Best Damn Real Estate Company Period!) at 954-478-4784.\r<br>\n\r<br>\nDirections: Take Pine Island Road north off of Sunrise Boulevard (past Sunset Strip) to N.W. 25th Court. Head west (left) on N.W. 25th Court to N.W. 91st Lane. Head north (right) on N.W. 91st Lane to N.W. 26th Street. Head east (right) on N.W. 26th Street to the property- 9163 N.W. 26th Street, Sunrise, FL 33322", brw_reb_1224008903.contents
|
277
278
|
assert_equal "Nice 3 Bedroom/ 2 Bathroom/ Garage Home in Sunrise. 1,134 square feet of living area with a 6,000 square foot lot. Wood laminate flooring throughout the entire house. House has been updated. Stamped concrete driveway which leads to garage. Big back yard. Central AC. Washer/Dryer. Not a short sale or foreclosure. Asking $189,999. Call Charles Schneider (The Best Damn Real Estate Company Period!) at 954-478-4784.\r\n\r\nDirections: Take Pine Island Road north off of Sunrise Boulevard (past Sunset Strip) to N.W. 25th Court. Head west (left) on N.W. 25th Court to N.W. 91st Lane. Head north (right) on N.W. 91st Lane to N.W. 26th Street. Head east (right) on N.W. 26th Street to the property- 9163 N.W. 26th Street, Sunrise, FL 33322", brw_reb_1224008903.contents_as_plain
|
@@ -292,10 +293,10 @@ EOD
|
|
292
293
|
assert_equal [], brw_reb_1224008903.images
|
293
294
|
assert_equal ["http://images.craigslist.org/3ma3o93laZZZZZZZZZ96g5ee7cc528f1818a8.jpg", "http://images.craigslist.org/3nf3m03oeZZZZZZZZZ96gb267b7db57d91f60.jpg", "http://images.craigslist.org/3m63oc3p1ZZZZZZZZZ96g521443416aea1cac.jpg", "http://images.craigslist.org/3nc3p53l5ZZZZZZZZZ96g8706fce2c0bb17e9.jpg"], brw_reb_1224008903.pics
|
294
295
|
assert_equal [:pic], brw_reb_1224008903.img_types
|
295
|
-
|
296
|
+
|
296
297
|
sfbay_art_1223614914 = CraigScrape::Posting.new relative_uri_for('post_samples/sfbay_art_1223614914.html')
|
297
|
-
assert_equal "Bombay Company Beautiful Art Postered Painting \r<br>\n\
|
298
|
-
assert_equal "Bombay Company Beautiful Art Postered Painting \r\n\
|
298
|
+
assert_equal "Bombay Company Beautiful Art Postered Painting \r<br>\n\u0095\tThe most beautiful piece of art you could have\r<br>\n\u0095\tMatches with any type of furnishing and decoration\r<br>\n\u0095\tA must see/Only one year old\r<br>\n\u0095\tRegular Price @ $1500.00\r<br>\n\u0095\tSale Price @ $650.00\r<br>", sfbay_art_1223614914.contents
|
299
|
+
assert_equal "Bombay Company Beautiful Art Postered Painting \r\n\u0095\tThe most beautiful piece of art you could have\r\n\u0095\tMatches with any type of furnishing and decoration\r\n\u0095\tA must see/Only one year old\r\n\u0095\tRegular Price @ $1500.00\r\n\u0095\tSale Price @ $650.00\r", sfbay_art_1223614914.contents_as_plain
|
299
300
|
assert_equal false, sfbay_art_1223614914.deleted_by_author?
|
300
301
|
assert_equal false, sfbay_art_1223614914.flagged_for_removal?
|
301
302
|
assert_equal ["SF bay area craigslist", "south bay", "art & crafts"], sfbay_art_1223614914.full_section
|
@@ -315,13 +316,13 @@ EOD
|
|
315
316
|
assert_equal ["http://images.craigslist.org/3kf3o93laZZZZZZZZZ96fbc594a6ceb1f1025.jpg"], sfbay_art_1223614914.pics
|
316
317
|
assert_equal [:pic], sfbay_art_1223614914.img_types
|
317
318
|
end
|
318
|
-
|
319
|
-
# This was actually a 'bug' with hpricot itself when the ulimit is set too low.
|
319
|
+
|
320
|
+
# This was actually a 'bug' with hpricot itself when the ulimit is set too low.
|
320
321
|
# the Easy fix is running "ulimit -s 16384" before the tests. But the better fix was
|
321
322
|
# to remove the userbody sending these pages to be parsed by Hpricot
|
322
323
|
def test_bugs_found061710
|
323
324
|
posting_061710 = CraigScrape::Posting.new relative_uri_for('post_samples/posting1796890756-061710.html')
|
324
|
-
|
325
|
+
|
325
326
|
assert_equal false, posting_061710.deleted_by_author?
|
326
327
|
assert_equal true, posting_061710.downloaded?
|
327
328
|
assert_equal false, posting_061710.flagged_for_removal?
|
@@ -345,7 +346,7 @@ EOD
|
|
345
346
|
assert_equal "general for sale", posting_061710.section
|
346
347
|
assert_equal false, posting_061710.system_post?
|
347
348
|
assert_equal "*****SOFTWARE****", posting_061710.title
|
348
|
-
|
349
|
+
|
349
350
|
posting1808219423 = CraigScrape::Posting.new relative_uri_for('post_samples/posting1808219423.html')
|
350
351
|
assert_equal false, posting1808219423.deleted_by_author?
|
351
352
|
assert_equal true, posting1808219423.downloaded?
|
@@ -371,11 +372,11 @@ EOD
|
|
371
372
|
assert_equal false, posting1808219423.system_post?
|
372
373
|
assert_equal "*Software*AdobeCS5*RosettaStone*AutoCAD*Windows7*Office2010*&* More", posting1808219423.title
|
373
374
|
end
|
374
|
-
|
375
|
+
|
375
376
|
def test_bug_found090610
|
376
377
|
posting_090610 = CraigScrape::Posting.new relative_uri_for('post_samples/posting1938291834-090610.html')
|
377
378
|
|
378
|
-
assert_equal
|
379
|
+
assert_equal 27628, posting_090610.contents.length
|
379
380
|
assert_equal 2326, posting_090610.contents_as_plain.length
|
380
381
|
assert_equal false, posting_090610.deleted_by_author?
|
381
382
|
assert_equal true, posting_090610.downloaded?
|
@@ -405,7 +406,7 @@ EOD
|
|
405
406
|
def test_expired_post
|
406
407
|
posting_expired = CraigScrape::Posting.new relative_uri_for('post_samples/this_post_has_expired.html')
|
407
408
|
assert_equal true, posting_expired.posting_has_expired?
|
408
|
-
assert_equal true, posting_expired.system_post?
|
409
|
+
assert_equal true, posting_expired.system_post?
|
409
410
|
assert_equal nil, posting_expired.contents
|
410
411
|
assert_equal ["charleston craigslist", "for sale / wanted", "cars & trucks - by owner" ], posting_expired.full_section
|
411
412
|
assert_equal "This posting has expired.", posting_expired.header
|
@@ -413,14 +414,14 @@ EOD
|
|
413
414
|
assert_equal nil, posting_expired.title
|
414
415
|
assert_equal nil, posting_expired.location
|
415
416
|
assert_equal nil, posting_expired.posting_id
|
416
|
-
assert_equal nil, posting_expired.reply_to
|
417
|
+
assert_equal nil, posting_expired.reply_to
|
417
418
|
assert_equal nil, posting_expired.post_time
|
418
419
|
assert_equal [], posting_expired.pics
|
419
420
|
assert_equal nil, posting_expired.contents_as_plain
|
420
421
|
assert_equal nil, posting_expired.price
|
421
422
|
assert_equal [], posting_expired.images
|
422
423
|
assert_equal [], posting_expired.img_types
|
423
|
-
|
424
|
+
|
424
425
|
end
|
425
426
|
|
426
427
|
end
|
metadata
CHANGED
@@ -1,109 +1,29 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: olek-libcraigscrape
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
|
-
authors:
|
7
|
+
authors:
|
7
8
|
- Chris DeRose, DeRose Technologies, Inc.
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: nokogiri
|
17
|
-
type: :runtime
|
18
|
-
version_requirement:
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">="
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 1.4.4
|
24
|
-
version:
|
25
|
-
- !ruby/object:Gem::Dependency
|
26
|
-
name: htmlentities
|
27
|
-
type: :runtime
|
28
|
-
version_requirement:
|
29
|
-
version_requirements: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - ">="
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 4.0.0
|
34
|
-
version:
|
35
|
-
- !ruby/object:Gem::Dependency
|
36
|
-
name: activesupport
|
37
|
-
type: :runtime
|
38
|
-
version_requirement:
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: 2.3.0
|
44
|
-
- - <
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: "3"
|
47
|
-
version:
|
48
|
-
- !ruby/object:Gem::Dependency
|
49
|
-
name: activerecord
|
50
|
-
type: :runtime
|
51
|
-
version_requirement:
|
52
|
-
version_requirements: !ruby/object:Gem::Requirement
|
53
|
-
requirements:
|
54
|
-
- - ">="
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: 2.3.0
|
57
|
-
- - <
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: "3"
|
60
|
-
version:
|
61
|
-
- !ruby/object:Gem::Dependency
|
62
|
-
name: actionmailer
|
63
|
-
type: :runtime
|
64
|
-
version_requirement:
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: 2.3.0
|
70
|
-
- - <
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: "3"
|
73
|
-
version:
|
74
|
-
- !ruby/object:Gem::Dependency
|
75
|
-
name: kwalify
|
76
|
-
type: :runtime
|
77
|
-
version_requirement:
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 0.7.2
|
83
|
-
version:
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: sqlite3
|
86
|
-
type: :runtime
|
87
|
-
version_requirement:
|
88
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
requirements:
|
90
|
-
- - ">="
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
version: "0"
|
93
|
-
version:
|
94
|
-
description: quick, easy, craigslist parsing library that takes the monotony out of working with craigslist posts and listings
|
12
|
+
date: 2012-12-18 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: quick, easy, craigslist parsing library that takes the monotony out of
|
15
|
+
working with craigslist posts and listings
|
95
16
|
email: cderose@derosetechnologies.com
|
96
|
-
executables:
|
17
|
+
executables:
|
97
18
|
- craigwatch
|
98
19
|
extensions: []
|
99
|
-
|
100
|
-
extra_rdoc_files:
|
20
|
+
extra_rdoc_files:
|
101
21
|
- README
|
102
22
|
- CHANGELOG
|
103
23
|
- COPYING
|
104
24
|
- COPYING.LESSER
|
105
25
|
- bin/craigwatch
|
106
|
-
files:
|
26
|
+
files:
|
107
27
|
- lib/libcraigscrape.rb
|
108
28
|
- test/post_samples/1207457727.html
|
109
29
|
- CHANGELOG
|
@@ -111,8 +31,8 @@ files:
|
|
111
31
|
- COPYING.LESSER
|
112
32
|
- bin/craigwatch
|
113
33
|
- bin/craig_report_schema.yml
|
114
|
-
- bin/report_mailer/
|
115
|
-
- bin/report_mailer/
|
34
|
+
- bin/report_mailer/report.html.erb
|
35
|
+
- bin/report_mailer/report.text.erb
|
116
36
|
- test/geolisting_samples/geo_listing_ca070209.html
|
117
37
|
- test/geolisting_samples/geo_listing_ca_sk070209.html
|
118
38
|
- test/geolisting_samples/geo_listing_cn070209.html
|
@@ -173,40 +93,44 @@ files:
|
|
173
93
|
- lib/listings.rb
|
174
94
|
- lib/posting.rb
|
175
95
|
- lib/scraper.rb
|
176
|
-
has_rdoc: true
|
177
96
|
homepage: http://www.derosetechnologies.com/community/libcraigscrape
|
178
97
|
licenses: []
|
179
|
-
|
180
98
|
post_install_message:
|
181
|
-
rdoc_options:
|
99
|
+
rdoc_options:
|
182
100
|
- --quiet
|
183
101
|
- --title
|
184
102
|
- The libcraigscrape Reference
|
185
103
|
- --main
|
186
104
|
- README
|
187
105
|
- --inline-source
|
188
|
-
require_paths:
|
106
|
+
require_paths:
|
189
107
|
- lib
|
190
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ! '>='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
segments:
|
115
|
+
- 0
|
116
|
+
hash: -1981985228483291129
|
117
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
|
+
none: false
|
119
|
+
requirements:
|
120
|
+
- - ! '>='
|
121
|
+
- !ruby/object:Gem::Version
|
122
|
+
version: '0'
|
123
|
+
segments:
|
124
|
+
- 0
|
125
|
+
hash: -1981985228483291129
|
202
126
|
requirements: []
|
203
|
-
|
204
127
|
rubyforge_project: libcraigwatch
|
205
|
-
rubygems_version: 1.
|
128
|
+
rubygems_version: 1.8.23
|
206
129
|
signing_key:
|
207
130
|
specification_version: 3
|
208
|
-
summary: quick, easy, craigslist parsing library that takes the monotony out of working
|
209
|
-
|
131
|
+
summary: quick, easy, craigslist parsing library that takes the monotony out of working
|
132
|
+
with craigslist posts and listings
|
133
|
+
test_files:
|
210
134
|
- test/test_craigslist_geolisting.rb
|
211
135
|
- test/test_craigslist_listing.rb
|
212
136
|
- test/test_craigslist_posting.rb
|