muzak 0.0.9 → 0.0.10
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/muzak/cmd/index.rb +5 -44
- data/lib/muzak/cmd/meta.rb +2 -2
- data/lib/muzak/cmd/player.rb +22 -22
- data/lib/muzak/cmd/playlist.rb +12 -26
- data/lib/muzak/const.rb +1 -2
- data/lib/muzak/index.rb +58 -38
- data/lib/muzak/instance.rb +7 -12
- data/lib/muzak/playlist.rb +11 -0
- data/lib/muzak/plugin.rb +5 -0
- metadata +3 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: fea7658ba10597fe2e70ededc6e8b33e179f200c
         | 
| 4 | 
            +
              data.tar.gz: b320dc1ef8a2b0aa715f336290d1e66fe0771a12
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 91fe7be79998568bb9b3727066561eb1fd9f82ce8d0a9be4829c45b13a13d59fb2ae2bce343fd9ab87202eb72862d192c402fe89438b84cf23efb9fd1f3df8e5
         | 
| 7 | 
            +
              data.tar.gz: 1352f596a7e5a7df41027c62600524faf2352baf7a39d48c9671647e1d01e9c80ca3cdcb6278f7e71b1fa22dd866fe10c933b6f4f394ac66eae789619a9e6e80
         | 
    
        data/lib/muzak/cmd/index.rb
    CHANGED
    
    | @@ -1,76 +1,37 @@ | |
| 1 1 | 
             
            module Muzak
         | 
| 2 2 | 
             
              module Cmd
         | 
| 3 | 
            -
                def _index_available?
         | 
| 4 | 
            -
                  File.file?(INDEX_FILE)
         | 
| 5 | 
            -
                end
         | 
| 6 | 
            -
             | 
| 7 | 
            -
                def _index_loaded?
         | 
| 8 | 
            -
                  !!@index
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                def _index_outdated?
         | 
| 12 | 
            -
                  Time.now.to_i - @index.timestamp >= Config.index_autobuild
         | 
| 13 | 
            -
                end
         | 
| 14 | 
            -
             | 
| 15 | 
            -
                def _index_sync
         | 
| 16 | 
            -
                  debug "syncing index hash with #{INDEX_FILE}"
         | 
| 17 | 
            -
                  File.open(INDEX_FILE, "w") { |io| io.write @index.hash.to_yaml }
         | 
| 18 | 
            -
                end
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                def index_load
         | 
| 21 | 
            -
                  verbose "loading index from #{INDEX_FILE}"
         | 
| 22 | 
            -
             | 
| 23 | 
            -
                  @index = Index.load_index(INDEX_FILE)
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                  # the order is important here, since Config.index_autobuild
         | 
| 26 | 
            -
                  # will short-circuit if index-autobuild isn't set
         | 
| 27 | 
            -
                  if Config.index_autobuild && _index_outdated?
         | 
| 28 | 
            -
                    verbose "rebuilding outdated index"
         | 
| 29 | 
            -
                    index_build
         | 
| 30 | 
            -
                  end
         | 
| 31 | 
            -
                end
         | 
| 32 | 
            -
             | 
| 33 3 | 
             
                def index_build(*args)
         | 
| 34 4 | 
             
                  warn_arity(args, 0)
         | 
| 35 5 |  | 
| 36 6 | 
             
                  verbose "building a new index, this may take a while"
         | 
| 37 7 |  | 
| 38 | 
            -
                   | 
| 39 | 
            -
                  _index_sync
         | 
| 8 | 
            +
                  index.build!
         | 
| 40 9 | 
             
                end
         | 
| 41 10 |  | 
| 42 11 | 
             
                def list_artists(*args)
         | 
| 43 | 
            -
                  return unless _index_loaded?
         | 
| 44 | 
            -
             | 
| 45 12 | 
             
                  warn_arity(args, 0)
         | 
| 46 13 |  | 
| 47 | 
            -
                  puts  | 
| 14 | 
            +
                  puts index.artists.join("\n")
         | 
| 48 15 | 
             
                end
         | 
| 49 16 |  | 
| 50 17 | 
             
                def list_albums(*args)
         | 
| 51 | 
            -
                  return unless _index_loaded?
         | 
| 52 | 
            -
             | 
| 53 18 | 
             
                  warn_arity(args, 0)
         | 
| 54 19 |  | 
| 55 | 
            -
                  puts  | 
| 20 | 
            +
                  puts index.album_names.join("\n")
         | 
| 56 21 | 
             
                end
         | 
| 57 22 |  | 
| 58 23 | 
             
                def albums_by_artist(*args)
         | 
| 59 | 
            -
                  return unless _index_loaded?
         | 
| 60 | 
            -
             | 
| 61 24 | 
             
                  artist = args.join(" ")
         | 
| 62 25 | 
             
                  return if artist.nil?
         | 
| 63 26 |  | 
| 64 | 
            -
                  puts  | 
| 27 | 
            +
                  puts index.albums_by(artist).map(&:title)
         | 
| 65 28 | 
             
                end
         | 
| 66 29 |  | 
| 67 30 | 
             
                def songs_by_artist(*args)
         | 
| 68 | 
            -
                  return unless _index_loaded?
         | 
| 69 | 
            -
             | 
| 70 31 | 
             
                  artist = args.join(" ")
         | 
| 71 32 | 
             
                  return if artist.nil?
         | 
| 72 33 |  | 
| 73 | 
            -
                  puts  | 
| 34 | 
            +
                  puts index.songs_by(artist).map(&:title)
         | 
| 74 35 | 
             
                end
         | 
| 75 36 | 
             
              end
         | 
| 76 37 | 
             
            end
         | 
    
        data/lib/muzak/cmd/meta.rb
    CHANGED
    
    
    
        data/lib/muzak/cmd/player.rb
    CHANGED
    
    | @@ -1,54 +1,54 @@ | |
| 1 1 | 
             
            module Muzak
         | 
| 2 2 | 
             
              module Cmd
         | 
| 3 3 | 
             
                def player_activate
         | 
| 4 | 
            -
                  if  | 
| 4 | 
            +
                  if player.running?
         | 
| 5 5 | 
             
                    warn "player is already running"
         | 
| 6 6 | 
             
                    return
         | 
| 7 7 | 
             
                  end
         | 
| 8 8 |  | 
| 9 | 
            -
                   | 
| 9 | 
            +
                  player.activate!
         | 
| 10 10 | 
             
                end
         | 
| 11 11 |  | 
| 12 12 | 
             
                def player_deactivate
         | 
| 13 | 
            -
                  warn "player is not running" unless  | 
| 13 | 
            +
                  warn "player is not running" unless player.running?
         | 
| 14 14 |  | 
| 15 15 | 
             
                  # do cleanup even if the player isn't running, just in case
         | 
| 16 | 
            -
                   | 
| 16 | 
            +
                  player.deactivate!
         | 
| 17 17 | 
             
                end
         | 
| 18 18 |  | 
| 19 19 | 
             
                def play
         | 
| 20 | 
            -
                   | 
| 20 | 
            +
                  player.play
         | 
| 21 21 | 
             
                end
         | 
| 22 22 |  | 
| 23 23 | 
             
                def pause
         | 
| 24 | 
            -
                   | 
| 24 | 
            +
                  player.pause
         | 
| 25 25 | 
             
                end
         | 
| 26 26 |  | 
| 27 27 | 
             
                def toggle
         | 
| 28 | 
            -
                  if  | 
| 29 | 
            -
                     | 
| 28 | 
            +
                  if player.playing?
         | 
| 29 | 
            +
                    player.pause
         | 
| 30 30 | 
             
                  else
         | 
| 31 | 
            -
                     | 
| 31 | 
            +
                    player.play
         | 
| 32 32 | 
             
                  end
         | 
| 33 33 | 
             
                end
         | 
| 34 34 |  | 
| 35 35 | 
             
                def next
         | 
| 36 | 
            -
                   | 
| 36 | 
            +
                  player.next_song
         | 
| 37 37 | 
             
                end
         | 
| 38 38 |  | 
| 39 39 | 
             
                def previous
         | 
| 40 | 
            -
                   | 
| 40 | 
            +
                  player.previous_song
         | 
| 41 41 | 
             
                end
         | 
| 42 42 |  | 
| 43 43 | 
             
                def enqueue_artist(*args)
         | 
| 44 44 | 
             
                  artist = args.join(" ")
         | 
| 45 45 | 
             
                  return if artist.nil?
         | 
| 46 46 |  | 
| 47 | 
            -
                  albums =  | 
| 47 | 
            +
                  albums = index.albums_by(artist)
         | 
| 48 48 | 
             
                  return if albums.empty?
         | 
| 49 49 |  | 
| 50 50 | 
             
                  albums.each do |album|
         | 
| 51 | 
            -
                     | 
| 51 | 
            +
                    player.enqueue_album album
         | 
| 52 52 | 
             
                  end
         | 
| 53 53 | 
             
                end
         | 
| 54 54 |  | 
| @@ -57,37 +57,37 @@ module Muzak | |
| 57 57 | 
             
                  return if album_name.nil?
         | 
| 58 58 |  | 
| 59 59 | 
             
                  debug album_name
         | 
| 60 | 
            -
                  album =  | 
| 60 | 
            +
                  album = index.albums[album_name]
         | 
| 61 61 | 
             
                  debug album.to_s
         | 
| 62 62 | 
             
                  return if album.nil?
         | 
| 63 63 |  | 
| 64 | 
            -
                   | 
| 64 | 
            +
                  player.enqueue_album album
         | 
| 65 65 | 
             
                end
         | 
| 66 66 |  | 
| 67 67 | 
             
                def jukebox(*args)
         | 
| 68 68 | 
             
                  count = args.shift || Config.jukebox_size
         | 
| 69 69 |  | 
| 70 | 
            -
                  songs =  | 
| 70 | 
            +
                  songs = index.jukebox(count.to_i)
         | 
| 71 71 |  | 
| 72 | 
            -
                  songs.each { |s|  | 
| 72 | 
            +
                  songs.each { |s| player.enqueue_song s }
         | 
| 73 73 | 
             
                end
         | 
| 74 74 |  | 
| 75 75 | 
             
                def list_queue
         | 
| 76 | 
            -
                  puts  | 
| 76 | 
            +
                  puts player.list_queue.map(&:title)
         | 
| 77 77 | 
             
                end
         | 
| 78 78 |  | 
| 79 79 | 
             
                def shuffle_queue
         | 
| 80 | 
            -
                   | 
| 80 | 
            +
                  player.shuffle_queue
         | 
| 81 81 | 
             
                end
         | 
| 82 82 |  | 
| 83 83 | 
             
                def clear_queue
         | 
| 84 | 
            -
                   | 
| 84 | 
            +
                  player.clear_queue
         | 
| 85 85 | 
             
                end
         | 
| 86 86 |  | 
| 87 87 | 
             
                def now_playing
         | 
| 88 | 
            -
                  return unless  | 
| 88 | 
            +
                  return unless player.playing?
         | 
| 89 89 |  | 
| 90 | 
            -
                  info  | 
| 90 | 
            +
                  info player.now_playing.full_title
         | 
| 91 91 | 
             
                end
         | 
| 92 92 | 
             
              end
         | 
| 93 93 | 
             
            end
         | 
    
        data/lib/muzak/cmd/playlist.rb
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            module Muzak
         | 
| 2 2 | 
             
              module Cmd
         | 
| 3 3 | 
             
                def _playlists_loaded?
         | 
| 4 | 
            -
                   | 
| 4 | 
            +
                  !!playlists
         | 
| 5 5 | 
             
                end
         | 
| 6 6 |  | 
| 7 7 | 
             
                def list_playlists(*args)
         | 
| @@ -10,20 +10,6 @@ module Muzak | |
| 10 10 | 
             
                  end
         | 
| 11 11 | 
             
                end
         | 
| 12 12 |  | 
| 13 | 
            -
                def playlists_load(*args)
         | 
| 14 | 
            -
                  # fail_arity(args, 1)
         | 
| 15 | 
            -
                  # pname = args.shift
         | 
| 16 | 
            -
                  @playlists = {}
         | 
| 17 | 
            -
                  @playlists.default_proc = proc { |h, k| h[k] = Playlist.new(k) }
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                  Playlist.playlist_names.each do |pname|
         | 
| 20 | 
            -
                    debug "loading playlist '#{pname}'"
         | 
| 21 | 
            -
                    @playlists[pname] = Playlist.new(pname)
         | 
| 22 | 
            -
                  end
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                  event :playlists_loaded, @playlist
         | 
| 25 | 
            -
                end
         | 
| 26 | 
            -
             | 
| 27 13 | 
             
                def playlist_delete(*args)
         | 
| 28 14 | 
             
                  fail_arity(args, 1)
         | 
| 29 15 | 
             
                  pname = args.shift
         | 
| @@ -31,7 +17,7 @@ module Muzak | |
| 31 17 | 
             
                  debug "deleting playist '#{pname}'"
         | 
| 32 18 |  | 
| 33 19 | 
             
                  Playlist.delete!(pname)
         | 
| 34 | 
            -
                   | 
| 20 | 
            +
                  playlists[pname] = nil
         | 
| 35 21 | 
             
                end
         | 
| 36 22 |  | 
| 37 23 | 
             
                def enqueue_playlist(*args)
         | 
| @@ -39,8 +25,8 @@ module Muzak | |
| 39 25 | 
             
                  fail_arity(args, 1)
         | 
| 40 26 | 
             
                  pname = args.shift
         | 
| 41 27 |  | 
| 42 | 
            -
                   | 
| 43 | 
            -
                  event :playlist_enqueued,  | 
| 28 | 
            +
                  player.enqueue_playlist(playlists[pname])
         | 
| 29 | 
            +
                  event :playlist_enqueued, playlists[pname]
         | 
| 44 30 | 
             
                end
         | 
| 45 31 |  | 
| 46 32 | 
             
                def playlist_add_album(*args)
         | 
| @@ -52,10 +38,10 @@ module Muzak | |
| 52 38 | 
             
                  album_name = args.join(" ")
         | 
| 53 39 | 
             
                  return if album_name.nil?
         | 
| 54 40 |  | 
| 55 | 
            -
                  album =  | 
| 41 | 
            +
                  album = index.albums[album_name]
         | 
| 56 42 | 
             
                  return if album.nil?
         | 
| 57 43 |  | 
| 58 | 
            -
                   | 
| 44 | 
            +
                  playlists[pname].add(album.songs)
         | 
| 59 45 | 
             
                end
         | 
| 60 46 |  | 
| 61 47 | 
             
                def playlist_add_artist(*args)
         | 
| @@ -67,25 +53,25 @@ module Muzak | |
| 67 53 | 
             
                  artist = args.join(" ")
         | 
| 68 54 | 
             
                  return if artist.nil?
         | 
| 69 55 |  | 
| 70 | 
            -
                   | 
| 56 | 
            +
                  playlists[pname].add(index.songs_by(artist))
         | 
| 71 57 | 
             
                end
         | 
| 72 58 |  | 
| 73 59 | 
             
                def playlist_add_current(*args)
         | 
| 74 | 
            -
                  return unless  | 
| 60 | 
            +
                  return unless player.running? && _playlists_loaded?
         | 
| 75 61 |  | 
| 76 62 | 
             
                  pname = args.shift
         | 
| 77 63 | 
             
                  return if pname.nil?
         | 
| 78 64 |  | 
| 79 | 
            -
                   | 
| 65 | 
            +
                  playlists[pname].add player.now_playing
         | 
| 80 66 | 
             
                end
         | 
| 81 67 |  | 
| 82 68 | 
             
                def playlist_del_current(*args)
         | 
| 83 | 
            -
                  return unless  | 
| 69 | 
            +
                  return unless player.running? && _playlists_loaded?
         | 
| 84 70 |  | 
| 85 71 | 
             
                  pname = args.shift
         | 
| 86 72 | 
             
                  return if pname.nil?
         | 
| 87 73 |  | 
| 88 | 
            -
                   | 
| 74 | 
            +
                  playlists[pname].delete player.now_playing
         | 
| 89 75 | 
             
                end
         | 
| 90 76 |  | 
| 91 77 | 
             
                def playlist_shuffle(*args)
         | 
| @@ -94,7 +80,7 @@ module Muzak | |
| 94 80 | 
             
                  pname = args.shift
         | 
| 95 81 | 
             
                  return if pname.nil?
         | 
| 96 82 |  | 
| 97 | 
            -
                   | 
| 83 | 
            +
                  playlists[pname].shuffle!
         | 
| 98 84 | 
             
                end
         | 
| 99 85 | 
             
              end
         | 
| 100 86 | 
             
            end
         | 
    
        data/lib/muzak/const.rb
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 1 | 
             
            module Muzak
         | 
| 2 | 
            -
              VERSION = "0.0. | 
| 2 | 
            +
              VERSION = "0.0.10".freeze
         | 
| 3 3 |  | 
| 4 4 | 
             
              CONFIG_DIR = File.expand_path("~/.config/muzak").freeze
         | 
| 5 5 | 
             
              CONFIG_FILE = File.join(CONFIG_DIR, "muzak.yml").freeze
         | 
| @@ -12,7 +12,6 @@ module Muzak | |
| 12 12 | 
             
                :player_activated,
         | 
| 13 13 | 
             
                :player_deactivated,
         | 
| 14 14 | 
             
                :song_loaded,
         | 
| 15 | 
            -
                :playlists_loaded,
         | 
| 16 15 | 
             
                :playlist_enqueued
         | 
| 17 16 | 
             
              ]
         | 
| 18 17 | 
             
            end
         | 
    
        data/lib/muzak/index.rb
    CHANGED
    
    | @@ -1,59 +1,39 @@ | |
| 1 1 | 
             
            module Muzak
         | 
| 2 2 | 
             
              class Index
         | 
| 3 3 | 
             
                include Utils
         | 
| 4 | 
            -
                attr_accessor :hash
         | 
| 5 | 
            -
             | 
| 6 | 
            -
                def self.load_index(file)
         | 
| 7 | 
            -
                  instance = allocate
         | 
| 8 | 
            -
                  instance.hash = YAML::load_file(file)
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                  instance
         | 
| 11 | 
            -
                end
         | 
| 4 | 
            +
                attr_accessor :tree, :deep, :hash
         | 
| 12 5 |  | 
| 13 6 | 
             
                def initialize(tree, deep: false)
         | 
| 14 | 
            -
                  @ | 
| 15 | 
            -
             | 
| 16 | 
            -
                    "artists" => {},
         | 
| 17 | 
            -
                    "deep" => deep
         | 
| 18 | 
            -
                  }
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                  Dir.entries(tree).each do |artist|
         | 
| 21 | 
            -
                    next unless File.directory?(File.join(tree, artist))
         | 
| 22 | 
            -
                    next if artist.start_with?(".")
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                    @hash["artists"][artist] = {}
         | 
| 25 | 
            -
                    @hash["artists"][artist]["albums"] = {}
         | 
| 26 | 
            -
             | 
| 27 | 
            -
                    Dir.entries(File.join(tree, artist)).each do |album|
         | 
| 28 | 
            -
                      next if album.start_with?(".")
         | 
| 7 | 
            +
                  @tree = tree
         | 
| 8 | 
            +
                  @deep = deep
         | 
| 29 9 |  | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
             | 
| 10 | 
            +
                  if File.exist?(INDEX_FILE)
         | 
| 11 | 
            +
                    verbose "loading index from #{INDEX_FILE}"
         | 
| 12 | 
            +
                    @hash = YAML::load_file(INDEX_FILE)
         | 
| 13 | 
            +
                    return unless outdated?
         | 
| 14 | 
            +
                  end
         | 
| 33 15 |  | 
| 34 | 
            -
             | 
| 35 | 
            -
             | 
| 16 | 
            +
                  build!
         | 
| 17 | 
            +
                end
         | 
| 36 18 |  | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
                          @hash["artists"][artist]["albums"][album]["deep-songs"] << Song.new(file)
         | 
| 40 | 
            -
                        end
         | 
| 41 | 
            -
                      end
         | 
| 19 | 
            +
                def build!
         | 
| 20 | 
            +
                  @hash = build_index_hash!
         | 
| 42 21 |  | 
| 43 | 
            -
             | 
| 44 | 
            -
                      @hash["artists"][artist]["albums"][album]["deep-songs"].sort_by!(&:track)
         | 
| 45 | 
            -
                    end
         | 
| 46 | 
            -
                  end
         | 
| 22 | 
            +
                  File.open(INDEX_FILE, "w") { |io| io.write @hash.to_yaml }
         | 
| 47 23 | 
             
                end
         | 
| 48 24 |  | 
| 49 25 | 
             
                def deep?
         | 
| 50 | 
            -
                   | 
| 26 | 
            +
                  deep
         | 
| 51 27 | 
             
                end
         | 
| 52 28 |  | 
| 53 29 | 
             
                def timestamp
         | 
| 54 30 | 
             
                  @hash["timestamp"]
         | 
| 55 31 | 
             
                end
         | 
| 56 32 |  | 
| 33 | 
            +
                def outdated?
         | 
| 34 | 
            +
                  Time.now.to_i - timestamp >= Config.index_autobuild
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
             | 
| 57 37 | 
             
                def artists
         | 
| 58 38 | 
             
                  @hash["artists"].keys
         | 
| 59 39 | 
             
                end
         | 
| @@ -103,5 +83,45 @@ module Muzak | |
| 103 83 | 
             
                    []
         | 
| 104 84 | 
             
                  end
         | 
| 105 85 | 
             
                end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
                private
         | 
| 88 | 
            +
             | 
| 89 | 
            +
                def build_index_hash!
         | 
| 90 | 
            +
                  index_hash = {
         | 
| 91 | 
            +
                    "timestamp" => Time.now.to_i,
         | 
| 92 | 
            +
                    "artists" => {},
         | 
| 93 | 
            +
                    "deep" => deep
         | 
| 94 | 
            +
                  }
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                  Dir.entries(tree).each do |artist|
         | 
| 97 | 
            +
                    next unless File.directory?(File.join(tree, artist))
         | 
| 98 | 
            +
                    next if artist.start_with?(".")
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                    index_hash["artists"][artist] = {}
         | 
| 101 | 
            +
                    index_hash["artists"][artist]["albums"] = {}
         | 
| 102 | 
            +
             | 
| 103 | 
            +
                    Dir.entries(File.join(tree, artist)).each do |album|
         | 
| 104 | 
            +
                      next if album.start_with?(".")
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                      index_hash["artists"][artist]["albums"][album] = {}
         | 
| 107 | 
            +
                      index_hash["artists"][artist]["albums"][album]["songs"] = []
         | 
| 108 | 
            +
                      index_hash["artists"][artist]["albums"][album]["deep-songs"] = []
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                      Dir.glob(File.join(tree, artist, album, "**")) do |file|
         | 
| 111 | 
            +
                        index_hash["artists"][artist]["albums"][album]["cover"] = file if album_art?(file)
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                        if music?(file)
         | 
| 114 | 
            +
                          index_hash["artists"][artist]["albums"][album]["songs"] << file
         | 
| 115 | 
            +
                          index_hash["artists"][artist]["albums"][album]["deep-songs"] << Song.new(file)
         | 
| 116 | 
            +
                        end
         | 
| 117 | 
            +
                      end
         | 
| 118 | 
            +
             | 
| 119 | 
            +
                      index_hash["artists"][artist]["albums"][album]["songs"].sort!
         | 
| 120 | 
            +
                      index_hash["artists"][artist]["albums"][album]["deep-songs"].sort_by!(&:track)
         | 
| 121 | 
            +
                    end
         | 
| 122 | 
            +
                  end
         | 
| 123 | 
            +
             | 
| 124 | 
            +
                  index_hash
         | 
| 125 | 
            +
                end
         | 
| 106 126 | 
             
              end
         | 
| 107 127 | 
             
            end
         | 
    
        data/lib/muzak/instance.rb
    CHANGED
    
    | @@ -12,34 +12,29 @@ module Muzak | |
| 12 12 | 
             
                  help
         | 
| 13 13 | 
             
                end
         | 
| 14 14 |  | 
| 15 | 
            -
                attr_reader : | 
| 15 | 
            +
                attr_reader :index, :player, :plugins, :playlists
         | 
| 16 16 |  | 
| 17 17 | 
             
                def initialize(opts = {})
         | 
| 18 18 | 
             
                  $debug = opts[:debug]
         | 
| 19 19 | 
             
                  $verbose = opts[:verbose]
         | 
| 20 20 |  | 
| 21 | 
            -
                   | 
| 21 | 
            +
                  verbose "muzak is starting..."
         | 
| 22 22 |  | 
| 23 | 
            -
                   | 
| 24 | 
            -
                  index_load
         | 
| 23 | 
            +
                  @index = Index.new(Config.music, deep: Config.deep_index)
         | 
| 25 24 |  | 
| 26 25 | 
             
                  @player = Player::PLAYER_MAP[Config.player].new(self)
         | 
| 27 26 |  | 
| 28 | 
            -
                  @plugins =  | 
| 27 | 
            +
                  @plugins = Plugin.load_plugins!
         | 
| 29 28 |  | 
| 30 | 
            -
                   | 
| 31 | 
            -
                  enqueue_playlist Config.autoplay if Config.autoplay
         | 
| 32 | 
            -
                end
         | 
| 29 | 
            +
                  @playlists = Playlist.load_playlists!
         | 
| 33 30 |  | 
| 34 | 
            -
             | 
| 35 | 
            -
                  pks = Plugin.plugin_classes.select { |pk| Config.plugin? pk.plugin_name }
         | 
| 36 | 
            -
                  pks.map { |pk| pk.new(self) }
         | 
| 31 | 
            +
                  enqueue_playlist Config.autoplay if Config.autoplay
         | 
| 37 32 | 
             
                end
         | 
| 38 33 |  | 
| 39 34 | 
             
                def event(type, *args)
         | 
| 40 35 | 
             
                  return unless PLUGIN_EVENTS.include?(type)
         | 
| 41 36 |  | 
| 42 | 
            -
                   | 
| 37 | 
            +
                  plugins.each do |plugin|
         | 
| 43 38 | 
             
                    Thread.new do
         | 
| 44 39 | 
             
                      plugin.send(type, *args)
         | 
| 45 40 | 
             
                    end.join
         | 
    
        data/lib/muzak/playlist.rb
    CHANGED
    
    | @@ -22,6 +22,17 @@ module Muzak | |
| 22 22 | 
             
                  end
         | 
| 23 23 | 
             
                end
         | 
| 24 24 |  | 
| 25 | 
            +
                def self.load_playlists!
         | 
| 26 | 
            +
                  playlists = {}
         | 
| 27 | 
            +
                  playlists.default_proc = proc { |h, k| h[k] = Playlist.new(k) }
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                  playlist_names.each do |pname|
         | 
| 30 | 
            +
                    playlists[pname] = Playlist.new(pname)
         | 
| 31 | 
            +
                  end
         | 
| 32 | 
            +
             | 
| 33 | 
            +
                  playlists
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 25 36 | 
             
                def initialize(pname)
         | 
| 26 37 | 
             
                  @filename = self.class.path_for pname
         | 
| 27 38 |  | 
    
        data/lib/muzak/plugin.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: muzak
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.10
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - William Woodruff
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2016-12- | 
| 11 | 
            +
            date: 2016-12-15 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: taglib-ruby
         | 
| @@ -83,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 83 83 | 
             
                  version: '0'
         | 
| 84 84 | 
             
            requirements: []
         | 
| 85 85 | 
             
            rubyforge_project: 
         | 
| 86 | 
            -
            rubygems_version: 2.5. | 
| 86 | 
            +
            rubygems_version: 2.5.2
         | 
| 87 87 | 
             
            signing_key: 
         | 
| 88 88 | 
             
            specification_version: 4
         | 
| 89 89 | 
             
            summary: muzak - A metamusic player.
         |