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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 5df40793942c890de33041d60b6e27efe076a695
4
- data.tar.gz: 31a5cbce41c6b166de7954cb876f041fc4ddf3ec
2
+ SHA256:
3
+ metadata.gz: 94b27bae732e8c8a50d463380a7fbcc499ad5ea46f810bed185ed469f3ae0c8b
4
+ data.tar.gz: 8f902074660f6774d95a32e37afafa96e06cbfedfc7cc9ee20b215f3f83364e9
5
5
  SHA512:
6
- metadata.gz: 4d9ac40336b50f1f6f10c201f11eef301eb11ae373e8bd9fd88c5167edd00e4cf6edc95fda3b82f2436d440d1dff8f9ca8e459708967d66fd0756086927a6b30
7
- data.tar.gz: 315a3ae71152310075fe4d855355bd93c280af92c6d400f2bbb5ae2333941380f598b8092373f3aa3d63b0a371162e1a050407e772b437abe181a96b28b17c11
6
+ metadata.gz: d759c1c3b06ec52cb47dfc5ebbdfbe29693899758b55b66853c0a6d088edf5c2e53e0a383d7939d6021f64b009c05d03bc3b4d9501753579194bd190dddc0fe0
7
+ data.tar.gz: c4bf70715590d1e9c7840e9736a1bfcca77369ed0370af5afa1f31dee2a32b423769f39fd52db71c8a14e915eea78bd2c7d89e122c4b7875587c51540448bb3e
@@ -1,7 +1,7 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.2.7
5
- - 2.3.4
6
- - 2.4.1
7
- before_install: gem install bundler -v 1.14.6
4
+ - 2.4.5
5
+ - 2.5.3
6
+ - 2.6.0
7
+ before_install: gem install bundler
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
@@ -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", "~> 1.14"
26
- spec.add_development_dependency "rake", "~> 10.0"
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
- link = links_for('#navFooter a').find{|link| link =~ %r{/gp/digital/fiona/manage/} }
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 1
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('#contentTable_showMore_myx').find{|e| e['outerHTML'].match(/showmore_button/) }
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})日\z/)
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('h1.kp-notebook-metadata').first.text
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
- location = node.css('#kp-annotation-location').first['value'].to_i
44
- highlight_node = node.css('.kp-notebook-highlight').first
45
- highlight = highlight_node && highlight_node.css('#highlight').first.text
46
- color = highlight_node && highlight_node['class'].split.find{|v| v =~ /kp-notebook-highlight-/ }.split('-').last
47
- note = node.css('#note').first.text
48
- {'location' => location, 'highlight' => highlight, 'color' => color, 'note' => note}
49
- end
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('h1.kp-notebook-metadata').last.text.strip
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
@@ -1,3 +1,3 @@
1
1
  module KindleManager
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.4"
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.5.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: 2017-07-11 00:00:00.000000000 Z
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: '1.14'
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: '1.14'
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: '10.0'
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: '10.0'
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
- rubyforge_project:
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