xiami_radio 1.1.2 → 1.1.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
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