anyplayer 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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