kindle_manager 0.5.0 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.travis.yml +4 -4
- data/README.md +5 -0
- data/kindle_manager.gemspec +2 -2
- data/lib/kindle_manager/adapters/books_adapter.rb +5 -6
- data/lib/kindle_manager/parsers/common.rb +2 -1
- data/lib/kindle_manager/parsers/highlights_parser.rb +14 -9
- data/lib/kindle_manager/version.rb +1 -1
- metadata +9 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 94b27bae732e8c8a50d463380a7fbcc499ad5ea46f810bed185ed469f3ae0c8b
|
4
|
+
data.tar.gz: 8f902074660f6774d95a32e37afafa96e06cbfedfc7cc9ee20b215f3f83364e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d759c1c3b06ec52cb47dfc5ebbdfbe29693899758b55b66853c0a6d088edf5c2e53e0a383d7939d6021f64b009c05d03bc3b4d9501753579194bd190dddc0fe0
|
7
|
+
data.tar.gz: c4bf70715590d1e9c7840e9736a1bfcca77369ed0370af5afa1f31dee2a32b423769f39fd52db71c8a14e915eea78bd2c7d89e122c4b7875587c51540448bb3e
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -142,6 +142,11 @@ Login and password: `login: 'xxx', password: 'yyy'`
|
|
142
142
|
|
143
143
|
Output debug log: `debug: true`
|
144
144
|
|
145
|
+
## Issues
|
146
|
+
|
147
|
+
There may be problems with capybara 3.
|
148
|
+
Use older version with `gem 'capybara', '~> 2.18.0'` in that case.
|
149
|
+
|
145
150
|
## TODO
|
146
151
|
|
147
152
|
- Limit the number of fetching books by date
|
data/kindle_manager.gemspec
CHANGED
@@ -22,8 +22,8 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
24
|
spec.add_runtime_dependency "amazon_auth", "~> 0.4.0"
|
25
|
-
spec.add_development_dependency "bundler"
|
26
|
-
spec.add_development_dependency "rake", "~>
|
25
|
+
spec.add_development_dependency "bundler"
|
26
|
+
spec.add_development_dependency "rake", "~> 13.0"
|
27
27
|
spec.add_development_dependency "rspec", "~> 3.0"
|
28
28
|
spec.add_development_dependency "byebug"
|
29
29
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module KindleManager
|
2
2
|
class BooksAdapter < BaseAdapter
|
3
|
+
URL_FOR_KINDLE_CONTENTS = 'https://www.amazon.co.jp/gp/digital/fiona/manage?ie=UTF8&ref_=nav_youraccount_myk'
|
4
|
+
|
3
5
|
def fetch
|
4
6
|
go_to_kindle_management_page
|
5
7
|
begin
|
@@ -14,10 +16,8 @@ module KindleManager
|
|
14
16
|
|
15
17
|
def go_to_kindle_management_page
|
16
18
|
log "Visiting kindle management page"
|
17
|
-
wait_for_selector('#shopAllLinks', wait_time: 5)
|
18
19
|
3.times do
|
19
|
-
|
20
|
-
session.visit link
|
20
|
+
session.visit URL_FOR_KINDLE_CONTENTS
|
21
21
|
wait_for_selector('.navHeader_myx')
|
22
22
|
if session.first('.navHeader_myx')
|
23
23
|
log "Page found '#{session.first('.navHeader_myx').text}'"
|
@@ -41,8 +41,7 @@ module KindleManager
|
|
41
41
|
log "Clicking 'Show More'"
|
42
42
|
session.execute_script "window.scrollBy(0,-800)"
|
43
43
|
show_more_button.click
|
44
|
-
sleep
|
45
|
-
raise('Clicking of more button may have failed') if has_more_button?
|
44
|
+
sleep fetching_interval
|
46
45
|
else
|
47
46
|
log "Loading books with scrolling #{current_loop+1}"
|
48
47
|
session.execute_script "window.scrollBy(0,10000)"
|
@@ -79,7 +78,7 @@ module KindleManager
|
|
79
78
|
end
|
80
79
|
|
81
80
|
def show_more_button
|
82
|
-
session.all('
|
81
|
+
session.all('.contentTableShowMore_myx').find{|e| e['outerHTML'].match(/cnt_shw_more/) }
|
83
82
|
end
|
84
83
|
|
85
84
|
def number_of_fetched_books
|
@@ -11,8 +11,9 @@ module KindleManager
|
|
11
11
|
begin
|
12
12
|
Date.parse(date_text)
|
13
13
|
rescue ArgumentError => e
|
14
|
-
m = date_text.match(/\A(?<year>\d{4})年(?<month>\d{1,2})月(?<day>\d{1,2})
|
14
|
+
m = date_text.match(/\A(?<year>\d{4})年(?<month>\d{1,2})月(?<day>\d{1,2})日/)
|
15
15
|
m = date_text.match(/(?<month>\d{1,2})月\D+(?<day>\d{1,2}),\D+(?<year>\d{4})/) if m.nil?
|
16
|
+
raise("Failed to parse date [#{date_text}]") if m.nil?
|
16
17
|
Date.new(m[:year].to_i, m[:month].to_i, m[:day].to_i)
|
17
18
|
end
|
18
19
|
end
|
@@ -21,7 +21,7 @@ module KindleManager
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def author
|
24
|
-
@_author ||= @node.css('
|
24
|
+
@_author ||= @node.css('p.kp-notebook-metadata.a-size-base').first.text
|
25
25
|
end
|
26
26
|
|
27
27
|
def last_annotated_on
|
@@ -40,13 +40,18 @@ module KindleManager
|
|
40
40
|
@_highlights_and_notes ||= begin
|
41
41
|
# Excluding the first element which has book info
|
42
42
|
@node.css('.a-spacing-base')[1..-1].map do |node|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
43
|
+
begin
|
44
|
+
location = node.css('#kp-annotation-location').first['value'].to_i
|
45
|
+
highlight_node = node.css('.kp-notebook-highlight').first
|
46
|
+
highlight = highlight_node && highlight_node.css('#highlight').first.text
|
47
|
+
color = highlight_node && highlight_node['class'].split.find{|v| v =~ /kp-notebook-highlight-/ }.split('-').last
|
48
|
+
note = node.css('#note').first.text
|
49
|
+
{'location' => location, 'highlight' => highlight, 'color' => color, 'note' => note}
|
50
|
+
rescue => e
|
51
|
+
puts "[DEBUG] #{e.class}: #{e.message}\n#{node.to_html}\n"
|
52
|
+
next
|
53
|
+
end
|
54
|
+
end.compact
|
50
55
|
end
|
51
56
|
end
|
52
57
|
|
@@ -61,7 +66,7 @@ module KindleManager
|
|
61
66
|
# This can be used to verify the count of hightlights and notes
|
62
67
|
def count_summary
|
63
68
|
@_count_summary ||= begin
|
64
|
-
text = @node.css('
|
69
|
+
text = @node.css('.kp-notebook-row-separator > .kp-notebook-metadata').last.text.strip
|
65
70
|
a, b = text.split('|').map{|text| m = text.match(/\d+/); m.nil? ? nil : m[0].to_i }
|
66
71
|
{'text' => text, 'highlights_count' => a, 'notes_count' => b}
|
67
72
|
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.
|
4
|
+
version: 0.6.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kazuho Yamaguchi
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: amazon_auth
|
@@ -28,30 +28,30 @@ dependencies:
|
|
28
28
|
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '13.0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '13.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -127,8 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
127
|
- !ruby/object:Gem::Version
|
128
128
|
version: '0'
|
129
129
|
requirements: []
|
130
|
-
|
131
|
-
rubygems_version: 2.6.11
|
130
|
+
rubygems_version: 3.0.8
|
132
131
|
signing_key:
|
133
132
|
specification_version: 4
|
134
133
|
summary: Scrape information of kindle books from amazon site
|