kindle_manager 0.1.1 → 0.1.2

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
2
  SHA1:
3
- metadata.gz: 065a28c7130f475f85b34e66fa86d22169a91ac5
4
- data.tar.gz: e525336b3c853df970cff3e00e840fb3bc3a5111
3
+ metadata.gz: 4d0d0cbbeb7edce8852f3de2f76c624ce3471108
4
+ data.tar.gz: ce85a47e95df6d2cabcac0168c61350dd550b7b9
5
5
  SHA512:
6
- metadata.gz: 4c922354219deb9a6ff7840d94c1a1891d0f5507c735e6a7135c22975ef87c4657297668619d21db3d813eb6c16c51bf5f3e125dc5d1f381e11bbb96976372f3
7
- data.tar.gz: 2646eeb5c522ca77fd0c1ebb1c4ab815150c9f71fb622a0097e392cae609dc3990a629d798e500b797980b6dc19f1e35d32cbdfbfcfc32bb05fb08874b692b8c
6
+ metadata.gz: 82a79e14d3eaa9c53a8efe63b6374295bd08341a358575173cdd1efefa2497838d1004db517427b0a571fb2777b32264b0b3bcbf7c1e0f3bbc5e7fd2c5736858
7
+ data.tar.gz: 14720099a4849797df39e4e9a22a8063f01604475cc8f994a7581fe7d5bea9212fbe6fef88fab1677dde59eeb3362827e1c27cee2bc7b4fa911330f3b8732f0c
data/README.md CHANGED
@@ -26,6 +26,12 @@ Or install it yourself as:
26
26
 
27
27
  Create _.env_ following the instructions of https://github.com/kyamaguchi/amazon_auth
28
28
 
29
+ ```
30
+ amazon_auth
31
+
32
+ vi .env
33
+ ```
34
+
29
35
  And `Dotenv.load` or `gem 'dotenv-rails'` may be required when you use this in your app.
30
36
 
31
37
  ### Run
@@ -37,7 +43,7 @@ bin/console
37
43
  In console
38
44
 
39
45
  ```
40
- client = KindleManager::Client.new
46
+ client = KindleManager::Client.new(debug: true)
41
47
  client.fetch_kindle_list
42
48
  books = client.load_kindle_books
43
49
 
@@ -5,6 +5,7 @@ module KindleManager
5
5
  def initialize(options = {})
6
6
  @debug = options.fetch(:debug, false)
7
7
  @limit = options.fetch(:limit, nil)
8
+ @options = options
8
9
  begin
9
10
  @client = AmazonAuth::Client.new
10
11
  rescue => e
@@ -19,22 +20,17 @@ module KindleManager
19
20
  end
20
21
 
21
22
  def store
22
- # Create file store without session(session) by default
23
- @store ||= KindleManager::FileStore.new(nil, latest: true)
24
- end
25
-
26
- def setup_file_store_with_session
27
- @store = KindleManager::FileStore.new(session)
23
+ @store ||= KindleManager::FileStore.new(@options)
28
24
  end
29
25
 
30
26
  def fetch_kindle_list
31
27
  sign_in
32
- setup_file_store_with_session
28
+ store.session = session
33
29
  go_to_kindle_management_page
34
30
  begin
35
31
  load_next_kindle_list
36
32
  rescue => e
37
- byebug
33
+ byebug if defined?(Byebug)
38
34
  # retry ?
39
35
  puts e
40
36
  end
@@ -54,8 +50,16 @@ module KindleManager
54
50
  end
55
51
 
56
52
  def go_to_kindle_management_page
53
+ puts "Visiting kindle management page" if @debug
57
54
  wait_for_selector('#shopAllLinks', 5)
58
- session.all('a').find{|e| e['href'] =~ %r{/gp/digital/fiona/manage/} }.click
55
+ 3.times do
56
+ session.all('a').find{|e| e['href'] =~ %r{/gp/digital/fiona/manage/} }.click
57
+ wait_for_selector('.navHeader_myx', 5)
58
+ if session.first('.navHeader_myx')
59
+ puts "Page found '#{session.first('.navHeader_myx').text}'" if @debug
60
+ break
61
+ end
62
+ end
59
63
  end
60
64
 
61
65
  def load_next_kindle_list
@@ -65,21 +69,22 @@ module KindleManager
65
69
  if @limit && @limit < number_of_fetched_books
66
70
  break
67
71
  elsif has_more_button?
68
- debug_print_page
72
+ snapshot_page
69
73
  @current_loop = 0
70
74
 
71
- puts "Clicking 'Show More'"
75
+ puts "Clicking 'Show More'" if @debug
72
76
  session.execute_script "window.scrollBy(0,-800)"
73
77
  show_more_button.click
74
78
  sleep 1
75
79
  raise('Clicking of more button may have failed') if has_more_button?
76
80
  else
77
- puts "Scrolling #{@current_loop}"
81
+ puts "Loading books with scrolling #{@current_loop+1}" if @debug
78
82
  session.execute_script "window.scrollBy(0,10000)"
79
83
  end
80
84
  sleep 5
81
85
  @current_loop += 1
82
86
  end
87
+ puts "Stopped loading" if @debug
83
88
  snapshot_page
84
89
  end
85
90
 
@@ -100,8 +105,11 @@ module KindleManager
100
105
  end
101
106
 
102
107
  def number_of_fetched_books
103
- m = session.first('.contentCount_myx').text.match(/(\d+) - (\d+)/)
104
- m.nil? ? nil : m[2].to_i
108
+ re = (AmazonInfo.domain =~ /\.jp\z/ ? /(\d+)(\d+)/ : /(\d+) - (\d+)/)
109
+ text = session.first('.contentCount_myx').text
110
+ m = text.match(re)
111
+ return m[2].to_i if m.present?
112
+ raise("Couldn't get the number of fetched books [#{text}]")
105
113
  end
106
114
 
107
115
  def loading?
@@ -110,13 +118,8 @@ module KindleManager
110
118
 
111
119
  def snapshot_page
112
120
  store.record_page
113
- debug_print_page
114
- end
115
-
116
- def debug_print_page
117
121
  if @debug
118
- puts Time.current.strftime("%Y-%m-%d %H:%M:%S")
119
- puts "Loop: #{@current_loop}"
122
+ puts "Saving page" + Time.current.strftime("%Y-%m-%d %H:%M:%S")
120
123
  puts session.first('.contentCount_myx').text if session.first('.contentCount_myx')
121
124
  puts
122
125
  end
@@ -1,12 +1,13 @@
1
1
  module KindleManager
2
2
  class FileStore
3
- attr_accessor :dir_name
3
+ attr_accessor :dir_name, :session
4
4
 
5
- def initialize(session, options = {})
5
+ def initialize(options = {})
6
6
  @dir_name = options.fetch(:dir_name) do
7
- options[:latest] ? find_latest_dir_name : Time.current.strftime("%Y%m%d%H%M%S")
7
+ tmp_dir_name = options[:create] ? nil : find_latest_dir_name
8
+ tmp_dir_name.presence || Time.current.strftime("%Y%m%d%H%M%S")
8
9
  end
9
- @session = session
10
+ @session = options.fetch(:session, nil)
10
11
  end
11
12
 
12
13
  def base_dir
@@ -48,7 +49,7 @@ module KindleManager
48
49
  end
49
50
 
50
51
  def find_latest_dir_name
51
- self.class.list_download_dirs.sort.last.split('/').last
52
+ self.class.list_download_dirs.sort.last.to_s.split('/').last
52
53
  end
53
54
 
54
55
  private
@@ -1,3 +1,3 @@
1
1
  module KindleManager
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
@@ -1,4 +1,3 @@
1
- require 'byebug'
2
1
  require 'amazon_auth'
3
2
  require "kindle_manager/version"
4
3
  require "kindle_manager/client"
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.1.1
4
+ version: 0.1.2
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-04-03 00:00:00.000000000 Z
11
+ date: 2017-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: amazon_auth