kindle_manager 0.6.1 → 0.7.0
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/.circleci/config.yml +21 -0
- data/README.md +7 -2
- data/kindle_manager.gemspec +4 -4
- data/lib/kindle_manager/adapters/books_adapter.rb +8 -9
- data/lib/kindle_manager/parsers/highlights_parser.rb +12 -7
- data/lib/kindle_manager/version.rb +1 -1
- metadata +21 -22
- data/.travis.yml +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 38b4108ec337ceae8173babf86fb0adac4550f06f68aab4913228b411ff9ae85
|
4
|
+
data.tar.gz: d517f89c420a47a9403d2caafa476f83b6c9f7056dd0963a7ee096f5e3893507
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 55a646ff5b8d6c7487a83ae6468763b783e5787a91a4b12be622c90b603ebbe66a0ac39e4c18c9ad3038a5d4f7a54855ef53123e5db760f49678af37c29925ed
|
7
|
+
data.tar.gz: 69ae1b4a50c7708625f74b2aa027aee315e81103f06f14f24e4f0b216fdd81ca53d49fe9c1beea177e14b8d740b3df493dd0c5af440dee8b04d5bbddca79d38e
|
@@ -0,0 +1,21 @@
|
|
1
|
+
version: 2.1
|
2
|
+
|
3
|
+
jobs:
|
4
|
+
test:
|
5
|
+
parameters:
|
6
|
+
ruby-version:
|
7
|
+
type: string
|
8
|
+
docker:
|
9
|
+
- image: cimg/ruby:<< parameters.ruby-version >>-browsers
|
10
|
+
steps:
|
11
|
+
- checkout
|
12
|
+
- run: bundle install
|
13
|
+
- run: bundle exec rspec
|
14
|
+
|
15
|
+
workflows:
|
16
|
+
all-tests:
|
17
|
+
jobs:
|
18
|
+
- test:
|
19
|
+
matrix:
|
20
|
+
parameters:
|
21
|
+
ruby-version: ["2.7.5", "3.0.3"]
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# KindleManager
|
2
2
|
|
3
3
|
[](https://badge.fury.io/rb/kindle_manager)
|
4
|
-
[](https://circleci.com/gh/kyamaguchi/kindle_manager)
|
5
5
|
|
6
6
|
Scrape information of kindle books & highlights from amazon site
|
7
7
|
|
@@ -34,7 +34,7 @@ Or install it yourself as:
|
|
34
34
|
|
35
35
|
### Setup
|
36
36
|
|
37
|
-
[chromedriver](https://sites.google.com/
|
37
|
+
[chromedriver](https://sites.google.com/chromium.org/driver/) is required. Please [download chromedriver](https://chromedriver.storage.googleapis.com/index.html) and update chromedriver regularly.
|
38
38
|
|
39
39
|
Create _.env_ following the instructions of https://github.com/kyamaguchi/amazon_auth
|
40
40
|
|
@@ -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
@@ -21,9 +21,9 @@ 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.
|
25
|
-
spec.add_development_dependency "bundler"
|
26
|
-
spec.add_development_dependency "rake"
|
27
|
-
spec.add_development_dependency "rspec"
|
24
|
+
spec.add_runtime_dependency "amazon_auth", "~> 0.6.0"
|
25
|
+
spec.add_development_dependency "bundler"
|
26
|
+
spec.add_development_dependency "rake"
|
27
|
+
spec.add_development_dependency "rspec"
|
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,13 +16,11 @@ 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
|
-
|
21
|
-
|
22
|
-
|
23
|
-
log "Page found '#{session.first('.navHeader_myx').text}'"
|
20
|
+
session.visit URL_FOR_KINDLE_CONTENTS
|
21
|
+
wait_for_selector('.navHeader_title_myx')
|
22
|
+
if session.has_css?('.navHeader_title_myx')
|
23
|
+
log "Page found '#{session.first('.navHeader_title_myx').text}'"
|
24
24
|
break
|
25
25
|
else
|
26
26
|
submit_signin_form
|
@@ -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
|
@@ -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
|
|
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.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kazuho Yamaguchi
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: amazon_auth
|
@@ -16,56 +16,56 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.6.0
|
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.
|
26
|
+
version: 0.6.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
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: '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: '0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '0'
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: byebug
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,9 +87,9 @@ executables: []
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
+
- ".circleci/config.yml"
|
90
91
|
- ".gitignore"
|
91
92
|
- ".rspec"
|
92
|
-
- ".travis.yml"
|
93
93
|
- Gemfile
|
94
94
|
- LICENSE.txt
|
95
95
|
- README.md
|
@@ -112,7 +112,7 @@ homepage: https://github.com/kyamaguchi/kindle_manager
|
|
112
112
|
licenses:
|
113
113
|
- MIT
|
114
114
|
metadata: {}
|
115
|
-
post_install_message:
|
115
|
+
post_install_message:
|
116
116
|
rdoc_options: []
|
117
117
|
require_paths:
|
118
118
|
- lib
|
@@ -127,9 +127,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
127
|
- !ruby/object:Gem::Version
|
128
128
|
version: '0'
|
129
129
|
requirements: []
|
130
|
-
|
131
|
-
|
132
|
-
signing_key:
|
130
|
+
rubygems_version: 3.1.6
|
131
|
+
signing_key:
|
133
132
|
specification_version: 4
|
134
133
|
summary: Scrape information of kindle books from amazon site
|
135
134
|
test_files: []
|