sonos 0.2.0 → 0.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.
- data/Changelog.markdown +4 -0
- data/Readme.markdown +35 -7
- data/lib/sonos/endpoint/transport.rb +8 -1
- data/lib/sonos/version.rb +1 -1
- data/sonos.gemspec +1 -0
- metadata +19 -3
data/Changelog.markdown
CHANGED
data/Readme.markdown
CHANGED
@@ -64,21 +64,49 @@ There is a very limited CLI right now. You can run `sonos discover` to get the I
|
|
64
64
|
|
65
65
|
## To Do
|
66
66
|
|
67
|
+
### General
|
68
|
+
|
67
69
|
* Refactor all of the things
|
68
70
|
* Nonblocking calls with Celluloid::IO
|
69
71
|
* List other speakers
|
70
|
-
* Loudness
|
71
|
-
* Alarm clock
|
72
|
-
* Group management
|
73
|
-
* Party Mode
|
74
|
-
* Join
|
75
|
-
* Line-in (I don't have a PLAY:5, so I'll need help testing this one)
|
76
72
|
* Handle errors better
|
77
|
-
* Fix album art in `now_playing`
|
78
73
|
* Handle line-in in `now_playing`
|
79
74
|
* Better support for stero pairs
|
80
75
|
* CLI client for everything
|
81
76
|
|
77
|
+
### Features
|
78
|
+
|
79
|
+
* Alarm clock
|
80
|
+
* Pause all (there is no play all in the controller, we could loop through and do it though)
|
81
|
+
* Group management
|
82
|
+
* Party Mode
|
83
|
+
* Join
|
84
|
+
* Line-in
|
85
|
+
* Toggle cross fade
|
86
|
+
* Toggle shuffle
|
87
|
+
* Set repeat mode
|
88
|
+
* Scrub
|
89
|
+
* Search music library
|
90
|
+
* Browse music library
|
91
|
+
* Add songs to queue
|
92
|
+
* Skip to song in queue
|
93
|
+
* Sleep timer
|
94
|
+
|
95
|
+
### Maybe
|
96
|
+
|
97
|
+
If we are implementing everything the official Sonos Controller does, here's some more stuff:
|
98
|
+
|
99
|
+
* Set zone name and icon
|
100
|
+
* Create stero pair
|
101
|
+
* Support for BRIDGE
|
102
|
+
* Support for DOCK
|
103
|
+
* Manage services
|
104
|
+
* Date and time
|
105
|
+
* Wireless channel
|
106
|
+
* Audio compression
|
107
|
+
* Automatically check for updates (not sure if this is a controller only preference)
|
108
|
+
* Local music servers
|
109
|
+
|
82
110
|
## Contributing
|
83
111
|
|
84
112
|
1. Fork it
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'uri'
|
2
|
+
|
1
3
|
module Sonos::Endpoint::Transport
|
2
4
|
TRANSPORT_ENDPOINT = '/MediaRenderer/AVTransport/Control'
|
3
5
|
TRANSPORT_XMLNS = 'urn:schemas-upnp-org:service:AVTransport:1'
|
@@ -9,6 +11,11 @@ module Sonos::Endpoint::Transport
|
|
9
11
|
body = response.body[:get_position_info_response]
|
10
12
|
doc = Nokogiri::XML(body[:track_meta_data])
|
11
13
|
|
14
|
+
art_path = doc.xpath('//upnp:albumArtURI').inner_text
|
15
|
+
|
16
|
+
# TODO: No idea why this is necessary. Maybe its a Nokogiri thing
|
17
|
+
art_path.sub!('/getaa?s=1=x-sonos-http', '/getaa?s=1&u=x-sonos-http')
|
18
|
+
|
12
19
|
{
|
13
20
|
title: doc.xpath('//dc:title').inner_text,
|
14
21
|
artist: doc.xpath('//dc:creator').inner_text,
|
@@ -17,7 +24,7 @@ module Sonos::Endpoint::Transport
|
|
17
24
|
track_duration: body[:track_duration],
|
18
25
|
current_position: body[:rel_time],
|
19
26
|
uri: body[:track_uri],
|
20
|
-
album_art: "http://#{self.ip}:#{PORT}#{
|
27
|
+
album_art: "http://#{self.ip}:#{Sonos::PORT}#{art_path}"
|
21
28
|
}
|
22
29
|
end
|
23
30
|
|
data/lib/sonos/version.rb
CHANGED
data/sonos.gemspec
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sonos
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -28,6 +28,22 @@ dependencies:
|
|
28
28
|
- - ~>
|
29
29
|
- !ruby/object:Gem::Version
|
30
30
|
version: 2.0.2
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
name: nokogiri
|
33
|
+
requirement: !ruby/object:Gem::Requirement
|
34
|
+
none: false
|
35
|
+
requirements:
|
36
|
+
- - ! '>='
|
37
|
+
- !ruby/object:Gem::Version
|
38
|
+
version: '0'
|
39
|
+
type: :runtime
|
40
|
+
prerelease: false
|
41
|
+
version_requirements: !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
31
47
|
- !ruby/object:Gem::Dependency
|
32
48
|
name: thor
|
33
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,7 +102,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
86
102
|
version: '0'
|
87
103
|
segments:
|
88
104
|
- 0
|
89
|
-
hash: -
|
105
|
+
hash: -2990383853655204370
|
90
106
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
91
107
|
none: false
|
92
108
|
requirements:
|
@@ -95,7 +111,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
95
111
|
version: '0'
|
96
112
|
segments:
|
97
113
|
- 0
|
98
|
-
hash: -
|
114
|
+
hash: -2990383853655204370
|
99
115
|
requirements: []
|
100
116
|
rubyforge_project:
|
101
117
|
rubygems_version: 1.8.23
|