fletcher 0.5.1 → 0.5.2
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/README.md +24 -23
- data/VERSION +1 -1
- data/fletcher.gemspec +1 -1
- data/lib/fletcher/models/ebay.rb +1 -1
- data/lib/fletcher/models/gamecouk.rb +1 -1
- data/lib/fletcher/models/thinkgeek.rb +1 -1
- data/spec/lib/fletcher/models/thinkgeek_spec.rb +2 -0
- metadata +2 -2
data/README.md
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
# Fletcher
|
2
|
+
|
2
3
|
[](http://travis-ci.org/hulihanapplications/fletcher)
|
3
4
|
|
4
|
-
|
5
|
-
|
6
|
-
Fletcher is a cross-website product/model information fetcher. Give fletcher a product url and you'll get back a nice, simple object that's easy to work with.
|
5
|
+
Fletcher is a cross-website product information fetcher. Just give fletcher a product's url and you'll get back a nice, uniform object that's easy to work with.
|
7
6
|
|
8
7
|
## Features
|
9
8
|
|
9
|
+
* No third-party API access required (good for websites that don't even have API access)
|
10
10
|
* Uses nokogiri for data parsing
|
11
|
-
* No third-party API Access Required (Good for websites that don't even have API access)
|
12
11
|
|
13
12
|
## Supported Websites
|
14
13
|
|
@@ -18,8 +17,8 @@ Fletcher is a cross-website product/model information fetcher. Give fletcher a p
|
|
18
17
|
* [game.co.uk](http://www.game.co.uk)
|
19
18
|
* [Google Shopping](http://www.google.com/products/)
|
20
19
|
* [play.com](http://www.play.com)
|
21
|
-
* [ThinkGeek](http://www.thinkgeek.com)
|
22
20
|
* [Steam](http://store.steampowered.com)
|
21
|
+
* [ThinkGeek](http://www.thinkgeek.com)
|
23
22
|
|
24
23
|
## Installation
|
25
24
|
|
@@ -29,26 +28,28 @@ gem install fletcher
|
|
29
28
|
|
30
29
|
## Usage
|
31
30
|
|
31
|
+
### API
|
32
|
+
|
32
33
|
```ruby
|
33
34
|
require "fletcher"
|
34
35
|
|
35
|
-
|
36
|
+
product = Fletcher.fetch "http://www.amazon.com/Avenir-Deluxe-Unicycle-20-Inch-Wheel/dp/B00165Q9F8"
|
36
37
|
|
37
|
-
|
38
|
+
product.name # => "Avenir Deluxe Unicycle (20-Inch Wheel)"
|
38
39
|
|
39
|
-
|
40
|
+
product.description # => "A wonderful unicycle"
|
40
41
|
|
41
|
-
|
42
|
-
|
43
|
-
|
42
|
+
product.images.count # => 1
|
43
|
+
product.image # => {:src => "http://ecx.images-amazon.com/images/I/41b3TNb3uCL._SL500_AA300_.jpg", :alt => "Picture of Unicycle"}
|
44
|
+
product.image.src # => "http://ecx.images-amazon.com/images/I/41b3TNb3uCL._SL500_AA300_.jpg"
|
44
45
|
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
46
|
+
product.price # => #<Money cents:500 currency:USD>
|
47
|
+
product.price.to_f # => 5.0
|
48
|
+
product.price.format # => "$5.00"
|
49
|
+
product.price.currency.symbol # => "$"
|
49
50
|
|
50
51
|
# Get Raw Nokogiri Document
|
51
|
-
|
52
|
+
product.doc.class.name # => Nokogiri::HTML::Document
|
52
53
|
|
53
54
|
# Get list of supported websites/services
|
54
55
|
Fletcher.models # => [:amazon, :ebay, :etsy, :thinkgeek, ...]
|
@@ -56,11 +57,11 @@ Fletcher.models # => [:amazon, :ebay, :etsy, :thinkgeek, ...]
|
|
56
57
|
|
57
58
|
## Attributes
|
58
59
|
|
59
|
-
The following attributes are available
|
60
|
-
|
61
|
-
* title - (String) The name of the model/product
|
62
|
-
* description - (String) The model/product description
|
63
|
-
* price - (Money) A [Money](https://github.com/RubyMoney/money) object representing the model price. This makes exchange rates and math functionality easy to use.
|
64
|
-
* image - (Hash) The main image of the model
|
65
|
-
* images - (Array) Any available images of the model
|
60
|
+
The following attributes/method are available for a product:
|
66
61
|
|
62
|
+
* `name` - (String) The name of the product
|
63
|
+
* `description` - (String) The product's description
|
64
|
+
* `price` - (Money) A [Money](https://github.com/RubyMoney/money) object representing the product's price. This makes converting exchange rates and math functionality easy to use.
|
65
|
+
* `image` - (Hash) The main image of the product, if available. This is a hash containing standard HTML attributes: `src`, `alt`, `width`, `height`, etc.
|
66
|
+
* `images` - (Array) An array of product images.
|
67
|
+
* `doc` - The raw `Nokogiri::HTML::Document` object for the product. You can use this to pull other stuff from the product's page.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.2
|
data/fletcher.gemspec
CHANGED
data/lib/fletcher/models/ebay.rb
CHANGED
@@ -23,7 +23,7 @@ module Fletcher
|
|
23
23
|
parse_price(raw_price.gsub(/US/, "")) if raw_price
|
24
24
|
|
25
25
|
# Get Image
|
26
|
-
self.images = [{:
|
26
|
+
self.images = [{:src => doc.xpath("//span[@itemprop='image']/img").first_string}]
|
27
27
|
self.image = images.first
|
28
28
|
end
|
29
29
|
end
|
@@ -31,7 +31,7 @@ module Fletcher
|
|
31
31
|
parse_price(raw_price.gsub(/Only /, "")) if raw_price
|
32
32
|
|
33
33
|
# Get Image
|
34
|
-
self.images = [{:
|
34
|
+
self.images = [{:src => doc.xpath("//meta[@property='og:image']/@content").first_string}]
|
35
35
|
self.image = images.first
|
36
36
|
end
|
37
37
|
end
|
@@ -22,7 +22,7 @@ module Fletcher
|
|
22
22
|
parse_price(doc.xpath("//form[@id='buy']/h3").first_string) rescue nil
|
23
23
|
|
24
24
|
# Get Images
|
25
|
-
self.images = [{:
|
25
|
+
self.images = [{:src => doc.xpath("//meta[@property='og:image']/@content").first_string}]
|
26
26
|
self.image = images.first
|
27
27
|
end
|
28
28
|
end
|
@@ -11,6 +11,7 @@ describe Fletcher, :vcr do
|
|
11
11
|
it "should fetch a thinkgeek product's information" do
|
12
12
|
item = Fletcher.fetch(Factory(:thinkgeek).url)
|
13
13
|
item.should_not be_nil
|
14
|
+
item.image.should_not be_nil
|
14
15
|
item.name.should_not be_nil
|
15
16
|
item.description.should_not be_nil
|
16
17
|
end
|
@@ -18,6 +19,7 @@ describe Fletcher, :vcr do
|
|
18
19
|
it "should fetch a thinkgeek product with price range" do
|
19
20
|
item = Fletcher.fetch(Factory(:thinkgeek_with_price_range).url)
|
20
21
|
item.should_not be_nil
|
22
|
+
item.image.should_not be_nil
|
21
23
|
item.name.should_not be_nil
|
22
24
|
item.description.should_not be_nil
|
23
25
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fletcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -270,7 +270,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
270
270
|
version: '0'
|
271
271
|
segments:
|
272
272
|
- 0
|
273
|
-
hash:
|
273
|
+
hash: 1020600340918133872
|
274
274
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
275
275
|
none: false
|
276
276
|
requirements:
|