kindle_manager 0.1.0 → 0.1.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cb02e5a3a67d8232fbff330bdc508c7b2a841e09
4
- data.tar.gz: 2641e09f54bb46cf8ca1dfe3b70950ce213ab43c
3
+ metadata.gz: 065a28c7130f475f85b34e66fa86d22169a91ac5
4
+ data.tar.gz: e525336b3c853df970cff3e00e840fb3bc3a5111
5
5
  SHA512:
6
- metadata.gz: c695ef3285f6d530a8ad13ba16bf75105f782736bb0eccd05cdf97171789474caa51c385da23a16a6bce9d21f5764975d8f7bb5ef682ca7d9f2f12cdf9964b10
7
- data.tar.gz: f80af23783b9af78e220cfb16aa42a6340d86ed9c667db43831aa1ac41de1c5869d73c46f23df80b38debc02c1b7d232952f558fd04932c2bc60facd348017a0
6
+ metadata.gz: 4c922354219deb9a6ff7840d94c1a1891d0f5507c735e6a7135c22975ef87c4657297668619d21db3d813eb6c16c51bf5f3e125dc5d1f381e11bbb96976372f3
7
+ data.tar.gz: 2646eeb5c522ca77fd0c1ebb1c4ab815150c9f71fb622a0097e392cae609dc3990a629d798e500b797980b6dc19f1e35d32cbdfbfcfc32bb05fb08874b692b8c
data/.travis.yml CHANGED
@@ -2,4 +2,6 @@ sudo: false
2
2
  language: ruby
3
3
  rvm:
4
4
  - 2.2.4
5
+ - 2.2.6
6
+ - 2.3.3
5
7
  before_install: gem install bundler -v 1.14.6
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # KindleManager
2
2
 
3
+ [![Build Status](https://travis-ci.org/kyamaguchi/kindle_manager.svg?branch=master)](https://travis-ci.org/kyamaguchi/kindle_manager)
4
+
3
5
  Scrape information of kindle books from amazon site
4
6
 
5
7
  ## Installation
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
- spec.add_runtime_dependency "amazon_auth", "~> 0.1.2"
24
+ spec.add_runtime_dependency "amazon_auth", "~> 0.1.3"
25
25
  spec.add_development_dependency "bundler", "~> 1.14"
26
26
  spec.add_development_dependency "rake", "~> 10.0"
27
27
  spec.add_development_dependency "rspec", "~> 3.0"
@@ -1,6 +1,6 @@
1
1
  module KindleManager
2
2
  class Client
3
- attr_accessor :page
3
+ attr_accessor :session
4
4
 
5
5
  def initialize(options = {})
6
6
  @debug = options.fetch(:debug, false)
@@ -14,13 +14,17 @@ module KindleManager
14
14
  end
15
15
  end
16
16
 
17
+ def session
18
+ @session ||= @client.session
19
+ end
20
+
17
21
  def store
18
- # Create file store without session(page) by default
22
+ # Create file store without session(session) by default
19
23
  @store ||= KindleManager::FileStore.new(nil, latest: true)
20
24
  end
21
25
 
22
26
  def setup_file_store_with_session
23
- @store = KindleManager::FileStore.new(page)
27
+ @store = KindleManager::FileStore.new(session)
24
28
  end
25
29
 
26
30
  def fetch_kindle_list
@@ -46,15 +50,12 @@ module KindleManager
46
50
  end
47
51
 
48
52
  def sign_in
49
- @page = @client.sign_in
53
+ @client.sign_in
50
54
  end
51
55
 
52
56
  def go_to_kindle_management_page
53
- wait_for_selector('#shopAllLinks')
54
- page.within('#shopAllLinks') do
55
- page.find('a', text: 'コンテンツと端末の管理').click
56
- end
57
- page
57
+ wait_for_selector('#shopAllLinks', 5)
58
+ session.all('a').find{|e| e['href'] =~ %r{/gp/digital/fiona/manage/} }.click
58
59
  end
59
60
 
60
61
  def load_next_kindle_list
@@ -67,48 +68,56 @@ module KindleManager
67
68
  debug_print_page
68
69
  @current_loop = 0
69
70
 
70
- puts "Clicking もっと表示"
71
- page.execute_script "window.scrollBy(0,-800)"
72
- page.click_on('もっと表示')
71
+ puts "Clicking 'Show More'"
72
+ session.execute_script "window.scrollBy(0,-800)"
73
+ show_more_button.click
73
74
  sleep 1
74
75
  raise('Clicking of more button may have failed') if has_more_button?
75
76
  else
76
77
  puts "Scrolling #{@current_loop}"
77
- page.execute_script "window.scrollBy(0,10000)"
78
+ session.execute_script "window.scrollBy(0,10000)"
78
79
  end
79
80
  sleep 5
80
81
  @current_loop += 1
81
82
  end
82
- debug_print_page
83
+ snapshot_page
83
84
  end
84
85
 
85
86
  def quit
86
- page.driver.quit
87
+ session.driver.quit
87
88
  end
88
89
 
89
90
  def wait_for_selector(selector, seconds = 3)
90
- seconds.times { sleep(1) unless page.first(selector) }
91
+ seconds.times { sleep(1) unless session.first(selector) }
91
92
  end
92
93
 
93
94
  def has_more_button?
94
- page.all('#contentTable_showMore_myx').map(&:text).include?('もっと表示')
95
+ !!show_more_button
96
+ end
97
+
98
+ def show_more_button
99
+ session.all('#contentTable_showMore_myx').find{|e| e['outerHTML'].match(/showmore_button/) }
95
100
  end
96
101
 
97
102
  def number_of_fetched_books
98
- m = page.first('.contentCount_myx').text.match(/(\d+)を表示中/)
99
- m.nil? ? nil : m[1].to_i
103
+ m = session.first('.contentCount_myx').text.match(/(\d+) - (\d+)/)
104
+ m.nil? ? nil : m[2].to_i
100
105
  end
101
106
 
102
107
  def loading?
103
- page.first('.myx-popover-loading-wrapper').present?
108
+ session.first('.myx-popover-loading-wrapper').present?
109
+ end
110
+
111
+ def snapshot_page
112
+ store.record_page
113
+ debug_print_page
104
114
  end
105
115
 
106
116
  def debug_print_page
107
117
  if @debug
108
- store.record_page
109
118
  puts Time.current.strftime("%Y-%m-%d %H:%M:%S")
110
119
  puts "Loop: #{@current_loop}"
111
- puts page.first('.contentCount_myx').text if page.first('.contentCount_myx')
120
+ puts session.first('.contentCount_myx').text if session.first('.contentCount_myx')
112
121
  puts
113
122
  end
114
123
  end
@@ -27,8 +27,14 @@ module KindleManager
27
27
 
28
28
  def date
29
29
  @_date ||= begin
30
- m = @node.css("div[id^='date']").text.match(/\A(?<year>\d{4})年(?<month>\d{1,2})月(?<day>\d{1,2})日\z/)
31
- Date.new(m[:year].to_i, m[:month].to_i, m[:day].to_i)
30
+ date_text = @node.css("div[id^='date']").text
31
+ begin
32
+ Date.parse(date_text)
33
+ rescue ArgumentError => e
34
+ byebug
35
+ m = date_text.match(/\A(?<year>\d{4})年(?<month>\d{1,2})月(?<day>\d{1,2})日\z/)
36
+ Date.new(m[:year].to_i, m[:month].to_i, m[:day].to_i)
37
+ end
32
38
  end
33
39
  end
34
40
 
@@ -1,3 +1,3 @@
1
1
  module KindleManager
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kindle_manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kazuho Yamaguchi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-03-15 00:00:00.000000000 Z
11
+ date: 2017-04-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: amazon_auth
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.2
19
+ version: 0.1.3
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.2
26
+ version: 0.1.3
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement