xiami_radio 1.1.2 → 1.1.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
2
  SHA1:
3
- metadata.gz: 82320db1fc6fa1004688356887db8a53f38683f6
4
- data.tar.gz: a34ba7934dc3dd9a40da5bb4d0e5c6cf4808a1d9
3
+ metadata.gz: 2945c7bf31a3da8dab44bef8baeec1cc0e43d95f
4
+ data.tar.gz: 2777d8c81551c09bd2fd1a7f2a6f5105cc737acb
5
5
  SHA512:
6
- metadata.gz: f1a0d25276bc5dafd2ffffe19659aa72f342cfedab660373a222ea8132620a3ab7b703016f29c133d2d0e6f7ee763d093b87f6518e8af080167b56b3e8dbe3c1
7
- data.tar.gz: add1a386b190a5bf46720ffe232e9dd727b3fb65bdd3e3e83ca0cacd6e6a272f87f7a402dad1ab47ede33917d83526d71b826b7187c6f010c93f04bc26db287b
6
+ metadata.gz: 8a851c417c5d7d3d161c58bd0faf5b74422c7f1656e0464749a22b41d15c7ad820f2c409749ee586a6421dd7a6de44735ba2cad6e8207dc8125a2267fd74afdb
7
+ data.tar.gz: 78a312b7a549331b07d01d7a0a0471a2d5583addf9f66e1cbd2cef50f85504d2d8146cde07824cd7fb0e916f82af15a5a680924c96971fb982b9c884afc2fc38
@@ -8,6 +8,7 @@ require 'xiami_radio/user'
8
8
  require 'xiami_radio/view/player'
9
9
 
10
10
  require 'tmpdir'
11
+ require 'logger'
11
12
 
12
13
  module XiamiRadio
13
14
  TMP_DIR = File.join(Dir.tmpdir, 'xiami_radio').freeze
@@ -18,14 +19,18 @@ module XiamiRadio
18
19
  class << self
19
20
  def init
20
21
  mktmpdir
21
- stderr = debug? ? STDOUT : File.join(TMP_DIR, '戊')
22
- $stderr.reopen stderr, 'w'
22
+ $stderr.reopen File.join(TMP_DIR, '戊'), 'w'
23
+ logger.level = debug? ? :debug : :warn
23
24
  end
24
25
 
25
26
  def mktmpdir
26
27
  Dir.mkdir TMP_DIR, 0700 unless Dir.exist? TMP_DIR
27
28
  end
28
29
 
30
+ def logger
31
+ @logger ||= Logger.new File.join(TMP_DIR, '戊')
32
+ end
33
+
29
34
  def debug?
30
35
  %w(1 true on).include? ENV.fetch('DEBUG', DEBUG)
31
36
  end
@@ -21,7 +21,7 @@ module XiamiRadio
21
21
  end
22
22
 
23
23
  def progress
24
- (@progress.to_f / @total.to_f).round(2) unless @progress.nil?
24
+ @progress.nil? ? 0.00 : (@progress.to_f / @total.to_f).round(2)
25
25
  end
26
26
 
27
27
  def start
@@ -42,6 +42,7 @@ module XiamiRadio
42
42
  if res.code == '302'
43
43
  request URI(res.header['Location'])
44
44
  else
45
+ XiamiRadio.logger.debug "#{@track.title} download start"
45
46
  @progress, @total = 0, res.header['Content-Length'].to_i
46
47
  @file = File.open(filename, 'w')
47
48
  res.read_body do |chunk|
@@ -51,6 +52,7 @@ module XiamiRadio
51
52
  end
52
53
  end
53
54
  end
55
+ XiamiRadio.logger.debug "#{@track.title} download completed"
54
56
  end
55
57
  end
56
58
  end
@@ -26,8 +26,12 @@ module XiamiRadio
26
26
 
27
27
  def next
28
28
  @track.downloader.stop
29
- preload! unless preload?
30
- unperload!
29
+ if preload?
30
+ @track, @next_track = @next_track, nil
31
+ else
32
+ @track = @radio.next_track
33
+ @player.queue @track.file_path
34
+ end
31
35
  @player.request_next_song
32
36
  end
33
37
 
@@ -46,31 +50,24 @@ module XiamiRadio
46
50
  private
47
51
 
48
52
  def position_change(position)
49
- @view.refresh @track, position unless position > @track.duration
50
-
51
- Thread.start do
52
- preload!
53
- @track.record
54
- end if !preload? && position / @track.duration > 0.7
53
+ @view.refresh @track, position
54
+
55
+ if !preload? && position / @track.duration > 0.7
56
+ @preloader = Thread.start do
57
+ @next_track = @radio.next_track
58
+ @player.queue @next_track.file_path
59
+ @track.record
60
+ end
61
+ end
55
62
  end
56
63
 
57
64
  def complete
58
- @track, @preload_track = @preload_track, nil
65
+ @track, @next_track = @next_track, nil
59
66
  end
60
67
 
61
68
  def preload?
62
- @preload_flag ||= false
63
- end
64
-
65
- def preload!
66
- @preload_flag = true
67
- @preload_track = @radio.next_track
68
- @player.queue @preload_track.file_path
69
- end
70
-
71
- def unperload!
72
- @preload_flag = false
73
- @track, @preload_track = @preload_track, nil
69
+ return true unless @next_track.nil?
70
+ !@preloader.nil? && @preloader.alive?
74
71
  end
75
72
 
76
73
  def self.play(radio)
@@ -1,5 +1,5 @@
1
1
  module XiamiRadio
2
2
 
3
- VERSION = '1.1.2'
3
+ VERSION = '1.1.4'
4
4
 
5
5
  end
@@ -59,11 +59,11 @@ module XiamiRadio
59
59
  end
60
60
 
61
61
  def render_progress_line(play_rate, dawnload_rate)
62
- p = (play_rate * cols).round
63
- d = (dawnload_rate * cols).round - p
62
+ d_cols = [(dawnload_rate * cols).round, cols].min
63
+ p_cols = [(play_rate * cols).round, d_cols].min
64
64
  setpos(1, 0)
65
65
  clrtoeol
66
- addstr('_' * p + '#' * d + ' ' * (cols - p - d))
66
+ addstr('_' * p_cols + '#' * (d_cols - p_cols) + ' ' * (cols - d_cols))
67
67
  end
68
68
 
69
69
  def render_info_line(track, position)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: xiami_radio
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ivan Chou
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-20 00:00:00.000000000 Z
11
+ date: 2017-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: audite