anyplayer 0.0.3 → 0.0.4

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,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- anyplayer (0.0.3)
4
+ anyplayer (0.0.4)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -1,8 +1,11 @@
1
1
  Anyplayer
2
2
  =========
3
3
 
4
- Interacts with the currently running music player. Supports iTunes OS X, iTunes Windows,
5
- Rythmbox, MPD & XMMS2.
4
+ [![Gem Version](https://badge.fury.io/rb/anyplayer.png)](http://badge.fury.io/rb/anyplayer)
5
+ [![Build Status](https://travis-ci.org/sunny/anyplayer.png)](https://travis-ci.org/sunny/anyplayer)
6
+
7
+ Interacts with the currently running music player. Supports iTunes Mac, iTunes Windows, MPD,
8
+ Rythmbox, Spotify Mac and XMMS2.
6
9
 
7
10
  Install
8
11
  -------
@@ -1,44 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'anyplayer'
3
+ require "anyplayer/command_line"
4
4
 
5
- # Create a selector
6
- selector = Anyplayer::Selector.new
7
- if ARGV.first == "-v"
8
- selector.verbose = true
9
- ARGV.pop
10
- end
11
-
12
- # Find the current player
13
- player = selector.player
14
- abort "Error: no player connected.\n" + selector.errors.join("\n") if !player
15
-
16
- # Call it
17
- case ARGV.first
18
- when "playpause" then player.playpause
19
- when "play" then player.play
20
- when "pause" then palyer.pause
21
- when "next" then player.next
22
- when "prev" then player.next
23
- when "voldown" then player.voldown
24
- when "volup" then player.volup
25
- when "volume" then puts player.volume
26
- when "track" then puts player.track
27
- when "artist" then puts player.artist
28
- when "album" then puts player.album
29
- when "vote" then player.vote
30
- when "name" then puts player.name
31
- when "launched" then exit(player.launched? ? 0 : 1)
32
- when "playing" then exit(player.playing? ? 0 : 1)
33
- when "paused" then exit(player.playing? ? 0 : 1)
34
- else
35
- puts <<USAGE
36
- Usage: #{$0} [-v] [command]
37
-
38
- Where command is one of: playpause, play, pause, next, prev, voldown, volup,
39
- volume, track, artist, album, vote, name, launched.
40
-
41
- Player connected: #{player.name}.
42
- USAGE
43
- exit(1)
44
- end
5
+ Anyplayer::CommandLine.parse(ARGV)
@@ -12,12 +12,11 @@ module Anyplayer
12
12
  )
13
13
 
14
14
  def self.launched
15
- $stderr.puts "Anyplayer.launched is deprecated: please initialize a new Selector and call player"
16
15
  Selector.new.player
17
16
  end
18
17
  end
19
18
 
20
19
  require "anyplayer/player"
21
20
  require "anyplayer/selector"
22
-
21
+ require "anyplayer/version"
23
22
 
@@ -0,0 +1,53 @@
1
+
2
+ require "anyplayer"
3
+
4
+ module Anyplayer::CommandLine
5
+ extend self
6
+
7
+ def parse(argv)
8
+ # Create a selector
9
+ selector = Anyplayer::Selector.new
10
+ if argv.first == "-v"
11
+ selector.verbose = true
12
+ argv.pop
13
+
14
+ $stderr.puts "anyplayer v#{Anyplayer::VERSION}"
15
+ end
16
+
17
+ # Find the current player
18
+ player = selector.player
19
+ abort "Error: no player connected.\n" + selector.errors.join("\n") if !player
20
+
21
+ # Call it
22
+ case argv.first
23
+ when "playpause" then player.playpause
24
+ when "play" then player.play
25
+ when "pause" then player.pause
26
+ when "next" then player.next
27
+ when "prev" then player.next
28
+ when "voldown" then player.voldown
29
+ when "volup" then player.volup
30
+ when "volume" then puts player.volume
31
+ when "track" then puts player.track
32
+ when "artist" then puts player.artist
33
+ when "album" then puts player.album
34
+ when "vote" then player.vote
35
+ when "name" then puts player.name
36
+ when "launched" then exit(player.launched? ? 0 : 1)
37
+ when "playing" then exit(player.playing? ? 0 : 1)
38
+ when "paused" then exit(player.playing? ? 0 : 1)
39
+ else
40
+ puts <<USAGE
41
+ Usage: anyplayer [-v] [command]
42
+
43
+ Where command is one of: playpause, play, pause, next, prev, voldown, volup,
44
+ volume, track, artist, album, vote, name, launched.
45
+
46
+ Player connected: #{player.name}.
47
+ USAGE
48
+ exit(1)
49
+ end
50
+
51
+ end
52
+
53
+ end
@@ -1,4 +1,12 @@
1
1
  class Anyplayer::ItunesMac < Anyplayer::Player
2
+ def play
3
+ itunes 'play'
4
+ end
5
+
6
+ def pause
7
+ itunes 'pause'
8
+ end
9
+
2
10
  def playpause
3
11
  itunes 'playpause'
4
12
  end
@@ -0,0 +1,61 @@
1
+ class Anyplayer::SpotifyMac < Anyplayer::Player
2
+ def play
3
+ spotify 'play'
4
+ end
5
+
6
+ def pause
7
+ spotify 'pause'
8
+ end
9
+
10
+ def playpause
11
+ spotify 'playpause'
12
+ end
13
+
14
+ def prev
15
+ spotify 'previous track'
16
+ super
17
+ end
18
+
19
+ def next
20
+ spotify 'next track'
21
+ super
22
+ end
23
+
24
+ def voldown
25
+ spotify 'set sound volume to sound volume - 10'
26
+ end
27
+
28
+ def volup
29
+ spotify 'set sound volume to sound volume + 10'
30
+ end
31
+
32
+ def volume
33
+ spotify 'return sound volume'
34
+ end
35
+
36
+ def track
37
+ spotify 'return name of current track'
38
+ end
39
+
40
+ def artist
41
+ spotify 'return artist of current track'
42
+ end
43
+
44
+ def album
45
+ spotify 'return album of current track'
46
+ end
47
+
48
+ def launched?
49
+ nb = %x(osascript -e 'tell app "System Events" to count (every process whose name is "Spotify")' 2>/dev/null).rstrip
50
+ nb.match(/^\d+/) and nb.to_i > 0 ? true : false
51
+ end
52
+
53
+ def name
54
+ "Spotify Mac"
55
+ end
56
+
57
+ private
58
+ def spotify(command)
59
+ %x(osascript -e 'tell app "spotify" to #{command}').rstrip
60
+ end
61
+ end
@@ -3,9 +3,11 @@
3
3
  # Example:
4
4
  #
5
5
  # selector = Anyplayer::Selector.new
6
+ # selector.verbose = true
6
7
  # player = selector.player
7
8
  #
8
9
  # Needs the PLAYERS constant to contain a list of players.
10
+
9
11
  class Anyplayer::Selector
10
12
  attr_accessor :verbose
11
13
  attr_reader :errors
@@ -1,3 +1,3 @@
1
1
  module Anyplayer
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -1,14 +1,7 @@
1
1
  require "test_helper"
2
2
 
3
3
  class AnyplayerTest < MiniTest::Unit::TestCase
4
- def test_deprecated_launched
5
- assert_output nil, "Anyplayer.launched is deprecated: please initialize a new Selector and call player\n" do
6
- deprecated_player = Anyplayer::launched
7
- assert_kind_of Player, deprecated_player
8
- end
9
- end
10
-
11
- # def test_loading_all_players
4
+ # def test_loading_all_players_does_not_explode
12
5
  # PLAYERS.each do |player|
13
6
  # require "anyplayer/players/#{player}"
14
7
  # 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: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2013-03-13 00:00:00.000000000 Z
13
+ date: 2013-05-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: minitest
@@ -57,11 +57,12 @@ files:
57
57
  - .travis.yml
58
58
  - Gemfile
59
59
  - Gemfile.lock
60
+ - README.md
60
61
  - Rakefile
61
- - Readme.markdown
62
62
  - anyplayer.gemspec
63
63
  - bin/anyplayer
64
64
  - lib/anyplayer.rb
65
+ - lib/anyplayer/command_line.rb
65
66
  - lib/anyplayer/player.rb
66
67
  - lib/anyplayer/players/amarok.rb
67
68
  - lib/anyplayer/players/itunes_mac.rb
@@ -69,6 +70,7 @@ files:
69
70
  - lib/anyplayer/players/mpd.rb
70
71
  - lib/anyplayer/players/noplayer.rb
71
72
  - lib/anyplayer/players/rhythmbox.rb
73
+ - lib/anyplayer/players/spotify_mac.rb
72
74
  - lib/anyplayer/players/xmms2.rb
73
75
  - lib/anyplayer/selector.rb
74
76
  - lib/anyplayer/version.rb
@@ -90,7 +92,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
90
92
  version: '0'
91
93
  segments:
92
94
  - 0
93
- hash: -3141794029494105960
95
+ hash: 1339688103094380844
94
96
  required_rubygems_version: !ruby/object:Gem::Requirement
95
97
  none: false
96
98
  requirements:
@@ -99,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
99
101
  version: '0'
100
102
  segments:
101
103
  - 0
102
- hash: -3141794029494105960
104
+ hash: 1339688103094380844
103
105
  requirements: []
104
106
  rubyforge_project:
105
107
  rubygems_version: 1.8.23