alexa_remotectl 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/alexa_remotectl.rb +94 -8
- data.tar.gz.sig +0 -0
- metadata +2 -2
- metadata.gz.sig +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b87386430128ab1ce213a4cd52575053a590ed2434db563f47d0040d1ad6895a
|
4
|
+
data.tar.gz: 1c41066bff31ad20906dea4d73a60d015033d44a25030e22f149303c2948e83f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 211a820b58b377520c8f08861b04641a0ca6c8624f69f9bca67e79a5ef17555aa61debd3e35a5c550bd662bb4801650f7a2039fb78b0cf4738f96d756b41daab
|
7
|
+
data.tar.gz: 9565b73cdcf8609d313f5ea5a53bfa0556fad0f65c48f8b0f14e1c8794774caf517e6f8ee2f454df9c6c4aa35b33644d7ed40083b803f591a7d5f35643177165
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/alexa_remotectl.rb
CHANGED
@@ -8,6 +8,7 @@
|
|
8
8
|
require 'net/http'
|
9
9
|
require 'uri'
|
10
10
|
require 'clipboard'
|
11
|
+
require 'json'
|
11
12
|
|
12
13
|
# Use the CodeWizard with the cURL command you've copied using Developer
|
13
14
|
# tools on Alexa's SPA page (within the web browser).
|
@@ -63,33 +64,96 @@ class AlexaRemoteCtl
|
|
63
64
|
|
64
65
|
end
|
65
66
|
|
67
|
+
def info()
|
68
|
+
device_player()[:playerInfo]
|
69
|
+
end
|
70
|
+
|
71
|
+
def mute?()
|
72
|
+
info()[:volume][:muted]
|
73
|
+
end
|
74
|
+
|
75
|
+
alias muted? mute?
|
76
|
+
|
77
|
+
# skip to the next music track
|
78
|
+
def next
|
79
|
+
pp_cmd('Next')
|
80
|
+
end
|
81
|
+
|
66
82
|
def pause
|
67
|
-
|
83
|
+
pp_cmd('Pause')
|
68
84
|
end
|
69
85
|
|
70
86
|
def play
|
71
|
-
|
87
|
+
pp_cmd('Play')
|
88
|
+
end
|
89
|
+
|
90
|
+
# Artist name
|
91
|
+
#
|
92
|
+
def text1()
|
93
|
+
info()[:infoText][:subText1]
|
94
|
+
end
|
95
|
+
|
96
|
+
# music station
|
97
|
+
#
|
98
|
+
def text2()
|
99
|
+
info()[:infoText][:subText2]
|
100
|
+
end
|
101
|
+
|
102
|
+
# music track title
|
103
|
+
#
|
104
|
+
def title()
|
105
|
+
info()[:infoText][:title]
|
106
|
+
end
|
107
|
+
|
108
|
+
def vol()
|
109
|
+
info()[:volume][:volume]
|
110
|
+
end
|
111
|
+
|
112
|
+
def vol=(n)
|
113
|
+
|
114
|
+
return unless n.between? 0, 40
|
115
|
+
|
116
|
+
body = '{"type":"VolumeLevelCommand","volumeLevel":' + n.to_s \
|
117
|
+
+ ',"contentFocusClientId":null}'
|
118
|
+
device_cmd(body)
|
72
119
|
end
|
73
120
|
|
74
121
|
private
|
75
122
|
|
76
|
-
|
123
|
+
# play, pause, or next
|
124
|
+
#
|
125
|
+
def pp_cmd(s)
|
126
|
+
body = '{"type":"' + s + 'Command","contentFocusClientId":null}'
|
127
|
+
device_cmd body
|
128
|
+
end
|
129
|
+
|
130
|
+
def device_cmd(body)
|
77
131
|
|
78
132
|
serialno = @device[:serialno]
|
79
133
|
type = @device[:type]
|
80
134
|
|
81
135
|
url = "https://#{@domain}/api/np/command?deviceSerialNumber=#{serialno}&deviceType=#{type}"
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
136
|
+
post_command url, body
|
137
|
+
|
138
|
+
end
|
139
|
+
|
140
|
+
def device_player()
|
141
|
+
serialno = @device[:serialno]
|
142
|
+
type = @device[:type]
|
143
|
+
|
144
|
+
url = "https://#{@domain}/api/np/player?deviceSerialNumber=#{serialno}&deviceType=#{type}"
|
145
|
+
r = post_request url
|
146
|
+
JSON.parse(r.body, symbolize_names: true)
|
147
|
+
end
|
148
|
+
|
149
|
+
def make_response(uri, request)
|
86
150
|
|
87
151
|
request["Accept"] = "application/json, text/javascript, */*; q=0.01"
|
88
152
|
request["Accept-Language"] = "en-GB,en-US;q=0.9,en;q=0.8"
|
89
153
|
request["Connection"] = "keep-alive"
|
90
154
|
request["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8"
|
91
155
|
request["Cookie"] = @cookie
|
92
|
-
|
156
|
+
|
93
157
|
request["Referer"] = "https://#{@domain}/spa/index.html"
|
94
158
|
request["Sec-Fetch-Dest"] = "empty"
|
95
159
|
request["Sec-Fetch-Mode"] = "cors"
|
@@ -110,8 +174,30 @@ class AlexaRemoteCtl
|
|
110
174
|
http.request(request)
|
111
175
|
end
|
112
176
|
|
177
|
+
end
|
178
|
+
|
179
|
+
def post_command(url, body='')
|
180
|
+
uri = URI.parse(url)
|
181
|
+
request = Net::HTTP::Post.new(uri)
|
182
|
+
request.body = body
|
183
|
+
request.content_type = "application/x-www-form-urlencoded; charset=UTF-8"
|
184
|
+
request["Origin"] = "https://" + @domain
|
185
|
+
|
186
|
+
response = make_response(uri, request)
|
187
|
+
|
188
|
+
# response.code
|
189
|
+
# response.body
|
190
|
+
end
|
191
|
+
|
192
|
+
def post_request(url)
|
193
|
+
|
194
|
+
uri = URI.parse(url)
|
195
|
+
request = Net::HTTP::Get.new(uri)
|
196
|
+
response = make_response(uri, request)
|
197
|
+
|
113
198
|
# response.code
|
114
199
|
# response.body
|
115
200
|
|
116
201
|
end
|
202
|
+
|
117
203
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alexa_remotectl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -35,7 +35,7 @@ cert_chain:
|
|
35
35
|
d/gEwBtUmduwWZNX2NOJehf8s1cnH9OBP7s1ziHjdkZCgkQm3QewRRcdfZeYwFi6
|
36
36
|
4kVEcApgAgd+04ctE6uiRn5o
|
37
37
|
-----END CERTIFICATE-----
|
38
|
-
date: 2022-05-
|
38
|
+
date: 2022-05-21 00:00:00.000000000 Z
|
39
39
|
dependencies:
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: clipboard
|
metadata.gz.sig
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
7�UN���ht��gl���ږ������٤_�xe�}P9�������^�,����>�m������8ʖU[��+-9Qo�a��(>��_�4�vVo��2/�4���L����J���xi�*������PX��1n(R�;��mJ�� �ȉ�͖��LXd�A_�8+����EkX+1��m!n+F��z� �k��i�P$Ed��z�[���aU�wh����v)H��\L��/"���J��U:"�W������e��*�>�a΅��yzh7u���B�b���������vt'��r�X;�WW� U��$��Z�&����
|
2
|
+
�K
|