anyplayer 1.1.0 → 1.1.1

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.
@@ -1,7 +1,8 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- anyplayer (1.1.0)
4
+ anyplayer (1.1.1)
5
+ ruby-mpd (~> 0.3.0)
5
6
 
6
7
  GEM
7
8
  remote: http://rubygems.org/
@@ -9,6 +10,7 @@ GEM
9
10
  flexmock (0.9.0)
10
11
  minitest (4.1.0)
11
12
  rake (0.9.2.2)
13
+ ruby-mpd (0.3.0)
12
14
 
13
15
  PLATFORMS
14
16
  ruby
data/Rakefile CHANGED
@@ -7,6 +7,6 @@ task :default => :test
7
7
 
8
8
  Rake::TestTask.new do |t|
9
9
  t.libs << "test"
10
- t.pattern = "test/*_test.rb"
10
+ t.pattern = "test/**/*_test.rb"
11
11
  t.verbose = true
12
12
  end
@@ -17,6 +17,7 @@ Gem::Specification.new do |s|
17
17
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
18
  s.require_paths = ["lib"]
19
19
 
20
+ s.add_runtime_dependency 'ruby-mpd', '~> 0.3.0'
20
21
  s.add_development_dependency 'minitest'
21
22
  s.add_development_dependency 'flexmock'
22
23
  end
@@ -1,54 +1,69 @@
1
+ # encoding: utf-8
2
+ begin
3
+ require 'ruby-mpd'
4
+ rescue LoadError => e
5
+ raise LoadError.new "#{e.message} — please install ruby-mpd gem"
6
+ end
7
+
8
+
1
9
  class Anyplayer::Mpd < Anyplayer::Player
10
+ def initialize
11
+ @mpc = false
12
+ super
13
+ end
14
+
2
15
  def playpause
3
- mpc 'toggle'
16
+ mpc.paused? &&
17
+ mpc.send_command(:play) ||
18
+ mpc.send_command(:pause)
4
19
  end
5
20
 
6
21
  def play
7
- mpc 'play'
22
+ mpc.play
8
23
  end
9
24
 
10
25
  def pause
11
- mpc 'pause'
26
+ # ruby-mpd tries to send an additional argument to the MPD server
27
+ # which at least doesn't work with Mopidy.
28
+ mpc.send_command :pause
12
29
  end
13
30
 
14
31
  def prev
15
- mpc 'prev'
32
+ mpc.previous
16
33
  super
17
34
  end
18
35
 
19
36
  def next
20
- mpc 'next'
37
+ mpc.next
21
38
  super
22
39
  end
23
40
 
24
41
  def voldown
25
- mpc 'volume -10'
42
+ mpc.volume -= 10
26
43
  end
27
44
 
28
45
  def volup
29
- mpc 'volume +10'
46
+ mpc.volume += 10
30
47
  end
31
48
 
32
49
  def volume
33
- mpc('volume').grep(/([0-9]+)/)
34
- $1
50
+ mpc.volume
35
51
  end
36
52
 
37
53
  def track
38
- mpc '-f "%title%" current'
54
+ mpc.current_song && mpc.current_song.title
39
55
  end
40
56
 
41
57
  def artist
42
- mpc '-f "%artist%" current'
58
+ mpc.current_song && mpc.current_song.artist
43
59
  end
44
60
 
45
61
  def album
46
- mpc '-f "%album%" current'
62
+ mpc.current_song && mpc.current_song.album
47
63
  end
48
64
 
49
65
  def launched?
50
- %x(mpc 2> /dev/null)
51
- $? == 0
66
+ !!(@mpc && @mpc.connected? || connect)
52
67
  end
53
68
 
54
69
  def host
@@ -56,8 +71,16 @@ class Anyplayer::Mpd < Anyplayer::Player
56
71
  end
57
72
 
58
73
  private
59
- def mpc(command)
60
- %x(mpc #{command}).split("\n").first
61
- end
74
+ def connect
75
+ @mpc ||= MPD.new
76
+ @mpc.connect
77
+ rescue
78
+ false
79
+ end
80
+
81
+ def mpc
82
+ @mpc || connect
83
+ @mpc
84
+ end
62
85
  end
63
86
 
@@ -1,3 +1,3 @@
1
1
  module Anyplayer
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  end
@@ -0,0 +1,25 @@
1
+ require "test_helper"
2
+ require "ruby-mpd"
3
+ require "anyplayer/players/mpd"
4
+
5
+ class MpdTest < MiniTest::Unit::TestCase
6
+ include FlexMock::TestCase
7
+
8
+ def setup
9
+ @mpd_instance_mock = flexmock("mpd")
10
+ flexmock(MPD, "MPD", :new => @mpd_instance_mock)
11
+ end
12
+
13
+ def test_uses_ruby_mpd_gem
14
+ @mpd_instance_mock.should_receive :connect
15
+ Mpd.new
16
+ end
17
+
18
+ def test_works_around_toggle_bug
19
+ player = Mpd.new
20
+ @mpd_instance_mock.should_receive(:paused?).once.and_return(false)
21
+ @mpd_instance_mock.should_receive(:send_command).with(:pause).once
22
+
23
+ player.playpause
24
+ end
25
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: anyplayer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,8 +10,24 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-10-27 00:00:00.000000000 Z
13
+ date: 2013-12-18 00:00:00.000000000 Z
14
14
  dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: ruby-mpd
17
+ requirement: !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ~>
21
+ - !ruby/object:Gem::Version
22
+ version: 0.3.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ~>
29
+ - !ruby/object:Gem::Version
30
+ version: 0.3.0
15
31
  - !ruby/object:Gem::Dependency
16
32
  name: minitest
17
33
  requirement: !ruby/object:Gem::Requirement
@@ -78,6 +94,7 @@ files:
78
94
  - lib/anyplayer/version.rb
79
95
  - test/anyplayer_test.rb
80
96
  - test/player_test.rb
97
+ - test/players/mpd_test.rb
81
98
  - test/selector_test.rb
82
99
  - test/test_helper.rb
83
100
  homepage: http://github.com/sunny/anyplayer
@@ -92,18 +109,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
92
109
  - - ! '>='
93
110
  - !ruby/object:Gem::Version
94
111
  version: '0'
95
- segments:
96
- - 0
97
- hash: -2566882971026617068
98
112
  required_rubygems_version: !ruby/object:Gem::Requirement
99
113
  none: false
100
114
  requirements:
101
115
  - - ! '>='
102
116
  - !ruby/object:Gem::Version
103
117
  version: '0'
104
- segments:
105
- - 0
106
- hash: -2566882971026617068
107
118
  requirements: []
108
119
  rubyforge_project:
109
120
  rubygems_version: 1.8.23
@@ -113,5 +124,6 @@ summary: Interact with the running music player
113
124
  test_files:
114
125
  - test/anyplayer_test.rb
115
126
  - test/player_test.rb
127
+ - test/players/mpd_test.rb
116
128
  - test/selector_test.rb
117
129
  - test/test_helper.rb