gtk2mp3 1.5.0 → 2.5.191217
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/README.md +3 -0
- data/bin/gtk2mp3 +17 -15
- data/data/VERSION +1 -1
- data/lib/gtk2mp3.rb +25 -11
- data/lib/gtk2mp3/config.rb +1 -0
- data/lib/gtk2mp3/gui.rb +18 -17
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 44f275e94c4638c8571bc8f08aff3b3530fb880fdc618ff5db7d3127d74be392
|
|
4
|
+
data.tar.gz: ecb239912c273b285001c0ad0794543647703d4d5d7760ecd66dda86eb694f83
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f8396b6d71a498084af8a5fd1025974a3cccbb100ff87e4a64de8332b6b5bc33cf84a7039de2dbf356e6c67576a9d1d9209b04df609205e6ec775539d3a05377
|
|
7
|
+
data.tar.gz: 1c01f0c6edca39f25258b261b983fc340ae41434c65369273b87872eecefb93dbb536c8fd4ef1cae051e0de29a048c0c6deb6b6bad3e9a9c5c85e8c65e4fa823
|
data/README.md
CHANGED
|
@@ -24,8 +24,11 @@ A "Next!" button gui for MPD/MPC.
|
|
|
24
24
|
-h --help
|
|
25
25
|
-v --version
|
|
26
26
|
--noinit Don't reset the playlist
|
|
27
|
+
-V --verbose
|
|
27
28
|
# Notes #
|
|
28
29
|
# Signal USR1 will trigger Next! song.
|
|
30
|
+
# Signal USR2 will trigger Stop song.
|
|
31
|
+
# Signal TERM will quit.
|
|
29
32
|
# Requires MPD/MPC.
|
|
30
33
|
# See https://www.musicpd.org/clients/mpc/.
|
|
31
34
|
|
data/bin/gtk2mp3
CHANGED
|
@@ -1,41 +1,43 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
require 'help_parser'
|
|
3
|
-
require 'gtk2mp3'
|
|
4
3
|
|
|
5
|
-
OPTIONS = HelpParser[
|
|
4
|
+
OPTIONS = HelpParser['2.5.191217', <<HELP]
|
|
6
5
|
Usage:
|
|
7
6
|
gtk2mp3 [:options+]
|
|
8
7
|
Options:
|
|
9
8
|
-h --help
|
|
10
9
|
-v --version
|
|
11
10
|
--noinit \tDon't reset the playlist
|
|
11
|
+
-V --verbose
|
|
12
12
|
# Notes #
|
|
13
13
|
# Signal USR1 will trigger Next! song.
|
|
14
|
+
# Signal USR2 will trigger Stop song.
|
|
15
|
+
# Signal TERM will quit.
|
|
14
16
|
# Requires MPD/MPC.
|
|
15
17
|
# See https://www.musicpd.org/clients/mpc/.
|
|
16
18
|
HELP
|
|
17
19
|
|
|
20
|
+
TO_DEV_NULL = OPTIONS.verbose? ? '' : '> /dev/null'
|
|
18
21
|
unless OPTIONS.noinit?
|
|
19
|
-
|
|
20
|
-
|
|
22
|
+
# check if mpd is already running
|
|
23
|
+
unless system "ps -C mpd #{TO_DEV_NULL}"
|
|
24
|
+
unless system "mpd #{TO_DEV_NULL}"
|
|
21
25
|
$stderr.puts 'Could not start the mpd daemon.'
|
|
22
26
|
exit 69 # EX_UNAVAILABLE
|
|
23
27
|
end
|
|
24
28
|
end
|
|
25
|
-
unless system "mpc --wait update" and
|
|
26
|
-
system "mpc clear" and
|
|
27
|
-
system "mpc ls | mpc add"
|
|
28
|
-
system "mpc consume off" and
|
|
29
|
-
system "mpc repeat off" and
|
|
30
|
-
system "mpc random on" and
|
|
31
|
-
system "mpc single on"
|
|
29
|
+
unless system "mpc --wait update #{TO_DEV_NULL}" and
|
|
30
|
+
system "mpc clear #{TO_DEV_NULL}" and
|
|
31
|
+
system "mpc ls | mpc add" and
|
|
32
|
+
system "mpc consume off #{TO_DEV_NULL}" and
|
|
33
|
+
system "mpc repeat off #{TO_DEV_NULL}" and
|
|
34
|
+
system "mpc random on #{TO_DEV_NULL}" and
|
|
35
|
+
system "mpc single on #{TO_DEV_NULL}"
|
|
32
36
|
$stderr.puts 'Could not initialize mpd\'s playlist'
|
|
33
37
|
exit 76 # EX_PROTOCOL
|
|
34
38
|
end
|
|
35
39
|
end
|
|
36
40
|
|
|
37
|
-
|
|
38
|
-
Signal.trap
|
|
39
|
-
Gtk2Mp3.next!(true)
|
|
40
|
-
end
|
|
41
|
+
require 'gtk2mp3'
|
|
42
|
+
[:USR1,:USR2,:TERM].each{|_|Signal.trap(_){Gtk2Mp3.signal!(_)}}
|
|
41
43
|
Gtk3App.main(Gtk2Mp3)
|
data/data/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
2.5.191217
|
data/lib/gtk2mp3.rb
CHANGED
|
@@ -1,18 +1,32 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
require 'json'
|
|
2
|
+
require 'shellwords'
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
4
|
+
# This is a Gtk3App.
|
|
5
|
+
require 'gtk3app'
|
|
6
|
+
module Gtk3App
|
|
7
|
+
# Monkey patching a missing feature
|
|
8
|
+
def Gtk3App.quit!
|
|
9
|
+
@program.quit!
|
|
10
|
+
end
|
|
11
|
+
end
|
|
7
12
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
require 'shellwords'
|
|
13
|
+
module Gtk2Mp3
|
|
14
|
+
VERSION = '2.5.191217'
|
|
11
15
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
16
|
+
@signal = nil
|
|
17
|
+
def Gtk2Mp3.signal!(q=nil)
|
|
18
|
+
if q
|
|
19
|
+
@signal = q
|
|
20
|
+
elsif @signal
|
|
21
|
+
signal,@signal = @signal,nil
|
|
22
|
+
return signal
|
|
23
|
+
end
|
|
24
|
+
return nil
|
|
15
25
|
end
|
|
26
|
+
|
|
27
|
+
# This Gem.
|
|
28
|
+
require_relative 'gtk2mp3/config.rb'
|
|
29
|
+
require_relative 'gtk2mp3/gui.rb'
|
|
16
30
|
end
|
|
17
31
|
|
|
18
32
|
# Requires:
|
data/lib/gtk2mp3/config.rb
CHANGED
data/lib/gtk2mp3/gui.rb
CHANGED
|
@@ -3,17 +3,6 @@ module Gtk2Mp3
|
|
|
3
3
|
GUI.new(program)
|
|
4
4
|
end
|
|
5
5
|
|
|
6
|
-
@next = false
|
|
7
|
-
def Gtk2Mp3.next!(q=false)
|
|
8
|
-
if q
|
|
9
|
-
@next = true
|
|
10
|
-
elsif @next
|
|
11
|
-
@next = false
|
|
12
|
-
return true
|
|
13
|
-
end
|
|
14
|
-
return false
|
|
15
|
-
end
|
|
16
|
-
|
|
17
6
|
class GUI
|
|
18
7
|
MUTEX = Mutex.new
|
|
19
8
|
ID = lambda{|_|File.basename(_.strip.split(/\n/).first.strip,'.*')}
|
|
@@ -31,9 +20,12 @@ module Gtk2Mp3
|
|
|
31
20
|
end
|
|
32
21
|
|
|
33
22
|
def next_song
|
|
34
|
-
|
|
23
|
+
id = random_song
|
|
24
|
+
@label.text = @playing = ID[`mpc -f '%file%' searchplay filename #{id.shellescape}`]
|
|
35
25
|
end
|
|
36
26
|
|
|
27
|
+
# decrementing count makes the id
|
|
28
|
+
# more likely to be played
|
|
37
29
|
def down(id)
|
|
38
30
|
if count=@db[id]
|
|
39
31
|
count -= 1
|
|
@@ -45,6 +37,8 @@ module Gtk2Mp3
|
|
|
45
37
|
end
|
|
46
38
|
end
|
|
47
39
|
|
|
40
|
+
# incrementing count makes the id
|
|
41
|
+
# less likely to be played
|
|
48
42
|
def up(id)
|
|
49
43
|
@db[id] = @db[id].to_i+1
|
|
50
44
|
end
|
|
@@ -62,7 +56,7 @@ module Gtk2Mp3
|
|
|
62
56
|
|
|
63
57
|
def mpc_idle_player
|
|
64
58
|
loop do
|
|
65
|
-
system
|
|
59
|
+
system "mpc idle player #{TO_DEV_NULL}"
|
|
66
60
|
MUTEX.synchronize{db_update}
|
|
67
61
|
end
|
|
68
62
|
end
|
|
@@ -77,7 +71,7 @@ module Gtk2Mp3
|
|
|
77
71
|
def stop_song!
|
|
78
72
|
MUTEX.synchronize do
|
|
79
73
|
@skipped = @playing = @played = nil
|
|
80
|
-
system
|
|
74
|
+
system "mpc stop #{TO_DEV_NULL}"
|
|
81
75
|
end
|
|
82
76
|
end
|
|
83
77
|
|
|
@@ -88,7 +82,7 @@ module Gtk2Mp3
|
|
|
88
82
|
hbox = Such::Box.new(vbox, :HBOX)
|
|
89
83
|
Such::Button.new(hbox, :next_button!){next_song!} if CONFIG[:BUTTONS].include?(:next_button!)
|
|
90
84
|
Such::Button.new(hbox, :stop_button!){stop_song!} if CONFIG[:BUTTONS].include?(:stop_button!)
|
|
91
|
-
@label = Such::Label.new(vbox)
|
|
85
|
+
@label = Such::Label.new(vbox, :id_label!)
|
|
92
86
|
menu.each{|_|_.destroy if _.key==:fs! or _.key==:help!}
|
|
93
87
|
minime.each{|_|_.destroy}
|
|
94
88
|
minime.add_menu_item(:stop_item!){stop_song!} if CONFIG[:ITEMS].include?(:stop_item!)
|
|
@@ -111,8 +105,15 @@ module Gtk2Mp3
|
|
|
111
105
|
window.show_all
|
|
112
106
|
|
|
113
107
|
# Handle Signal.trap
|
|
114
|
-
GLib::Timeout.add(
|
|
115
|
-
|
|
108
|
+
GLib::Timeout.add(500) do
|
|
109
|
+
case Gtk2Mp3.signal!
|
|
110
|
+
when :USR1
|
|
111
|
+
next_song!
|
|
112
|
+
when :USR2
|
|
113
|
+
stop_song!
|
|
114
|
+
when :TERM
|
|
115
|
+
Gtk3App.quit!
|
|
116
|
+
end
|
|
116
117
|
true # repeat
|
|
117
118
|
end
|
|
118
119
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gtk2mp3
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.5.191217
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- carlosjhr64
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-12-
|
|
11
|
+
date: 2019-12-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: help_parser
|