A question regarding my next plugin
-
How's it going?
-
@psychobunny About where my last post is, I couldn't work out why it doesn't seem to be connecting to the api, or if it does, I just don't know how to pull the data that I'm looking for. I know what I want, and I think I know how to get it, but the only way it doesn't crash the plugin, it gives me the undefined error above.
Basically this is the json output of what I wish to target.
{ "pagination": { "per_page": 1, "items": 14256, "page": 1, "urls": { "last": "http://api.discogs.com/database/search?per_page=1&type=release&catno=VSN018&page=14256&f=json", "next": "http://api.discogs.com/database/search?per_page=1&type=release&catno=VSN018&page=2&f=json" }, "pages": 14256 }, "results": [ { "style": [ "Drum n Bass" ], "thumb": "http://api.discogs.com/image/R-90-5844720-1404286626-1507.jpeg", "format": [ "Vinyl", "12\"", "45 RPM", "EP", "File", "MP3" ], "country": "Netherlands", "title": "Noisia - Purpose EP", "uri": "/Noisia-Purpose-EP/release/5844720", "community": { "have": 17, "want": 27 }, "label": [ "Vision Recordings" ], "catno": "VSN018", "year": "2014", "genre": [ "Electronic" ], "resource_url": "http://api.discogs.com/releases/5844720", "type": "release", "id": 5844720 } ] }
But
returnData = { results: { uri: results.uri, thumbnail: results.thumb, catno: results.catno, title: results.title, style: results.style, label: results.label, year: results.year } };
Returns undefined for everything, so I'd assume it doesn't connect.
-
@a_5mith,
results
in that returned data set is anArray
, so you'll have to iterate through it (or cheap out and just look at the first array index):returnData = { results: { uri: results[0].uri, thumbnail: results[0].thumb, catno: results[0].catno, title: results[0].title, style: results[0].style, label: results[0].label, year: results[0].year } };
... maybe?
Edit: Wow, that was fast.
-
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.