A question regarding my next plugin
-
Right, Birthdays over now (after 3 days) and I'm back on Plugin Development.
SyntaxError: Unexpected token at Object.parse (native) at Request._callback (/home/a_5mith/35hz/node_modules/nodebb-plugin-discogs/index.js:84:33) at Request.self.callback (/home/a_5mith/35hz/node_modules/nodebb-plugin-discogs/node_modules/request/request.js:123:22) at Request.emit (events.js:98:17) at Request.<anonymous> (/home/a_5mith/35hz/node_modules/nodebb-plugin-discogs/node_modules/request/request.js:1047:14) at Request.emit (events.js:117:20) at IncomingMessage.<anonymous> (/home/a_5mith/35hz/node_modules/nodebb-plugin-discogs/node_modules/request/request.js:998:12) at IncomingMessage.emit (events.js:117:20) at _stream_readable.js:929:16 at process._tickDomainCallback (node.js:463:13)
84:33 corresponds to the
parse
incallback(null, JSON.parse(body)),
-
Means your JSON is malformed, perhaps do a
console.log(body)
and try and find if you're missing a comma somewhere (maybe http://jsonlint.com may help you in that respect)EDIT: birthday? yours?
-
@psychobunny Yeah, turned 23 on the 25th.
Right, after a few hours, I'd accidently Ctrl K'd a line out that defines the results var... :shakes head:
I'm now getting output back from discogs, however, it's definitely not right, I've thrown it into a pastebin.
_bytesDispatched: 200, _pendingData: null, _pendingEncoding: '' - Pastebin.com
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Pastebin (pastebin.com)
-
Right, progress, I've got the pagination part
{"pagination": {"per_page": 50, "items": 0, "page": 1, "urls": {} , "pages": 1}, "results": []}
However results is just [], which is the bit I need.
Ok, back at undefined, so would appear @julian's snippet didn't work for me.
-
So, I left this for a week or two, just come back to it to see if I could get it working, checked my console.log and what do you know, I have progress, I now have the output that I need (albeit all of it, not just what I specified)
{"pagination": {"per_page": 1, "items": 1, "page": 1, "urls": {}, "pages": 1}, "results": [{"style": ["Breaks", "Electro", "Drum n Bass"], "thumb": "http://api.discogs.com/image/R-90-3071347-1314359516.jpeg", "format": ["CDr", "Album", "Promo"], "country": "UK", "barcode": [], "uri": "/Noisia-Split-The-Atom/release/3071347", "community": {"have": 12, "want": 10}, "label": ["Vision Recordings"], "catno": "VSNCD001P", "year": "2010", "genre": ["Electronic"], "title": "Noisia - Split The Atom", "resource_url": "http://api.discogs.com/releases/3071347", "type": "release", "id": 3071347}]}
So my question now is what would I use to get this into the template file?
I've done {results.catno} and used @julian's earlier method of looping through, but neither works. Any ideas?
I only need bits of the info inside results. Not the pagination bit.
-
{ "pagination":{ "per_page":1, "items":1, "page":1, "urls":{ }, "pages":1 }, "results":[ { "style":[ "Breaks", "Electro", "Drum n Bass" ], "thumb":"http://api.discogs.com/image/R-90-3071347-1314359516.jpeg", "format":[ "CDr", "Album", "Promo" ], "country":"UK", "barcode":[ ], "uri":"/Noisia-Split-The-Atom/release/3071347", "community":{ "have":12, "want":10 }, "label":[ "Vision Recordings" ], "catno":"VSNCD001P", "year":"2010", "genre":[ "Electronic" ], "title":"Noisia - Split The Atom", "resource_url":"http://api.discogs.com/releases/3071347", "type":"release", "id":3071347 } ] }
Just making it look nice
You'll need to work with the values in the
results
hash then... how come you want the data in the template file, and aren't using a hook to modify the post text like the other plugins? -
Oh! *facepalm* RIGHT. I forgot the GitHub embed plugin uses templates.js because I was do used to doing it the derp way (creating HTML in javascript, heh).
Here is where I pass in the issue data. Notice I am calling
appModule.render
, which is defined inEmbed.init
.Got a repo I can check out? Would be easier than going through the list of how a template can be done wrong (no offense @psychobunny )
-
@julian Sweet, thanks a lot Julian, only issue I've got left is the image(also in your screenshot), the api states that to get the image, you must authenticate yourelf.
I have a consumer key & secret which I believe is all I need, just not sure where to put them.
-
There shouldn't be any need to funnel all requests into their OAuth flow, especially since you're doing this server-side. Is there any way for you to generate a token in the Discogs API settings, instead of having to step through and authorize yourself?
-
@julian Apparently, you can change
http://api.discogs.com/image/R-90-5920911-1406378530-1731.jpeg
to
http://s.pixogs.com/image/R-90-5920911-1406378530-1731.jpeg
And you get the correct image, but I'm not sure how that would be changed, as the API gives you the full URL.