gtk2mp3 1.5.0 → 3.1.210926

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b4f79f5bc2924956a93650f0a670b8bc7b488d7cc569ee791f2917ba31e18bc1
4
- data.tar.gz: 66280432b988ad1434b31d6f05c5b7ea170b337c1e2ba65a981ee7e3d39a612a
3
+ metadata.gz: f7c165134edc00cdf60e79473c1c85808eeb405719c81daa096b8ace59af8b83
4
+ data.tar.gz: d909d47246ceaf95959dbde7e30ea4e63de94e54d5f7c0852f5ffa449ffff5c9
5
5
  SHA512:
6
- metadata.gz: 01d6edc0a0be541ca19846b33073e4c9e5691435888c2c898315ab8686e55eadcca7193d4a01a25de0d5ac1029182bbecdb2e6737362e7d700ef2eb38f50d95c
7
- data.tar.gz: 409c5d5283188ca8c2e5229b0fdf585290c88564245b3b070277777fb5eed4c955e5aa63b58e82fc72fe692a5a0f321e655068e271ca11b761c31fc34efb0ecc
6
+ metadata.gz: f0c7bc19d1a82272bbd644e8a3fc3592b00053477e5fafefd4bffebca2e6904fd178267a3780e35aa2ed776dea909593f4e9ad2daaef60972117586c80cc54b9
7
+ data.tar.gz: ddb29e99f9c23a0cd710c656744afaf95180e08fa70f542a87c698a56777ec9f9323e3b1bf952a9ef70aebc55e66faaa5e5f4e370a5598b8c6549a6dd768a036
data/README.md CHANGED
@@ -1,31 +1,63 @@
1
- # Gtk2Mp3 I: Posser
1
+ # Gtk2Mp3
2
2
 
3
+ * [VERSION 3.1.210926](https://github.com/carlosjhr64/gtk2mp3/releases)
3
4
  * [github](https://www.github.com/carlosjhr64/gtk2mp3)
4
5
  * [rubygems](https://rubygems.org/gems/gtk2mp3)
5
- * [MPD/MPC](https://www.musicpd.org/)
6
6
 
7
7
  ## DESCRIPTION:
8
8
 
9
- A "Next!" button gui for MPD/MPC.
9
+ A "Next!" button gui for [MPD/MPC](https://www.musicpd.org/).
10
10
 
11
11
  ## SYNOPSIS
12
-
13
- gtk2mp3
14
-
12
+ ```console
13
+ $ gtk2mp3
14
+ ```
15
15
  ## INSTALL
16
-
17
- $ gem install gtk2mp3
18
-
16
+ ```console
17
+ $ gem install gtk2mp3
18
+ ```
19
19
  ## HELP
20
-
21
- Usage:
22
- gtk2mp3 [:options+]
23
- Options:
24
- -h --help
25
- -v --version
26
- --noinit Don't reset the playlist
27
- # Notes #
28
- # Signal USR1 will trigger Next! song.
29
- # Requires MPD/MPC.
30
- # See https://www.musicpd.org/clients/mpc/.
31
-
20
+ ```console
21
+ $ gtk2mp3 --help
22
+ Usage:
23
+ gtk2mp3 [:options+]
24
+ Options:
25
+ -h --help
26
+ -v --version
27
+ --minime Real minime
28
+ --notoggle Minime wont toggle decorated and keep above
29
+ --notdecorated Dont decorate window
30
+ --update Updates and sets playlist to the entire collection
31
+ # Note:
32
+ # Requires MPD/MPC.
33
+ # See https://www.musicpd.org/clients/mpc/.
34
+ ```
35
+ ## MORE:
36
+
37
+ You can add your own custom buttons.
38
+ See my [Picard](lib/gtk2mp3/picard_button.rb) button hook.
39
+
40
+ ## LICENSE:
41
+
42
+ (The MIT License)
43
+
44
+ Copyright (c) 2021 CarlosJHR64
45
+
46
+ Permission is hereby granted, free of charge, to any person obtaining
47
+ a copy of this software and associated documentation files (the
48
+ 'Software'), to deal in the Software without restriction, including
49
+ without limitation the rights to use, copy, modify, merge, publish,
50
+ distribute, sublicense, and/or sell copies of the Software, and to
51
+ permit persons to whom the Software is furnished to do so, subject to
52
+ the following conditions:
53
+
54
+ The above copyright notice and this permission notice shall be
55
+ included in all copies or substantial portions of the Software.
56
+
57
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
58
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
59
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
60
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
61
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
62
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
63
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/bin/gtk2mp3 CHANGED
@@ -1,41 +1,16 @@
1
1
  #!/usr/bin/env ruby
2
- require 'help_parser'
3
2
  require 'gtk2mp3'
4
-
5
- OPTIONS = HelpParser[Gtk2Mp3::VERSION, <<HELP]
6
- Usage:
7
- gtk2mp3 [:options+]
8
- Options:
9
- -h --help
10
- -v --version
11
- --noinit \tDon't reset the playlist
12
- # Notes #
13
- # Signal USR1 will trigger Next! song.
14
- # Requires MPD/MPC.
15
- # See https://www.musicpd.org/clients/mpc/.
16
- HELP
17
-
18
- unless OPTIONS.noinit?
19
- unless system 'ps -C mpd'
20
- unless system 'mpd'
21
- $stderr.puts 'Could not start the mpd daemon.'
22
- exit 69 # EX_UNAVAILABLE
3
+ class Gtk2Mp3
4
+ begin
5
+ case ARGV
6
+ in [/^(-v)|(--version)$/]
7
+ puts VERSION
8
+ in [/^(-h)|(--help)$/]
9
+ puts HELP
10
+ else
11
+ Gtk2Mp3.init
12
+ Gtk2Mp3.run
23
13
  end
24
14
  end
25
- unless system "mpc --wait update" and
26
- system "mpc clear" and
27
- system "mpc ls | mpc add" and
28
- system "mpc consume off" and
29
- system "mpc repeat off" and
30
- system "mpc random on" and
31
- system "mpc single on"
32
- $stderr.puts 'Could not initialize mpd\'s playlist'
33
- exit 76 # EX_PROTOCOL
34
- end
35
- end
36
-
37
- Gtk2Mp3.requires
38
- Signal.trap :USR1 do
39
- Gtk2Mp3.next!(true)
40
15
  end
41
- Gtk3App.main(Gtk2Mp3)
16
+ exit
@@ -1,35 +1,40 @@
1
- module Gtk2Mp3
2
- using Rafini::String
3
- APPDIR = File.dirname File.dirname __dir__
1
+ class Gtk2Mp3
2
+ using Rafini::String # for semantic
3
+ extend Rafini::Empty # for s0,a0,h0
4
+
4
5
  CONFIG = {
5
- PLAYED: 120,
6
- DBM: "#{XDG['CACHE']}/gtk3app/gtk2mp3/dbm.json",
6
+ MonkeyPatch: s0,
7
7
  BUTTONS: [:next_button!, :stop_button!],
8
- ITEMS: [:next_item!, :stop_item!],
9
- thing: {
10
- HelpFile: 'https://github.com/carlosjhr64/gtk2mp3',
11
- Logo: "#{XDG['DATA']}/gtk3app/gtk2mp3/logo.png",
12
- window: {
13
- set_title: 'Gtk2Mp3',
14
- set_default_size: [100,60],
15
- set_window_position: :center,
16
- },
17
- NEXT: [label: 'Next!'],
18
- next_button!: [:NEXT, 'clicked'],
19
- next_item!: [:NEXT, 'activate'],
20
- STOP: [label: 'Stop'],
21
- stop_button!: [:STOP, 'clicked'],
22
- stop_item!: [:STOP, 'activate'],
23
- VBOX: [:vertical],
24
- HBOX: [:horizontal],
25
- about_dialog: {
26
- set_program_name: 'Gtk2Mp3',
27
- set_version: VERSION.semantic(0..1),
28
- set_copyright: '(c) 2018 CarlosJHR64',
29
- set_comments: 'A MPD/MPC "Next!" Button',
30
- set_website: 'https://github.com/carlosjhr64/gtk2mp3',
31
- set_website_label: 'See it at GitHub!',
32
- },
33
- }
8
+
9
+ NEXT_BUTTON: [label: 'Next!'],
10
+ next_button: h0,
11
+ next_button!: [:NEXT_BUTTON, :next_button, 'clicked'],
12
+
13
+ STOP_BUTTON: [label: 'Stop'],
14
+ stop_button: h0,
15
+ stop_button!: [:STOP_BUTTON, :stop_button, 'clicked'],
16
+
17
+ ID_LABEL: a0,
18
+ id_label: {set_selectable: true},
19
+ id_label!: [:ID_LABEL, :id_label],
20
+
21
+ TOOLBOX: [:horizontal],
22
+ toolbox: h0,
23
+ toolbox!: [:TOOLBOX,:toolbox],
24
+
25
+ HelpFile: 'https://github.com/carlosjhr64/gtk2mp3',
26
+ Logo: "#{UserSpace::XDG['data']}/gtk3app/gtk2mp3/logo.png",
27
+ about_dialog: {
28
+ set_program_name: 'Gtk2Mp3',
29
+ set_version: VERSION.semantic(0..1),
30
+ set_copyright: '(c) 2021 CarlosJHR64',
31
+ set_comments: 'A MPD/MPC "Next!" Button',
32
+ set_website: 'https://github.com/carlosjhr64/gtk2mp3',
33
+ set_website_label: 'See it at GitHub!',
34
+ },
35
+
36
+ app_menu: {
37
+ add_menu_item: [:minime!, :about!, :quit!]
38
+ },
34
39
  }
35
40
  end
data/lib/gtk2mp3/gui.rb CHANGED
@@ -1,125 +1,27 @@
1
- module Gtk2Mp3
2
- def Gtk2Mp3.run(program)
3
- GUI.new(program)
1
+ class Gtk2Mp3
2
+ def set_label(text)
3
+ @label.text = text
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
6
+ def initialize(stage, toolbar, options, &block)
7
+ @toolbox = Such::Box.new toolbar, :toolbox!
8
+ CONFIG[:BUTTONS].each do |button|
9
+ Such::Button.new(@toolbox, button){block.call button}
13
10
  end
14
- return false
11
+ @label = Such::Label.new(stage, :id_label!)
12
+ build_logo_menu(block)
15
13
  end
16
14
 
17
- class GUI
18
- MUTEX = Mutex.new
19
- ID = lambda{|_|File.basename(_.strip.split(/\n/).first.strip,'.*')}
20
-
21
- def play?(id)
22
- rand(@db[id].to_i+1)==0
23
- end
24
-
25
- def random_song
26
- n = @list.length
27
- loop do
28
- id = @list[rand(n)]
29
- return id if play?(id)
30
- end
31
- end
32
-
33
- def next_song
34
- @label.text = @playing = ID[`mpc -f '%file%' searchplay filename #{random_song.shellescape}`]
35
- end
36
-
37
- def down(id)
38
- if count=@db[id]
39
- count -= 1
40
- if count>0
41
- @db[id] = count
42
- else
43
- @db.delete(id)
44
- end
45
- end
46
- end
47
-
48
- def up(id)
49
- @db[id] = @db[id].to_i+1
50
- end
51
-
52
- def db_update
53
- if @skipped
54
- up(@skipped) if Time.now - @time < CONFIG[:PLAYED]/2
55
- down(@skipped) if Time.now - @time > CONFIG[:PLAYED]
56
- elsif @played
57
- down(@played)
58
- next_song
59
- end
60
- @time,@played,@skipped = Time.now,@playing,nil
61
- end
62
-
63
- def mpc_idle_player
64
- loop do
65
- system 'mpc idle player'
66
- MUTEX.synchronize{db_update}
15
+ def build_logo_menu(block)
16
+ Gtk3App.logo_press_event do |button|
17
+ case button
18
+ when 1
19
+ block.call :next_button!
20
+ when 2
21
+ block.call :stop_button!
22
+ when 3
23
+ # Gtk3App's main menu
67
24
  end
68
25
  end
69
-
70
- def next_song!
71
- MUTEX.synchronize do
72
- @skipped = @playing
73
- next_song
74
- end
75
- end
76
-
77
- def stop_song!
78
- MUTEX.synchronize do
79
- @skipped = @playing = @played = nil
80
- system 'mpc stop'
81
- end
82
- end
83
-
84
- def initialize(program)
85
- # Build
86
- window,minime,menu = program.window,program.mini_menu,program.app_menu
87
- vbox = Such::Box.new(window, :VBOX)
88
- hbox = Such::Box.new(vbox, :HBOX)
89
- Such::Button.new(hbox, :next_button!){next_song!} if CONFIG[:BUTTONS].include?(:next_button!)
90
- Such::Button.new(hbox, :stop_button!){stop_song!} if CONFIG[:BUTTONS].include?(:stop_button!)
91
- @label = Such::Label.new(vbox)
92
- menu.each{|_|_.destroy if _.key==:fs! or _.key==:help!}
93
- minime.each{|_|_.destroy}
94
- minime.add_menu_item(:stop_item!){stop_song!} if CONFIG[:ITEMS].include?(:stop_item!)
95
- minime.add_menu_item(:next_item!){next_song!} if CONFIG[:ITEMS].include?(:next_item!)
96
-
97
- # Inits
98
- @db = File.exist?(_=CONFIG[:DBM]) ? JSON.parse(File.read(_)) : {}
99
- @list = `mpc listall`.lines.map{|_|ID[_]}.uniq
100
- # A fuzzy delete of possibly gone keys...
101
- @db.keys.each{|id| down(id) unless @list.include?(id)}
102
-
103
- # Run
104
- @skipped=@playing=nil
105
- next_song!
106
- @time,@played = Time.now,@playing
107
- Thread.new do
108
- sleep(1) # mpd needs a little time to settle
109
- mpc_idle_player
110
- end
111
- window.show_all
112
-
113
- # Handle Signal.trap
114
- GLib::Timeout.add(750) do
115
- next_song! if Gtk2Mp3.next!
116
- true # repeat
117
- end
118
- end
119
-
120
- def finalize
121
- stop_song!
122
- File.write(CONFIG[:DBM], JSON.pretty_generate(@db))
123
- end
124
26
  end
125
27
  end
@@ -0,0 +1,55 @@
1
+ class Gtk2Mp3
2
+ def Gtk2Mp3.system_mpd
3
+ # check if mpd is already running
4
+ unless system 'ps -C mpd'
5
+ unless system 'mpd'
6
+ $stderr.puts 'Could not start the mpd daemon.'
7
+ exit 69 # EX_UNAVAILABLE
8
+ end
9
+ end
10
+ end
11
+
12
+ def Gtk2Mp3.system_mpc
13
+ # initialize playlist
14
+ unless system 'mpc --wait update' and
15
+ system 'mpc clear' and
16
+ system 'mpc ls | mpc add' and
17
+ system 'mpc consume off' and
18
+ system 'mpc repeat off' and
19
+ system 'mpc random on' and
20
+ system 'mpc single off'
21
+ $stderr.puts %q(Could not initialize mpd's playlist)
22
+ exit 76 # EX_PROTOCOL
23
+ end
24
+ end
25
+
26
+ def Gtk2Mp3.mpc_command(command)
27
+ case command
28
+ when :next_button!
29
+ if system 'mpc pause-if-playing'
30
+ sleep 0.25
31
+ system 'mpc next'
32
+ else
33
+ system 'mpc play'
34
+ end
35
+ when :stop_button!
36
+ system 'mpc stop'
37
+ else
38
+ Gtk2Mp3.hook(command)
39
+ end
40
+ end
41
+
42
+ def Gtk2Mp3.hook(command)
43
+ # You can monkey-patch this function
44
+ end
45
+
46
+ def Gtk2Mp3.mpc_idleloop(gui)
47
+ Thread.new do
48
+ IO.popen('mpc idleloop', 'r') do |pipe|
49
+ while line = pipe.gets
50
+ gui.set_label File.basename(`mpc current`.strip, '.*')
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,41 @@
1
+ # To activate this hook, edit your current configuration file:
2
+ # ~/.config/gtk3app/gtk2mp3/config-?.?.rbon
3
+ # Set:
4
+ # MonkeyPatch: "gtk2mp3/picard_button",
5
+ require 'shellwords'
6
+ class Gtk2Mp3
7
+ extend Rafini::Empty
8
+
9
+ CONFIG[:BUTTONS].push :picard_button!
10
+ CONFIG[:PICARD_BUTTON] = [label: 'Picard']
11
+ CONFIG[:picard_button] = h0,
12
+ CONFIG[:picard_button!] = [:PICARD_BUTTON,:picard_button,'clicked']
13
+ CONFIG[:Music] ||= File.expand_path '~/Music'
14
+
15
+ def Gtk2Mp3.hook(command)
16
+ case command
17
+ when :picard_button!
18
+ current = `mpc current`.strip
19
+ if current=~/^(.*) - (.*)/
20
+ artist,title = $1,$2
21
+ else
22
+ artist,title = nil,current
23
+ end
24
+ tfiles = `mpc search Title #{Shellwords.escape(title)} | egrep '\.mp3$'`
25
+ .strip.split
26
+ if artist and tfiles.length > 1
27
+ afiles =
28
+ `mpc search Artist #{Shellwords.escape(artist)} | egrep '\.mp3$'`
29
+ .strip.split
30
+ tfiles.delete_if{ not afiles.include? _1}
31
+ end
32
+ if tfiles.length > 0
33
+ files = tfiles.map{Shellwords.escape File.join(CONFIG[:Music], _1)}
34
+ .join(' ')
35
+ spawn "picard #{files}" if tfiles.length > 0
36
+ else
37
+ $stderr.puts "Not an mp3 file: #{current}"
38
+ end
39
+ end
40
+ end
41
+ end
data/lib/gtk2mp3.rb CHANGED
@@ -1,20 +1,39 @@
1
- module Gtk2Mp3
2
- VERSION = '1.5.0'
1
+ class Gtk2Mp3
2
+ VERSION = '3.1.210926'
3
+ HELP = <<~HELP
4
+ Usage:
5
+ gtk2mp3 [:options+]
6
+ Options:
7
+ -h --help
8
+ -v --version
9
+ --minime \t Real minime
10
+ --notoggle \t Minime wont toggle decorated and keep above
11
+ --notdecorated \t Dont decorate window
12
+ --update \t Updates and sets playlist to the entire collection
13
+ # Note:
14
+ # Requires MPD/MPC.
15
+ # See https://www.musicpd.org/clients/mpc/.
16
+ HELP
3
17
 
4
- def self.requires
18
+ def Gtk2Mp3.init
19
+ require_relative 'gtk2mp3/mpd'
20
+ Gtk2Mp3.system_mpd
21
+ Gtk2Mp3.system_mpc if ARGV.include? '--update'
22
+ end
23
+
24
+ def Gtk2Mp3.run
5
25
  # This is a Gtk3App.
6
26
  require 'gtk3app'
7
-
8
- # Standard Libraries
9
- require 'json'
10
- require 'shellwords'
11
-
12
27
  # This Gem.
13
- require_relative 'gtk2mp3/config.rb'
14
- require_relative 'gtk2mp3/gui.rb'
28
+ require_relative 'gtk2mp3/config'
29
+ require_relative 'gtk2mp3/gui'
30
+ Gtk3App.run(klass:Gtk2Mp3) do |stage, toolbar, options|
31
+ require CONFIG[:MonkeyPatch] unless CONFIG[:MonkeyPatch].empty?
32
+ gui = Gtk2Mp3.new(stage, toolbar, options){Gtk2Mp3.mpc_command _1}
33
+ Gtk2Mp3.mpc_idleloop(gui)
34
+ end
15
35
  end
16
36
  end
17
-
18
37
  # Requires:
19
38
  #`ruby`
20
39
  #`mpd`
metadata CHANGED
@@ -1,56 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gtk2mp3
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 3.1.210926
5
5
  platform: ruby
6
6
  authors:
7
- - carlosjhr64
8
- autorequire:
7
+ - CarlosJHR64
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-12-15 00:00:00.000000000 Z
11
+ date: 2021-09-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: help_parser
14
+ name: gtk3app
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 6.5.0
20
17
  - - "~>"
21
18
  - !ruby/object:Gem::Version
22
- version: '6.5'
23
- type: :runtime
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
19
+ version: '5.3'
27
20
  - - ">="
28
21
  - !ruby/object:Gem::Version
29
- version: 6.5.0
30
- - - "~>"
31
- - !ruby/object:Gem::Version
32
- version: '6.5'
33
- - !ruby/object:Gem::Dependency
34
- name: gtk3app
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: 3.0.0
40
- - - "~>"
41
- - !ruby/object:Gem::Version
42
- version: '3.0'
22
+ version: 5.3.210919
43
23
  type: :runtime
44
24
  prerelease: false
45
25
  version_requirements: !ruby/object:Gem::Requirement
46
26
  requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: 3.0.0
50
27
  - - "~>"
51
28
  - !ruby/object:Gem::Version
52
- version: '3.0'
53
- description: 'A "Next!" button gui for MPD/MPC.
29
+ version: '5.3'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 5.3.210919
33
+ description: 'A "Next!" button gui for [MPD/MPC](https://www.musicpd.org/).
54
34
 
55
35
  '
56
36
  email: carlosjhr64@gmail.com
@@ -62,17 +42,17 @@ files:
62
42
  - LICENSE
63
43
  - README.md
64
44
  - bin/gtk2mp3
65
- - cache/README.txt
66
- - data/VERSION
67
45
  - data/logo.png
68
46
  - lib/gtk2mp3.rb
69
47
  - lib/gtk2mp3/config.rb
70
48
  - lib/gtk2mp3/gui.rb
49
+ - lib/gtk2mp3/mpd.rb
50
+ - lib/gtk2mp3/picard_button.rb
71
51
  homepage: https://github.com/carlosjhr64/gtk2mp3
72
52
  licenses:
73
53
  - MIT
74
54
  metadata: {}
75
- post_install_message:
55
+ post_install_message:
76
56
  rdoc_options: []
77
57
  require_paths:
78
58
  - lib
@@ -87,10 +67,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
87
67
  - !ruby/object:Gem::Version
88
68
  version: '0'
89
69
  requirements:
90
- - 'ruby: ruby 2.6.5p114 (2019-10-01 revision 67812) [x86_64-linux]'
91
- - 'mpd: Music Player Daemon 0.21.16 (0.21.16)'
92
- rubygems_version: 3.0.3
93
- signing_key:
70
+ - 'ruby: ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux]'
71
+ - 'mpd: Music Player Daemon 0.22.11 (0.22.11)'
72
+ rubygems_version: 3.2.22
73
+ signing_key:
94
74
  specification_version: 4
95
- summary: A "Next!" button gui for MPD/MPC.
75
+ summary: A "Next!" button gui for [MPD/MPC](https://www.musicpd.org/).
96
76
  test_files: []
data/cache/README.txt DELETED
@@ -1 +0,0 @@
1
- The dbm.json file will be in this cache directory.
data/data/VERSION DELETED
@@ -1 +0,0 @@
1
- 1.5.0