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 +4 -4
- data/lib/xiami_radio.rb +7 -2
- data/lib/xiami_radio/downloader.rb +3 -1
- data/lib/xiami_radio/player.rb +18 -21
- data/lib/xiami_radio/version.rb +1 -1
- data/lib/xiami_radio/view/player.rb +3 -3
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2945c7bf31a3da8dab44bef8baeec1cc0e43d95f
|
|
4
|
+
data.tar.gz: 2777d8c81551c09bd2fd1a7f2a6f5105cc737acb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8a851c417c5d7d3d161c58bd0faf5b74422c7f1656e0464749a22b41d15c7ad820f2c409749ee586a6421dd7a6de44735ba2cad6e8207dc8125a2267fd74afdb
|
|
7
|
+
data.tar.gz: 78a312b7a549331b07d01d7a0a0471a2d5583addf9f66e1cbd2cef50f85504d2d8146cde07824cd7fb0e916f82af15a5a680924c96971fb982b9c884afc2fc38
|
data/lib/xiami_radio.rb
CHANGED
|
@@ -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
|
|
22
|
-
|
|
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)
|
|
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
|
data/lib/xiami_radio/player.rb
CHANGED
|
@@ -26,8 +26,12 @@ module XiamiRadio
|
|
|
26
26
|
|
|
27
27
|
def next
|
|
28
28
|
@track.downloader.stop
|
|
29
|
-
|
|
30
|
-
|
|
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
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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, @
|
|
65
|
+
@track, @next_track = @next_track, nil
|
|
59
66
|
end
|
|
60
67
|
|
|
61
68
|
def preload?
|
|
62
|
-
|
|
63
|
-
|
|
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)
|
data/lib/xiami_radio/version.rb
CHANGED
|
@@ -59,11 +59,11 @@ module XiamiRadio
|
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
def render_progress_line(play_rate, dawnload_rate)
|
|
62
|
-
|
|
63
|
-
|
|
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('_' *
|
|
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.
|
|
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-
|
|
11
|
+
date: 2017-10-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: audite
|