kindle_manager 0.1.0 → 0.1.1

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
  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