kindle_manager 0.5.0 → 0.6.4
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 +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
|