amazon_wish_miner 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 669b8e1488ff8f0c2aa4317ee5ec5f1182f89555a4b5a8bcb94394791602f257
4
- data.tar.gz: 1a0c6949da63815b30c5064de5bae8a8d49b5de45fc803f964b8aabfce6be4ec
3
+ metadata.gz: dc34b062b775ba5a0affb2f153989b2782cd1e29eca738841e15e983bfbb2eff
4
+ data.tar.gz: 14a27724f668364aef570293e1696525d7b21345b199c79d945652f0db875641
5
5
  SHA512:
6
- metadata.gz: af9d9b075d042508dab1bde631c36ee48678b0e1caff98541d3fe6302e70260d43bc54e5c590a9a44990bb2d4c97162ee9105a54cee0d44df1af06385fd76766
7
- data.tar.gz: 663051c3b889cc1d55b99f97b07fb0ba9b3b4d6b645d74e30ae71f27f84dca765c1e1633af79029f134d08ffca481d01c47ef35c807f216070987642bfddc5dc
6
+ metadata.gz: e5d3e0a88285addb352a5d680c24231374a0013e8d7b3c12a7d9947f7f147f6c62e2a6d940ff1915b9d7a748e7531607be83cea054f9d98eaaf4a16fa1cd30ba
7
+ data.tar.gz: fa0ee25c7102b4016bfca9c08beaf4407f866bf0759c014ccf7bd9c8db6ff9a62a6befb752bd1a37d9fe35bc15682b73137a2d0fc771dc7f96a389a9a45db3bf
@@ -2,6 +2,10 @@ class AmazonWish
2
2
 
3
3
  attr_reader :title, :id
4
4
 
5
+ TITLE_TRIMMER = Proc.new do |char|
6
+ char == "\n" || char == ' '
7
+ end
8
+
5
9
  def initialize(id, title)
6
10
  @title = title
7
11
  @id = id
@@ -10,7 +14,7 @@ class AmazonWish
10
14
  def self.parse_wishes_from_pages(page_responses)
11
15
  list_items = self.list_items_from_response(page_responses)
12
16
  wish_ids = self.draps_from_list_items(list_items)
13
- # wishes_from_ids(wish_ids)
17
+ wishes_from_ids(wish_ids)
14
18
  end
15
19
 
16
20
  def self.list_items_from_response(page_responses)
@@ -51,7 +55,9 @@ class AmazonWish
51
55
  item_url = 'https://www.amazon.com/dp/' + id
52
56
  response = RestClient.get(item_url)
53
57
  page = Nokogiri::HTML(response)
54
- title = page.css('span[id$="roductTitle"]') # not a typo, css selectors are
58
+ title_text = page.css('span[id$="roductTitle"]').children.text
59
+ title = trim_title(title_text)
60
+ # not a typo, css selectors are
55
61
  #=> case sensetive, and we need to capture e.g. both "productTitle" and "ebookProductTitle"
56
62
  # price = page.css('priceblock_ourprice')
57
63
  # TODO: parse prices
@@ -64,4 +70,9 @@ class AmazonWish
64
70
  bullets = feature_bullets_div.css('ul li')
65
71
  end
66
72
 
73
+ def self.trim_title(untrimmed_title)
74
+ chars = untrimmed_title.chars
75
+ chars.drop_while(&TITLE_TRIMMER).reverse.drop_while(&TITLE_TRIMMER).reverse.join
76
+ end
77
+
67
78
  end
@@ -1,11 +1,15 @@
1
1
  class AmazonWishList
2
2
 
3
+ attr_accessor :id, :wishes
4
+
3
5
  REVEAL_OPTIONS = [:all, :purchased, :unpurchased].freeze
4
6
  SORT_OPTIONS = {date_added: "date-added", title: 'universal-title',
5
7
  price_high: 'universal-price-desc', price_low: 'universal-price',
6
8
  date_updated: 'last-updated', priority: 'priority'}.freeze
7
9
 
8
- def initialize
10
+ def initialize(id, wishes)
11
+ @id = id
12
+ @wishes = wishes
9
13
  end
10
14
 
11
15
  # TODO: https://www.amazon.com/hz/wishlist/ls/2WHUDN1UIDVUT/ref=cm_sw_r_cp_ep_ws_8xNVBb731TTMS,
@@ -23,6 +27,8 @@ class AmazonWishList
23
27
  url_without_qstring = "http://www.amazon.#{tld}/hz/wishlist/ls/#{amazon_list_id}"
24
28
 
25
29
  pages = self.get_all_wishlist_pages(url_without_qstring, query_params)
30
+ wishes = AmazonWish.parse_wishes_from_pages(pages)
31
+ AmazonWishList.new(amazon_list_id, wishes)
26
32
  end
27
33
 
28
34
  def self.get_all_wishlist_pages(url_without_qstring, query_params)
@@ -66,8 +72,8 @@ class AmazonWishList
66
72
  begin
67
73
  response = RestClient::Request.execute(method: :get, url: url, max_redirects: 0)
68
74
  rescue RestClient::ExceptionWithResponse => err
69
- if response.code / 100 == 3
70
- url = err.http_headers[:location]
75
+ if err.response.code / 100 == 3
76
+ url = err.response.headers[:location]
71
77
  retry
72
78
  else
73
79
  raise err
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: amazon_wish_miner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander V. Trujillo