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 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