Class: Cloudruby

Inherits:
Object
  • Object
show all
Defined in:
lib/cloudruby.rb

Instance Method Summary collapse

Instance Method Details

#downloadObject



95
96
97
# File 'lib/cloudruby.rb', line 95

def download
  @cloud.download @config[:download_dir]
end

#init(q, config) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/cloudruby.rb', line 11

def init(q, config)
  @config = config

  # @logger = Logger.new "logfile.log"
  @logger = Logger.new STDERR
  # @logger.level = Logger::DEBUG
  @logger.level = Logger::Severity::UNKNOWN

  @cloud = SoundCloud.new "76796f79392f9398288cdac3fe3391c0", logger: @logger
  case @config[:"audio-backend"] 
  when "gstreamer"
    @player = GstPlayer.new logger: @logger, audio_params: @config[:"audio-params"]
  else
    @player = MPG123Player.new logger: @logger
  end
  @ui = NCursesUI.new self, (@config[:ncurses] || @config[:curses]), logger: @logger, audio_backend: @player

  @logger.info {"logger inited"}
  
  @player.add_observer @ui, :player_update
  @player.add_observer self
  @cloud.add_observer @ui, :cloud_update
  @logger.info {"observer assigned"}

  @cloud.load_playlist q
  @logger.info {"loaded playlist"}
  @cloud.shufflePlaylist unless @config[:"no-shuffle"]
  @logger.info {"playlist shuffled"}
  nextTrack

  trap("INT") do
    self.quit
  end
end

#nextTrackObject



46
47
48
49
50
51
52
53
54
# File 'lib/cloudruby.rb', line 46

def nextTrack
  track = @cloud.nextTrack
  unless track
    puts "Nothing found"
    quit
  else
    @player.play track
  end
end

#pauseObject



66
67
68
# File 'lib/cloudruby.rb', line 66

def pause
  @player.pause
end

#prevTrackObject



56
57
58
59
60
61
62
63
64
# File 'lib/cloudruby.rb', line 56

def prevTrack
  track = @cloud.prevTrack
  unless track
    puts "Nothing found"
    quit
  else
    @player.play track
  end
end

#quitObject

quit app and free all resources



100
101
102
103
104
105
# File 'lib/cloudruby.rb', line 100

def quit
  @ui.close
  @player.close
  @logger.close
  exit
end

#runObject



82
83
84
# File 'lib/cloudruby.rb', line 82

def run
  @ui.run
end

#toggleMuteObject



78
79
80
# File 'lib/cloudruby.rb', line 78

def toggleMute
  @player.mute
end

#update(arg) ⇒ Object

jump to next track, if current track finishes



87
88
89
90
91
92
93
# File 'lib/cloudruby.rb', line 87

def update(arg)
  state = arg[:state]
  case state
  when :stop
    nextTrack
  end
end

#volumeDownObject



74
75
76
# File 'lib/cloudruby.rb', line 74

def volumeDown
  @player.volume = -5
end

#volumeUpObject



70
71
72
# File 'lib/cloudruby.rb', line 70

def volumeUp
  @player.volume = 5
end