muzak 0.0.6 → 0.0.7
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/bin/muzak +3 -1
- data/bin/muzakd +5 -6
- data/lib/muzak/cmd/config.rb +2 -1
- data/lib/muzak/cmd/meta.rb +0 -1
- data/lib/muzak/cmd/playlist.rb +18 -41
- data/lib/muzak/const.rb +1 -1
- data/lib/muzak/player/mpv.rb +5 -1
- data/lib/muzak/playlist.rb +40 -17
- data/lib/muzak/song.rb +1 -1
- 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: 9a2a198cce10bc3f66a9c3c532433f30c4264b30
|
4
|
+
data.tar.gz: 2e021ffbcbc1d2b16696f010690389c1854b5890
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6fe05e1fb8c85576a9b270144447f45e6c03d7b499f6569290f42c047a878d58c637ae36b8adcad3c8176c048136670ecf1079c6ccc4fa0dd2b09e67c77f17e2
|
7
|
+
data.tar.gz: cb384c8a927cd5ef336f6eb113c115d7a1d5a7f6e1adf66c16de2fe1559b056192b51d7f63f23478a01ffcf55b9cc67a57cb05981b272b2564906a71cabaadff
|
data/bin/muzak
CHANGED
@@ -45,5 +45,7 @@ trap("INT", "SIG_IGN")
|
|
45
45
|
while line = Readline.readline("muzak> ", true)
|
46
46
|
cmd_argv = Shellwords.split(line) rescue next
|
47
47
|
next if cmd_argv.empty? || cmd_argv.any?(&:empty?)
|
48
|
-
|
48
|
+
cmd = cmd_argv.shift
|
49
|
+
muzak.command cmd, *cmd_argv
|
50
|
+
break if cmd == "quit"
|
49
51
|
end
|
data/bin/muzakd
CHANGED
@@ -17,15 +17,14 @@ fifo_path = File.join(Muzak::CONFIG_DIR, "muzak.fifo")
|
|
17
17
|
File.delete(fifo_path) if File.exist?(fifo_path) # just in case a previous session died
|
18
18
|
File.mkfifo(fifo_path)
|
19
19
|
|
20
|
-
File.open(fifo_path, "r") do |fifo|
|
20
|
+
File.open(fifo_path, "r+") do |fifo|
|
21
21
|
loop do
|
22
22
|
cmd_argv = Shellwords.split(fifo.readline) rescue next
|
23
23
|
next if cmd_argv.empty? || cmd_argv.any?(&:empty?)
|
24
|
-
|
24
|
+
cmd = cmd_argv.shift
|
25
|
+
muzak.command cmd, *cmd_argv
|
26
|
+
break if cmd == "quit"
|
25
27
|
end
|
26
28
|
end
|
27
29
|
|
28
|
-
|
29
|
-
at_exit do
|
30
|
-
File.delete(fifo_path) if File.exist?(fifo_path)
|
31
|
-
end
|
30
|
+
File.delete(fifo_path) if File.exist?(fifo_path)
|
data/lib/muzak/cmd/config.rb
CHANGED
data/lib/muzak/cmd/meta.rb
CHANGED
data/lib/muzak/cmd/playlist.rb
CHANGED
@@ -1,18 +1,10 @@
|
|
1
1
|
module Muzak
|
2
2
|
module Cmd
|
3
|
-
def _playlist_file(pname)
|
4
|
-
File.join(PLAYLIST_DIR, pname) + ".yml"
|
5
|
-
end
|
6
|
-
|
7
|
-
def _playlist_available?(pname)
|
8
|
-
File.exist?(_playlist_file(pname))
|
9
|
-
end
|
10
|
-
|
11
3
|
def _playlist_loaded?
|
12
4
|
!!@playlist
|
13
5
|
end
|
14
6
|
|
15
|
-
def list_playlists
|
7
|
+
def list_playlists(*args)
|
16
8
|
Playlist.playlist_names.each do |playlist|
|
17
9
|
info playlist
|
18
10
|
end
|
@@ -22,14 +14,8 @@ module Muzak
|
|
22
14
|
fail_arity(args, 1)
|
23
15
|
pname = args.shift
|
24
16
|
|
25
|
-
|
26
|
-
|
27
|
-
@playlist = Playlist.load_playlist(_playlist_file(pname))
|
28
|
-
else
|
29
|
-
info "creating playlist '#{pname}'"
|
30
|
-
@playlist = Playlist.new(pname, [])
|
31
|
-
playlist_sync
|
32
|
-
end
|
17
|
+
info "loading playlist '#{pname}'"
|
18
|
+
@playlist = Playlist.new(pname)
|
33
19
|
|
34
20
|
event :playlist_loaded, @playlist
|
35
21
|
end
|
@@ -40,21 +26,11 @@ module Muzak
|
|
40
26
|
|
41
27
|
debug "deleting playist '#{pname}'"
|
42
28
|
|
43
|
-
|
29
|
+
Playlist.delete!(pname)
|
44
30
|
@playlist = nil
|
45
31
|
end
|
46
32
|
|
47
|
-
def
|
48
|
-
return unless _playlist_loaded?
|
49
|
-
fail_arity(args, 0)
|
50
|
-
|
51
|
-
debug "syncing playlist '#{@playlist.name}'"
|
52
|
-
|
53
|
-
Dir.mkdir(PLAYLIST_DIR) unless Dir.exist?(PLAYLIST_DIR)
|
54
|
-
File.open(_playlist_file(@playlist.name), "w") { |io| io.write @playlist.to_hash.to_yaml }
|
55
|
-
end
|
56
|
-
|
57
|
-
def enqueue_playlist
|
33
|
+
def enqueue_playlist(*args)
|
58
34
|
return unless _playlist_loaded?
|
59
35
|
|
60
36
|
@player.enqueue_playlist(@playlist)
|
@@ -70,33 +46,34 @@ module Muzak
|
|
70
46
|
album = @index.albums[album_name]
|
71
47
|
return if album.nil?
|
72
48
|
|
73
|
-
|
49
|
+
@playlist.add(album.songs)
|
50
|
+
end
|
51
|
+
|
52
|
+
def playlist_add_artist(*args)
|
53
|
+
return unless _playlist_loaded?
|
54
|
+
|
55
|
+
artist = args.join(" ")
|
56
|
+
return if artist.nil?
|
74
57
|
|
75
|
-
|
58
|
+
@playlist.add(@index.songs_by(artist))
|
76
59
|
end
|
77
60
|
|
78
|
-
def playlist_add_current
|
61
|
+
def playlist_add_current(*args)
|
79
62
|
return unless @player.running? && _playlist_loaded?
|
80
63
|
|
81
64
|
@playlist.add @player.now_playing
|
82
|
-
|
83
|
-
playlist_sync
|
84
65
|
end
|
85
66
|
|
86
|
-
def playlist_del_current
|
67
|
+
def playlist_del_current(*args)
|
87
68
|
return unless @player.running? && _playlist_loaded?
|
88
69
|
|
89
|
-
@playlist.delete
|
90
|
-
|
91
|
-
playlist_sync
|
70
|
+
@playlist.delete @player.now_playing
|
92
71
|
end
|
93
72
|
|
94
|
-
def playlist_shuffle
|
73
|
+
def playlist_shuffle(*args)
|
95
74
|
return unless _playlist_loaded?
|
96
75
|
|
97
76
|
@playlist.shuffle!
|
98
|
-
|
99
|
-
playlist_sync
|
100
77
|
end
|
101
78
|
end
|
102
79
|
end
|
data/lib/muzak/const.rb
CHANGED
data/lib/muzak/player/mpv.rb
CHANGED
@@ -22,6 +22,10 @@ module Muzak
|
|
22
22
|
@sock_path = Dir::Tmpname.make_tmpname("/tmp/mpv", ".sock")
|
23
23
|
mpv_args = [
|
24
24
|
"--idle",
|
25
|
+
# if i get around to separating album art from playback,
|
26
|
+
# these two flags disable mpv's video output entirely
|
27
|
+
# "--no-force-window",
|
28
|
+
# "--no-video",
|
25
29
|
"--no-osc",
|
26
30
|
"--no-osd-bar",
|
27
31
|
"--no-input-default-bindings",
|
@@ -151,7 +155,7 @@ module Muzak
|
|
151
155
|
|
152
156
|
def load_song(song, art)
|
153
157
|
cmds = ["loadfile", song.path, "append-play"]
|
154
|
-
cmds << "external-file
|
158
|
+
cmds << "external-file=\"#{art}\"" if art
|
155
159
|
command *cmds
|
156
160
|
end
|
157
161
|
|
data/lib/muzak/playlist.rb
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
module Muzak
|
2
2
|
class Playlist
|
3
|
-
attr_accessor :
|
3
|
+
attr_accessor :filename, :songs
|
4
|
+
|
5
|
+
def self.path_for(pname)
|
6
|
+
File.join(PLAYLIST_DIR, pname) + ".yml"
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.exist?(pname)
|
10
|
+
File.exist?(path_for(pname))
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.delete!(pname)
|
14
|
+
File.delete(path_for(pname)) if exist? pname
|
15
|
+
end
|
4
16
|
|
5
17
|
def self.playlist_names
|
6
18
|
Dir.entries(PLAYLIST_DIR).reject do |ent|
|
@@ -10,36 +22,47 @@ module Muzak
|
|
10
22
|
end
|
11
23
|
end
|
12
24
|
|
13
|
-
def
|
14
|
-
|
15
|
-
playlist_hash = YAML.load_file(path)
|
16
|
-
|
17
|
-
instance.name = File.basename(path, File.extname(path))
|
18
|
-
instance.songs = playlist_hash["songs"]
|
25
|
+
def initialize(pname)
|
26
|
+
@filename = self.class.path_for pname
|
19
27
|
|
20
|
-
|
28
|
+
if File.exist?(@filename)
|
29
|
+
phash = YAML.load_file(@filename)
|
30
|
+
@songs = phash["songs"]
|
31
|
+
else
|
32
|
+
@songs = []
|
33
|
+
end
|
21
34
|
end
|
22
35
|
|
23
|
-
def
|
24
|
-
@
|
25
|
-
@songs = songs
|
36
|
+
def name
|
37
|
+
File.basename(@filename, File.extname(@filename))
|
26
38
|
end
|
27
39
|
|
28
|
-
def add(
|
29
|
-
|
30
|
-
|
40
|
+
def add(songs)
|
41
|
+
# coerce a single song into an array
|
42
|
+
[*songs].each do |song|
|
43
|
+
next if @songs.include?(song)
|
44
|
+
@songs << song
|
45
|
+
end
|
46
|
+
|
47
|
+
sync!
|
31
48
|
end
|
32
49
|
|
33
|
-
def delete(
|
34
|
-
@songs.delete(song)
|
50
|
+
def delete(songs)
|
51
|
+
[*songs].each { |song| @songs.delete(song) }
|
52
|
+
|
53
|
+
sync!
|
35
54
|
end
|
36
55
|
|
37
56
|
def shuffle!
|
38
57
|
@songs.shuffle!
|
39
58
|
end
|
40
59
|
|
60
|
+
def sync!
|
61
|
+
File.open(@filename, "w") { |io| io.write to_hash.to_yaml }
|
62
|
+
end
|
63
|
+
|
41
64
|
def to_hash
|
42
|
-
{ "songs" => songs }
|
65
|
+
{ "songs" => @songs }
|
43
66
|
end
|
44
67
|
end
|
45
68
|
end
|
data/lib/muzak/song.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.7
|
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-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: taglib-ruby
|