class Ejaydj::Dj

Constants

PLAYLIST_SCHEDULE

Attributes

late_night_playlists[RW]
morning_playlists[RW]
music_client[RW]
music_client_id[RW]
music_client_secret[RW]
music_user_id[RW]
night_playlists[RW]
noon_playlists[RW]

Public Class Methods

new(attributes={}) { |self| ... } click to toggle source
# File lib/ejaydj/dj.rb, line 26
def initialize(attributes={})
  instantiate_variables_from attributes
  yield self if block_given?
end

Public Instance Methods

play_me_a_song(time: Time.now) click to toggle source
# File lib/ejaydj/dj.rb, line 31
def play_me_a_song(time: Time.now)
  current_playlist(time).next_track
end
playlists() click to toggle source
# File lib/ejaydj/dj.rb, line 35
def playlists
  @playlists ||= all_playlists
end
reload!() click to toggle source
# File lib/ejaydj/dj.rb, line 39
def reload!
  @playlists = all_playlists
  @playlists.each(&:reload!)
end

Private Instance Methods

all_playlists() click to toggle source
# File lib/ejaydj/dj.rb, line 58
def all_playlists
  playlist_service.all
end
current_playlist(time) click to toggle source
# File lib/ejaydj/dj.rb, line 46
def current_playlist(time)
  playlist_name = scheduled_playlist(time.strftime('%k%M').to_i)
  playlist = playlists.find do |playlist|
    playlist.name == playlist_name
  end
end
playlist_service() click to toggle source
# File lib/ejaydj/dj.rb, line 62
def playlist_service
  @playlist_service ||= Services::PlaylistService.new(
                            music_client: music_client,
                            user_id: music_user_id)
end
scheduled_playlist(time) click to toggle source
# File lib/ejaydj/dj.rb, line 53
def scheduled_playlist(time)
  scheduled_playlists = PLAYLIST_SCHEDULE.select {|sched| sched.cover? time}.values[0]
  send(scheduled_playlists).sample
end