gracenote 1.0.1 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/gracenote.rb +120 -14
- data/lib/gracenote/HTTP.rb +2 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5d4bdc1ae286f082a3230f516c9750a09a010ed2
|
4
|
+
data.tar.gz: e921c97c0b4946b1487e7c1c1e05db37ec535674
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d6b4e28f592b05afa5441469288ea7e0a606d7bc882ba2f0a1c9cb646060032a185003cb067c07296430b0c73e36d64b09fa5527eba0e306de6fd6efce9fd7d7
|
7
|
+
data.tar.gz: b2d9b321bb97a238a5e7b94a752b7dac1ebde804df27dcf34cf638d8e0fd08deb5cec6c4c1938fcf4528a555df04859c03f0e99277f91ed0c582de36bfa072a5
|
data/lib/gracenote.rb
CHANGED
@@ -48,7 +48,7 @@ class Gracenote
|
|
48
48
|
<CLIENT>"+ clientID +"</CLIENT>
|
49
49
|
</QUERY>
|
50
50
|
</QUERIES>"
|
51
|
-
resp =
|
51
|
+
resp = api(data)
|
52
52
|
resp = checkRES resp
|
53
53
|
@userID = resp['RESPONSES']['RESPONSE']['USER']
|
54
54
|
|
@@ -66,9 +66,9 @@ class Gracenote
|
|
66
66
|
if @userID == nil
|
67
67
|
registerUser
|
68
68
|
end
|
69
|
-
body =
|
70
|
-
data = constructQueryReq(body)
|
71
|
-
return
|
69
|
+
body = constructAlbumQueryBody(artistName, albumTitle, trackTitle, "", "ALBUM_SEARCH", matchMode)
|
70
|
+
data = api(constructQueryReq(body))
|
71
|
+
return parseAlbumRES(data);
|
72
72
|
end
|
73
73
|
|
74
74
|
# Function: findArtist
|
@@ -100,8 +100,8 @@ class Gracenote
|
|
100
100
|
registerUser
|
101
101
|
end
|
102
102
|
body = "<TOC><OFFSETS>" + toc + "</OFFSETS></TOC>"
|
103
|
-
data =
|
104
|
-
return
|
103
|
+
data = constructAlbumQueryBody(body, "ALBUM_TOC")
|
104
|
+
return parseAlbumRES(data)
|
105
105
|
end
|
106
106
|
|
107
107
|
# Function: fetchOETData
|
@@ -124,7 +124,7 @@ class Gracenote
|
|
124
124
|
</OPTION>"
|
125
125
|
|
126
126
|
data = constructQueryReq(body, "ALBUM_FETCH")
|
127
|
-
resp =
|
127
|
+
resp = api(data)
|
128
128
|
resp = checkRES resp
|
129
129
|
|
130
130
|
json = resp["RESPONSES"]
|
@@ -136,15 +136,121 @@ class Gracenote
|
|
136
136
|
return output
|
137
137
|
end
|
138
138
|
|
139
|
-
#
|
139
|
+
# TVShow methods
|
140
|
+
|
141
|
+
# Function: fetchSeason
|
142
|
+
# Fetches details of a season from gn_id
|
143
|
+
# Arguments:
|
144
|
+
# gn_id
|
145
|
+
def fetchSeason (gn_id)
|
146
|
+
if @userID == nil
|
147
|
+
registerUser
|
148
|
+
end
|
149
|
+
|
150
|
+
body = "<GN_ID>" + gn_id + "</GN_ID>"
|
151
|
+
data = constructQueryReq(body, "SEASON_FETCH")
|
152
|
+
|
153
|
+
resp = api(data)
|
154
|
+
return checkRES(resp)
|
155
|
+
end
|
156
|
+
|
157
|
+
# Function: fetchTVShow
|
158
|
+
# Fetches details of TV Show from gn_id
|
159
|
+
# Arguments:
|
160
|
+
# gn_id
|
161
|
+
def fetchTVShow (gn_id)
|
162
|
+
if @userID == nil
|
163
|
+
registerUser
|
164
|
+
end
|
165
|
+
|
166
|
+
body = "<GN_ID>" + gn_id + "</GN_ID>
|
167
|
+
<OPTION>
|
168
|
+
<PARAMETER>SELECT_EXTENDED</PARAMETER>
|
169
|
+
<VALUE>IMAGE</VALUE>
|
170
|
+
</OPTION>"
|
171
|
+
|
172
|
+
data = constructQueryReq(body, "SERIES_FETCH")
|
173
|
+
|
174
|
+
resp = api(data)
|
175
|
+
return checkRES(resp)
|
176
|
+
end
|
177
|
+
|
178
|
+
# Function: findTVShow
|
179
|
+
# Finds TVShows which matches the name
|
180
|
+
# Arguments:
|
181
|
+
# name
|
182
|
+
# single
|
183
|
+
def findTVShow (name, single=true)
|
184
|
+
if @userID == nil
|
185
|
+
registerUser
|
186
|
+
end
|
187
|
+
|
188
|
+
singleText = single ? '<MODE>SINGLE_BEST</MODE>' : ''
|
189
|
+
|
190
|
+
body = "<TEXT TYPE='TITLE'>" + name + "</TEXT>
|
191
|
+
" + singleText + "
|
192
|
+
<OPTION>
|
193
|
+
<PARAMETER>SELECT_EXTENDED</PARAMETER>
|
194
|
+
<VALUE>IMAGE</VALUE>
|
195
|
+
</OPTION>"
|
196
|
+
|
197
|
+
data = constructQueryReq(body, "SERIES_SEARCH")
|
198
|
+
|
199
|
+
resp = api(data)
|
200
|
+
return checkRES(resp)
|
201
|
+
end
|
202
|
+
|
203
|
+
# Function: fetchContributor
|
204
|
+
# Fetches details of a contributor from gn_id
|
205
|
+
# Arguments:
|
206
|
+
# gn_id
|
207
|
+
def fetchContributor (gn_id)
|
208
|
+
if @userID == nil
|
209
|
+
registerUser
|
210
|
+
end
|
211
|
+
|
212
|
+
body = "<GN_ID>" + gn_id + "</GN_ID>
|
213
|
+
<OPTION>
|
214
|
+
<PARAMETER>SELECT_EXTENDED</PARAMETER>
|
215
|
+
<VALUE>IMAGE,MEDIAGRAPHY_IMAGES</VALUE>
|
216
|
+
</OPTION>"
|
217
|
+
|
218
|
+
data = constructQueryReq(body, "CONTRIBUTOR_FETCH")
|
219
|
+
|
220
|
+
resp = api(data)
|
221
|
+
return checkRES(resp)
|
222
|
+
end
|
223
|
+
|
224
|
+
# Function: findContributor
|
225
|
+
# Find details of a contributor from name
|
226
|
+
# Arguments:
|
227
|
+
# name
|
228
|
+
def findContributor (name)
|
229
|
+
if @userID == nil
|
230
|
+
registerUser
|
231
|
+
end
|
232
|
+
|
233
|
+
body = "<TEXT TYPE='NAME'>" + name + "</TEXT>
|
234
|
+
<MODE>SINGLE_BEST</MODE>
|
235
|
+
<OPTION>
|
236
|
+
<PARAMETER>SELECT_EXTENDED</PARAMETER>
|
237
|
+
<VALUE>IMAGE,MEDIAGRAPHY_IMAGES</VALUE>
|
238
|
+
</OPTION>"
|
239
|
+
|
240
|
+
data = constructQueryReq(body, "CONTRIBUTOR_SEARCH")
|
241
|
+
|
242
|
+
resp = api(data)
|
243
|
+
return checkRES(resp)
|
244
|
+
end
|
245
|
+
|
246
|
+
###################################################### protected methods ######################################################
|
140
247
|
protected
|
141
248
|
# Function: api
|
142
249
|
# execute a query on gracenote webapi
|
143
250
|
# Arguments:
|
144
251
|
# query
|
145
252
|
def api (query)
|
146
|
-
|
147
|
-
return parseRES(resp)
|
253
|
+
return HTTP.post(@apiURL, query)
|
148
254
|
end
|
149
255
|
|
150
256
|
# Function: constructQueryReq
|
@@ -165,7 +271,7 @@ class Gracenote
|
|
165
271
|
</QUERIES>"
|
166
272
|
end
|
167
273
|
|
168
|
-
# Function:
|
274
|
+
# Function: constructAlbumQueryBody
|
169
275
|
# Constructs query body
|
170
276
|
# Arguments:
|
171
277
|
# artist
|
@@ -174,7 +280,7 @@ class Gracenote
|
|
174
280
|
# gn_id
|
175
281
|
# command
|
176
282
|
# matchMode
|
177
|
-
def
|
283
|
+
def constructAlbumQueryBody(artist, album, track, gn_id, command = "ALBUM_SEARCH", matchMode = @@ALL_RESULTS)
|
178
284
|
body = ""
|
179
285
|
# If a fetch scenario, user the Gracenote ID.
|
180
286
|
if command == "ALBUM_FETCH"
|
@@ -247,11 +353,11 @@ class Gracenote
|
|
247
353
|
return json
|
248
354
|
end
|
249
355
|
|
250
|
-
# Function:
|
356
|
+
# Function: parseAlbumRES
|
251
357
|
# Parse's an XML response
|
252
358
|
# Arguments:
|
253
359
|
# resp
|
254
|
-
def
|
360
|
+
def parseAlbumRES resp
|
255
361
|
json = nil
|
256
362
|
begin
|
257
363
|
json = checkRES resp
|
data/lib/gracenote/HTTP.rb
CHANGED
@@ -13,6 +13,7 @@ class HTTP
|
|
13
13
|
def self.get(path, cookie='')
|
14
14
|
uri = URI(path)
|
15
15
|
req = Net::HTTP.new(uri.host, uri.port)
|
16
|
+
req.read_timeout = 60
|
16
17
|
req.use_ssl = (uri.scheme == "https") ? true : false
|
17
18
|
headers = {'Cookie' => cookie}
|
18
19
|
|
@@ -23,6 +24,7 @@ class HTTP
|
|
23
24
|
def self.post(path, data='', cookie='')
|
24
25
|
uri = URI(path)
|
25
26
|
req = Net::HTTP.new(uri.host, uri.port)
|
27
|
+
req.read_timeout = 60
|
26
28
|
req.use_ssl = (uri.scheme == "https") ? true : false
|
27
29
|
headers = {'Cookie' => cookie, "Content-Type" => "application/xml"}
|
28
30
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gracenote
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- nobelium
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-03-
|
11
|
+
date: 2014-03-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|