class XiamiRadio::Player
There is a player as you saw
Attributes
next_track[R]
radio[R]
track[R]
Public Class Methods
new(radio:, _playlist: nil)
click to toggle source
# File lib/xiami_radio/player.rb, line 9 def initialize(radio:, _playlist: nil) @radio = radio @player = Audite.new @view = View::Player.new @player.events.on :position_change, &method(:position_change) @player.events.on :complete, &method(:complete) @view.listen_on self trap(:SIGUSR1) { self.next } trap(:SIGUSR2) do File.open(XiamiRadio.track_info_swap, 'w') do |f| f.puts "#{self.track.title} - #{self.track.artist} - #{self.track.album_name}" end end end
Private Class Methods
play(radio)
click to toggle source
# File lib/xiami_radio/player.rb, line 81 def self.play(radio) player = new radio: radio player.play player end
Public Instance Methods
forward()
click to toggle source
# File lib/xiami_radio/player.rb, line 49 def forward @player.forward end
next()
click to toggle source
# File lib/xiami_radio/player.rb, line 34 def next @track.downloader.stop if preloading? @track, @next_track = @next_track, nil else @track = @radio.next_track @player.queue @track.file_path end @player.request_next_song end
play()
click to toggle source
# File lib/xiami_radio/player.rb, line 26 def play @track = @radio.next_track @player.queue @track.file_path @player.set_current_song @player.start_stream @player.thread.join end
rewind()
click to toggle source
# File lib/xiami_radio/player.rb, line 45 def rewind @player.rewind end
toggle()
click to toggle source
# File lib/xiami_radio/player.rb, line 53 def toggle @player.toggle end
Private Instance Methods
complete()
click to toggle source
# File lib/xiami_radio/player.rb, line 72 def complete @track.record @track, @next_track = @next_track, nil end
position_change(position)
click to toggle source
# File lib/xiami_radio/player.rb, line 59 def position_change(position) @view.refresh @track, position @track.record position.to_i if (120.0..123.0).include? position if !preloading? && position / @track.duration > 0.8 @preloader = Thread.start do @next_track = @radio.next_track @player.queue @next_track.file_path end end end
preloading?()
click to toggle source
# File lib/xiami_radio/player.rb, line 77 def preloading? !@next_track.nil? || @preloader&.alive? end