anyplayer 1.1.2 → 1.2.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.
- checksums.yaml +7 -0
- data/.gitignore +1 -1
- data/.ruby-version +1 -0
- data/.travis.yml +1 -2
- data/CHANGELOG.md +82 -0
- data/CONTRIBUTING.md +22 -0
- data/Gemfile +0 -2
- data/README.md +17 -16
- data/Rakefile +10 -0
- data/anyplayer.gemspec +3 -1
- data/bin/rake +29 -0
- data/lib/anyplayer.rb +8 -2
- data/lib/anyplayer/command_line.rb +56 -26
- data/lib/anyplayer/player.rb +15 -7
- data/lib/anyplayer/players/amarok.rb +25 -19
- data/lib/anyplayer/players/itunes_mac.rb +22 -17
- data/lib/anyplayer/players/itunes_windows.rb +9 -6
- data/lib/anyplayer/players/mpd.rb +14 -8
- data/lib/anyplayer/players/noplayer.rb +2 -2
- data/lib/anyplayer/players/rdio_mac.rb +22 -18
- data/lib/anyplayer/players/rhythmbox.rb +15 -15
- data/lib/anyplayer/players/spotify_mac.rb +21 -17
- data/lib/anyplayer/players/xmms2.rb +34 -24
- data/lib/anyplayer/selector.rb +63 -32
- data/lib/anyplayer/version.rb +1 -1
- data/test/anyplayer_test.rb +12 -6
- data/test/command_line_test.rb +150 -0
- data/test/player_test.rb +44 -7
- data/test/players/mpd_test.rb +2 -4
- data/test/selector_test.rb +2 -2
- data/test/test_helper.rb +1 -2
- metadata +35 -32
- data/.envrc +0 -1
- data/Gemfile.lock +0 -22
| @@ -1,66 +1,71 @@ | |
| 1 1 | 
             
            class Anyplayer::ItunesMac < Anyplayer::Player
         | 
| 2 2 | 
             
              def play
         | 
| 3 | 
            -
                itunes  | 
| 3 | 
            +
                itunes "play"
         | 
| 4 4 | 
             
              end
         | 
| 5 5 |  | 
| 6 6 | 
             
              def pause
         | 
| 7 | 
            -
                itunes  | 
| 7 | 
            +
                itunes "pause"
         | 
| 8 8 | 
             
              end
         | 
| 9 9 |  | 
| 10 10 | 
             
              def playpause
         | 
| 11 | 
            -
                itunes  | 
| 11 | 
            +
                itunes "playpause"
         | 
| 12 12 | 
             
              end
         | 
| 13 13 |  | 
| 14 14 | 
             
              def prev
         | 
| 15 | 
            -
                itunes  | 
| 15 | 
            +
                itunes "previous track"
         | 
| 16 16 | 
             
                super
         | 
| 17 17 | 
             
              end
         | 
| 18 18 |  | 
| 19 19 | 
             
              def next
         | 
| 20 | 
            -
                itunes  | 
| 20 | 
            +
                itunes "next track"
         | 
| 21 21 | 
             
                super
         | 
| 22 22 | 
             
              end
         | 
| 23 23 |  | 
| 24 24 | 
             
              def voldown
         | 
| 25 | 
            -
                itunes  | 
| 25 | 
            +
                itunes "set sound volume to sound volume - 10"
         | 
| 26 26 | 
             
              end
         | 
| 27 27 |  | 
| 28 28 | 
             
              def volup
         | 
| 29 | 
            -
                itunes  | 
| 29 | 
            +
                itunes "set sound volume to sound volume + 10"
         | 
| 30 30 | 
             
              end
         | 
| 31 31 |  | 
| 32 32 | 
             
              def volume
         | 
| 33 | 
            -
                itunes  | 
| 33 | 
            +
                itunes "return sound volume"
         | 
| 34 34 | 
             
              end
         | 
| 35 35 |  | 
| 36 36 | 
             
              def track
         | 
| 37 | 
            -
                itunes  | 
| 37 | 
            +
                itunes "return name of current track"
         | 
| 38 38 | 
             
              end
         | 
| 39 39 |  | 
| 40 40 | 
             
              def artist
         | 
| 41 | 
            -
                itunes  | 
| 41 | 
            +
                itunes "return artist of current track"
         | 
| 42 42 | 
             
              end
         | 
| 43 43 |  | 
| 44 44 | 
             
              def album
         | 
| 45 | 
            -
                itunes  | 
| 45 | 
            +
                itunes "return album of current track"
         | 
| 46 46 | 
             
              end
         | 
| 47 47 |  | 
| 48 48 | 
             
              def playing?
         | 
| 49 | 
            -
                playing = itunes  | 
| 49 | 
            +
                playing = itunes "return player state is playing"
         | 
| 50 50 | 
             
                playing == "true"
         | 
| 51 51 | 
             
              end
         | 
| 52 52 |  | 
| 53 53 | 
             
              def launched?
         | 
| 54 | 
            -
                 | 
| 55 | 
            -
                nb.match(/^\d+/) and nb.to_i > 0 ? true : false
         | 
| 54 | 
            +
                %x(osascript -e 'app "iTunes" is running').rstrip == "true"
         | 
| 56 55 | 
             
              end
         | 
| 57 56 |  | 
| 58 57 | 
             
              def name
         | 
| 59 58 | 
             
                "iTunes Mac"
         | 
| 60 59 | 
             
              end
         | 
| 61 60 |  | 
| 61 | 
            +
              def platforms
         | 
| 62 | 
            +
                [:mac]
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
             | 
| 65 | 
            +
             | 
| 62 66 | 
             
              private
         | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
                 | 
| 67 | 
            +
             | 
| 68 | 
            +
              def itunes(command)
         | 
| 69 | 
            +
                %x(osascript -e 'tell app "iTunes" to #{command}').rstrip
         | 
| 70 | 
            +
              end
         | 
| 66 71 | 
             
            end
         | 
| @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            begin
         | 
| 2 | 
            -
              require  | 
| 2 | 
            +
              require "win32ole"
         | 
| 3 3 | 
             
            rescue LoadError => e
         | 
| 4 | 
            -
              raise LoadError.new("#{e.message}  | 
| 4 | 
            +
              raise LoadError.new("#{e.message} - You probably aren't on Windows")
         | 
| 5 5 | 
             
            end
         | 
| 6 6 |  | 
| 7 7 | 
             
            class Anyplayer::ItunesWindows < Anyplayer::Player
         | 
| @@ -59,10 +59,13 @@ class Anyplayer::ItunesWindows < Anyplayer::Player | |
| 59 59 | 
             
                "iTunes Windows"
         | 
| 60 60 | 
             
              end
         | 
| 61 61 |  | 
| 62 | 
            +
              def platforms
         | 
| 63 | 
            +
                [:windows]
         | 
| 64 | 
            +
              end
         | 
| 65 | 
            +
             | 
| 62 66 | 
             
              private
         | 
| 63 67 |  | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 68 | 
            +
              def itunes
         | 
| 69 | 
            +
                itunes ||= WIN32OLE.new("iTunes.Application")
         | 
| 70 | 
            +
              end
         | 
| 67 71 | 
             
            end
         | 
| 68 | 
            -
             | 
| @@ -1,11 +1,10 @@ | |
| 1 1 | 
             
            # encoding: utf-8
         | 
| 2 2 | 
             
            begin
         | 
| 3 | 
            -
              require  | 
| 3 | 
            +
              require "ruby-mpd"
         | 
| 4 4 | 
             
            rescue LoadError => e
         | 
| 5 | 
            -
              raise LoadError.new "#{e.message} —  | 
| 5 | 
            +
              raise LoadError.new "#{e.message} — Please install the ruby-mpd gem"
         | 
| 6 6 | 
             
            end
         | 
| 7 7 |  | 
| 8 | 
            -
             | 
| 9 8 | 
             
            class Anyplayer::Mpd < Anyplayer::Player
         | 
| 10 9 | 
             
              def initialize
         | 
| 11 10 | 
             
                @mpc = false
         | 
| @@ -51,15 +50,18 @@ class Anyplayer::Mpd < Anyplayer::Player | |
| 51 50 | 
             
              end
         | 
| 52 51 |  | 
| 53 52 | 
             
              def track
         | 
| 54 | 
            -
                 | 
| 53 | 
            +
                song = current_song
         | 
| 54 | 
            +
                return unless song
         | 
| 55 | 
            +
             | 
| 56 | 
            +
                song.title || File.basename(song.file)
         | 
| 55 57 | 
             
              end
         | 
| 56 58 |  | 
| 57 59 | 
             
              def artist
         | 
| 58 | 
            -
                 | 
| 60 | 
            +
                current_song&.artist
         | 
| 59 61 | 
             
              end
         | 
| 60 62 |  | 
| 61 63 | 
             
              def album
         | 
| 62 | 
            -
                 | 
| 64 | 
            +
                current_song&.album
         | 
| 63 65 | 
             
              end
         | 
| 64 66 |  | 
| 65 67 | 
             
              def launched?
         | 
| @@ -67,10 +69,15 @@ class Anyplayer::Mpd < Anyplayer::Player | |
| 67 69 | 
             
              end
         | 
| 68 70 |  | 
| 69 71 | 
             
              def host
         | 
| 70 | 
            -
                ENV[ | 
| 72 | 
            +
                ENV["MPD_HOST"] || super
         | 
| 71 73 | 
             
              end
         | 
| 72 74 |  | 
| 73 75 | 
             
              private
         | 
| 76 | 
            +
             | 
| 77 | 
            +
              def current_song
         | 
| 78 | 
            +
                mpc.current_song
         | 
| 79 | 
            +
              end
         | 
| 80 | 
            +
             | 
| 74 81 | 
             
              def connect
         | 
| 75 82 | 
             
                @mpc ||= MPD.new
         | 
| 76 83 | 
             
                @mpc.connect
         | 
| @@ -83,4 +90,3 @@ class Anyplayer::Mpd < Anyplayer::Player | |
| 83 90 | 
             
                @mpc
         | 
| 84 91 | 
             
              end
         | 
| 85 92 | 
             
            end
         | 
| 86 | 
            -
             | 
| @@ -1,66 +1,70 @@ | |
| 1 1 | 
             
            class Anyplayer::RdioMac < Anyplayer::Player
         | 
| 2 2 | 
             
              def play
         | 
| 3 | 
            -
                rdio  | 
| 3 | 
            +
                rdio "play"
         | 
| 4 4 | 
             
              end
         | 
| 5 5 |  | 
| 6 6 | 
             
              def pause
         | 
| 7 | 
            -
                rdio  | 
| 7 | 
            +
                rdio "pause"
         | 
| 8 8 | 
             
              end
         | 
| 9 9 |  | 
| 10 10 | 
             
              def playpause
         | 
| 11 | 
            -
                rdio  | 
| 11 | 
            +
                rdio "playpause"
         | 
| 12 12 | 
             
              end
         | 
| 13 13 |  | 
| 14 14 | 
             
              def prev
         | 
| 15 | 
            -
                rdio  | 
| 15 | 
            +
                rdio "previous track"
         | 
| 16 16 | 
             
                super
         | 
| 17 17 | 
             
              end
         | 
| 18 18 |  | 
| 19 19 | 
             
              def next
         | 
| 20 | 
            -
                rdio  | 
| 20 | 
            +
                rdio "next track"
         | 
| 21 21 | 
             
                super
         | 
| 22 22 | 
             
              end
         | 
| 23 23 |  | 
| 24 24 | 
             
              def voldown
         | 
| 25 | 
            -
                rdio  | 
| 25 | 
            +
                rdio "set sound volume to sound volume - 10"
         | 
| 26 26 | 
             
              end
         | 
| 27 27 |  | 
| 28 28 | 
             
              def volup
         | 
| 29 | 
            -
                rdio  | 
| 29 | 
            +
                rdio "set sound volume to sound volume + 10"
         | 
| 30 30 | 
             
              end
         | 
| 31 31 |  | 
| 32 32 | 
             
              def volume
         | 
| 33 | 
            -
                rdio  | 
| 33 | 
            +
                rdio "return sound volume"
         | 
| 34 34 | 
             
              end
         | 
| 35 35 |  | 
| 36 36 | 
             
              def track
         | 
| 37 | 
            -
                rdio  | 
| 37 | 
            +
                rdio "return name of current track"
         | 
| 38 38 | 
             
              end
         | 
| 39 39 |  | 
| 40 40 | 
             
              def artist
         | 
| 41 | 
            -
                rdio  | 
| 41 | 
            +
                rdio "return artist of current track"
         | 
| 42 42 | 
             
              end
         | 
| 43 43 |  | 
| 44 44 | 
             
              def album
         | 
| 45 | 
            -
                rdio  | 
| 45 | 
            +
                rdio "return album of current track"
         | 
| 46 46 | 
             
              end
         | 
| 47 47 |  | 
| 48 48 | 
             
              def playing?
         | 
| 49 | 
            -
                playing = rdio  | 
| 49 | 
            +
                playing = rdio "return player state is playing"
         | 
| 50 50 | 
             
                playing == "true"
         | 
| 51 51 | 
             
              end
         | 
| 52 52 |  | 
| 53 53 | 
             
              def launched?
         | 
| 54 | 
            -
                 | 
| 55 | 
            -
                nb.match(/^\d+/) and nb.to_i > 0 ? true : false
         | 
| 54 | 
            +
                %x(osascript -e 'app "rdio" is running').rstrip == "true"
         | 
| 56 55 | 
             
              end
         | 
| 57 56 |  | 
| 58 57 | 
             
              def name
         | 
| 59 58 | 
             
                "Rdio Mac"
         | 
| 60 59 | 
             
              end
         | 
| 61 60 |  | 
| 61 | 
            +
              def platforms
         | 
| 62 | 
            +
                [:mac]
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
             | 
| 62 65 | 
             
              private
         | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
                 | 
| 66 | 
            -
            end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              def rdio(command)
         | 
| 68 | 
            +
                %x(osascript -e 'tell app "rdio" to #{command}').rstrip
         | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
            end
         | 
| @@ -1,48 +1,48 @@ | |
| 1 1 | 
             
            class Anyplayer::Rhythmbox < Anyplayer::Player
         | 
| 2 2 | 
             
              def playpause
         | 
| 3 | 
            -
                rhythmbox  | 
| 3 | 
            +
                rhythmbox "play-pause"
         | 
| 4 4 | 
             
              end
         | 
| 5 5 |  | 
| 6 6 | 
             
              def play
         | 
| 7 | 
            -
                rhythmbox  | 
| 7 | 
            +
                rhythmbox "play"
         | 
| 8 8 | 
             
              end
         | 
| 9 9 |  | 
| 10 10 | 
             
              def pause
         | 
| 11 | 
            -
                rhythmbox  | 
| 11 | 
            +
                rhythmbox "pause"
         | 
| 12 12 | 
             
              end
         | 
| 13 13 |  | 
| 14 14 | 
             
              def prev
         | 
| 15 | 
            -
                rhythmbox  | 
| 15 | 
            +
                rhythmbox "previous"
         | 
| 16 16 | 
             
                super
         | 
| 17 17 | 
             
              end
         | 
| 18 18 |  | 
| 19 19 | 
             
              def next
         | 
| 20 | 
            -
                rhythmbox  | 
| 20 | 
            +
                rhythmbox "next"
         | 
| 21 21 | 
             
                super
         | 
| 22 22 | 
             
              end
         | 
| 23 23 |  | 
| 24 24 | 
             
              def voldown
         | 
| 25 | 
            -
                rhythmbox  | 
| 25 | 
            +
                rhythmbox "volume-down"
         | 
| 26 26 | 
             
              end
         | 
| 27 27 |  | 
| 28 28 | 
             
              def volup
         | 
| 29 | 
            -
                rhythmbox  | 
| 29 | 
            +
                rhythmbox "volume-up"
         | 
| 30 30 | 
             
              end
         | 
| 31 31 |  | 
| 32 32 | 
             
              def volume
         | 
| 33 | 
            -
                rhythmbox  | 
| 33 | 
            +
                rhythmbox "print-volume"
         | 
| 34 34 | 
             
              end
         | 
| 35 35 |  | 
| 36 36 | 
             
              def track
         | 
| 37 | 
            -
                rhythmbox  | 
| 37 | 
            +
                rhythmbox "print-playing-format=%tt"
         | 
| 38 38 | 
             
              end
         | 
| 39 39 |  | 
| 40 40 | 
             
              def artist
         | 
| 41 | 
            -
                rhythmbox  | 
| 41 | 
            +
                rhythmbox "print-playing-format=%ta"
         | 
| 42 42 | 
             
              end
         | 
| 43 43 |  | 
| 44 44 | 
             
              def album
         | 
| 45 | 
            -
                rhythmbox  | 
| 45 | 
            +
                rhythmbox "print-playing-format=%at"
         | 
| 46 46 | 
             
              end
         | 
| 47 47 |  | 
| 48 48 | 
             
              def launched?
         | 
| @@ -50,8 +50,8 @@ class Anyplayer::Rhythmbox < Anyplayer::Player | |
| 50 50 | 
             
              end
         | 
| 51 51 |  | 
| 52 52 | 
             
              private
         | 
| 53 | 
            -
                def rhythmbox(command)
         | 
| 54 | 
            -
                  %x(rhythmbox-client --no-start --#{command}).rstrip
         | 
| 55 | 
            -
                end
         | 
| 56 | 
            -
            end
         | 
| 57 53 |  | 
| 54 | 
            +
              def rhythmbox(command)
         | 
| 55 | 
            +
                %x(rhythmbox-client --no-start --#{command}).rstrip
         | 
| 56 | 
            +
              end
         | 
| 57 | 
            +
            end
         | 
| @@ -1,66 +1,70 @@ | |
| 1 1 | 
             
            class Anyplayer::SpotifyMac < Anyplayer::Player
         | 
| 2 2 | 
             
              def play
         | 
| 3 | 
            -
                spotify  | 
| 3 | 
            +
                spotify "play"
         | 
| 4 4 | 
             
              end
         | 
| 5 5 |  | 
| 6 6 | 
             
              def pause
         | 
| 7 | 
            -
                spotify  | 
| 7 | 
            +
                spotify "pause"
         | 
| 8 8 | 
             
              end
         | 
| 9 9 |  | 
| 10 10 | 
             
              def playpause
         | 
| 11 | 
            -
                spotify  | 
| 11 | 
            +
                spotify "playpause"
         | 
| 12 12 | 
             
              end
         | 
| 13 13 |  | 
| 14 14 | 
             
              def prev
         | 
| 15 | 
            -
                spotify  | 
| 15 | 
            +
                spotify "previous track"
         | 
| 16 16 | 
             
                super
         | 
| 17 17 | 
             
              end
         | 
| 18 18 |  | 
| 19 19 | 
             
              def next
         | 
| 20 | 
            -
                spotify  | 
| 20 | 
            +
                spotify "next track"
         | 
| 21 21 | 
             
                super
         | 
| 22 22 | 
             
              end
         | 
| 23 23 |  | 
| 24 24 | 
             
              def voldown
         | 
| 25 | 
            -
                spotify  | 
| 25 | 
            +
                spotify "set sound volume to sound volume - 10"
         | 
| 26 26 | 
             
              end
         | 
| 27 27 |  | 
| 28 28 | 
             
              def volup
         | 
| 29 | 
            -
                spotify  | 
| 29 | 
            +
                spotify "set sound volume to sound volume + 10"
         | 
| 30 30 | 
             
              end
         | 
| 31 31 |  | 
| 32 32 | 
             
              def volume
         | 
| 33 | 
            -
                spotify  | 
| 33 | 
            +
                spotify "return sound volume"
         | 
| 34 34 | 
             
              end
         | 
| 35 35 |  | 
| 36 36 | 
             
              def track
         | 
| 37 | 
            -
                spotify  | 
| 37 | 
            +
                spotify "return name of current track"
         | 
| 38 38 | 
             
              end
         | 
| 39 39 |  | 
| 40 40 | 
             
              def artist
         | 
| 41 | 
            -
                spotify  | 
| 41 | 
            +
                spotify "return artist of current track"
         | 
| 42 42 | 
             
              end
         | 
| 43 43 |  | 
| 44 44 | 
             
              def album
         | 
| 45 | 
            -
                spotify  | 
| 45 | 
            +
                spotify "return album of current track"
         | 
| 46 46 | 
             
              end
         | 
| 47 47 |  | 
| 48 48 | 
             
              def playing?
         | 
| 49 | 
            -
                playing = spotify  | 
| 49 | 
            +
                playing = spotify "return player state is playing"
         | 
| 50 50 | 
             
                playing == "true"
         | 
| 51 51 | 
             
              end
         | 
| 52 52 |  | 
| 53 53 | 
             
              def launched?
         | 
| 54 | 
            -
                 | 
| 55 | 
            -
                nb.match(/^\d+/) and nb.to_i > 0 ? true : false
         | 
| 54 | 
            +
                %x(osascript -e 'app "Spotify" is running').rstrip == "true"
         | 
| 56 55 | 
             
              end
         | 
| 57 56 |  | 
| 58 57 | 
             
              def name
         | 
| 59 58 | 
             
                "Spotify Mac"
         | 
| 60 59 | 
             
              end
         | 
| 61 60 |  | 
| 61 | 
            +
              def platforms
         | 
| 62 | 
            +
                [:mac]
         | 
| 63 | 
            +
              end
         | 
| 64 | 
            +
             | 
| 62 65 | 
             
              private
         | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
                 | 
| 66 | 
            +
             | 
| 67 | 
            +
              def spotify(command)
         | 
| 68 | 
            +
                %x(osascript -e 'tell app "Spotify" to #{command}').rstrip
         | 
| 69 | 
            +
              end
         | 
| 66 70 | 
             
            end
         | 
| @@ -1,77 +1,87 @@ | |
| 1 1 | 
             
            class Anyplayer::Xmms2 < Anyplayer::Player
         | 
| 2 2 | 
             
              def playpause
         | 
| 3 | 
            -
                xmms2  | 
| 3 | 
            +
                xmms2 "toggle"
         | 
| 4 4 | 
             
              end
         | 
| 5 5 |  | 
| 6 6 | 
             
              def play
         | 
| 7 | 
            -
                xmms2  | 
| 7 | 
            +
                xmms2 "play"
         | 
| 8 8 | 
             
              end
         | 
| 9 9 |  | 
| 10 10 | 
             
              def pause
         | 
| 11 | 
            -
                xmms2  | 
| 11 | 
            +
                xmms2 "pause"
         | 
| 12 12 | 
             
              end
         | 
| 13 13 |  | 
| 14 14 | 
             
              def prev
         | 
| 15 | 
            -
                xmms2  | 
| 15 | 
            +
                xmms2 "prev"
         | 
| 16 16 | 
             
                super
         | 
| 17 17 | 
             
              end
         | 
| 18 18 |  | 
| 19 19 | 
             
              def next
         | 
| 20 | 
            -
                xmms2  | 
| 20 | 
            +
                xmms2 "next"
         | 
| 21 21 | 
             
                super
         | 
| 22 22 | 
             
              end
         | 
| 23 23 |  | 
| 24 24 | 
             
              def voldown
         | 
| 25 | 
            -
                 | 
| 26 | 
            -
                new_volume = (current < 11 ? 0 : current - 10)
         | 
| 27 | 
            -
                xmms2 "server volume #{new_volume}"
         | 
| 25 | 
            +
                set_volume volume - 10
         | 
| 28 26 | 
             
              end
         | 
| 29 27 |  | 
| 30 28 | 
             
              def volup
         | 
| 31 | 
            -
                 | 
| 32 | 
            -
                new_volume = (current > 89 ? 100 : current + 10)
         | 
| 33 | 
            -
                xmms2 "server volume #{new_volume}"
         | 
| 29 | 
            +
                set_volume volume + 10
         | 
| 34 30 | 
             
              end
         | 
| 35 31 |  | 
| 36 32 | 
             
              def volume
         | 
| 37 33 | 
             
                # currently just the first (left?) channel
         | 
| 38 | 
            -
                xmms2( | 
| 39 | 
            -
                $1
         | 
| 34 | 
            +
                xmms2("server volume").split("\n").first.sub(/([^0-9]*)/, "").to_i
         | 
| 40 35 | 
             
              end
         | 
| 41 36 |  | 
| 42 37 | 
             
              def track
         | 
| 43 | 
            -
                xmms2 " | 
| 38 | 
            +
                xmms2 "current -f '${title}'"
         | 
| 44 39 | 
             
              end
         | 
| 45 40 |  | 
| 46 41 | 
             
              def artist
         | 
| 47 | 
            -
                xmms2 " | 
| 42 | 
            +
                xmms2 "current -f '${artist}'"
         | 
| 48 43 | 
             
              end
         | 
| 49 44 |  | 
| 50 45 | 
             
              def album
         | 
| 51 | 
            -
                xmms2 " | 
| 46 | 
            +
                xmms2 "current -f '${album}'"
         | 
| 52 47 | 
             
              end
         | 
| 53 48 |  | 
| 54 49 | 
             
              def playing?
         | 
| 55 | 
            -
                xmms2(" | 
| 50 | 
            +
                xmms2("current -f '${playback_status}'") == "Playing"
         | 
| 56 51 | 
             
              end
         | 
| 57 52 |  | 
| 58 53 | 
             
              def paused?
         | 
| 59 | 
            -
                xmms2(" | 
| 54 | 
            +
                xmms2("current -f '${playback_status}'") == "Paused"
         | 
| 60 55 | 
             
              end
         | 
| 61 56 |  | 
| 62 57 | 
             
              def launched?
         | 
| 63 58 | 
             
                # xmms2 autolaunches the daemon, so this should always be true
         | 
| 64 | 
            -
                %x(xmms2  | 
| 59 | 
            +
                %x(xmms2 current 2> /dev/null)
         | 
| 65 60 | 
             
                $? == 0
         | 
| 66 61 | 
             
              end
         | 
| 67 62 |  | 
| 68 63 | 
             
              def host
         | 
| 69 | 
            -
                ENV[ | 
| 64 | 
            +
                ENV["XMMS_PATH"] || super
         | 
| 65 | 
            +
              end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              def platforms
         | 
| 68 | 
            +
                [:unix, :linux]
         | 
| 70 69 | 
             
              end
         | 
| 71 70 |  | 
| 72 71 | 
             
              private
         | 
| 73 | 
            -
                def xmms2(command)
         | 
| 74 | 
            -
                  %x(xmms2 #{command}).split("\n").first.strip
         | 
| 75 | 
            -
                end
         | 
| 76 | 
            -
            end
         | 
| 77 72 |  | 
| 73 | 
            +
              def xmms2(command)
         | 
| 74 | 
            +
                ret = %x(xmms2 #{command}).split("\n").first
         | 
| 75 | 
            +
                ret ? ret.strip : ""
         | 
| 76 | 
            +
              end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
              def set_volume(num)
         | 
| 79 | 
            +
                num = if num < 0
         | 
| 80 | 
            +
                        0
         | 
| 81 | 
            +
                      elsif num > 100
         | 
| 82 | 
            +
                        100
         | 
| 83 | 
            +
                      end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                xmms2 "server volume #{num}"
         | 
| 86 | 
            +
              end
         | 
| 87 | 
            +
            end
         |