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 +4 -4
- data/.travis.yml +2 -0
- data/README.md +2 -0
- data/kindle_manager.gemspec +1 -1
- data/lib/kindle_manager/client.rb +31 -22
- data/lib/kindle_manager/list_parser.rb +8 -2
- data/lib/kindle_manager/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 065a28c7130f475f85b34e66fa86d22169a91ac5
|
4
|
+
data.tar.gz: e525336b3c853df970cff3e00e840fb3bc3a5111
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4c922354219deb9a6ff7840d94c1a1891d0f5507c735e6a7135c22975ef87c4657297668619d21db3d813eb6c16c51bf5f3e125dc5d1f381e11bbb96976372f3
|
7
|
+
data.tar.gz: 2646eeb5c522ca77fd0c1ebb1c4ab815150c9f71fb622a0097e392cae609dc3990a629d798e500b797980b6dc19f1e35d32cbdfbfcfc32bb05fb08874b692b8c
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
data/kindle_manager.gemspec
CHANGED
@@ -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.
|
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 :
|
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(
|
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(
|
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
|
-
@
|
53
|
+
@client.sign_in
|
50
54
|
end
|
51
55
|
|
52
56
|
def go_to_kindle_management_page
|
53
|
-
wait_for_selector('#shopAllLinks')
|
54
|
-
|
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
|
-
|
72
|
-
|
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
|
-
|
78
|
+
session.execute_script "window.scrollBy(0,10000)"
|
78
79
|
end
|
79
80
|
sleep 5
|
80
81
|
@current_loop += 1
|
81
82
|
end
|
82
|
-
|
83
|
+
snapshot_page
|
83
84
|
end
|
84
85
|
|
85
86
|
def quit
|
86
|
-
|
87
|
+
session.driver.quit
|
87
88
|
end
|
88
89
|
|
89
90
|
def wait_for_selector(selector, seconds = 3)
|
90
|
-
seconds.times { sleep(1) unless
|
91
|
+
seconds.times { sleep(1) unless session.first(selector) }
|
91
92
|
end
|
92
93
|
|
93
94
|
def has_more_button?
|
94
|
-
|
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 =
|
99
|
-
m.nil? ? nil : m[
|
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
|
-
|
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
|
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
|
-
|
31
|
-
|
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
|
|
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.
|
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
|
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.
|
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.
|
26
|
+
version: 0.1.3
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|