netease.js 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. var express = require('express');
  2. var request = require('request');
  3. var router = express.Router();
  4. /* GET users listing. */
  5. router.get('/', function(req, res, next) {
  6. res.header("Content-Type", "application/json;charset=utf-8");
  7. //console.log('ref:' + req.header('referer'));
  8. var id = req.query.id;
  9. var playlist_id = req.query.playlist_id;
  10. var url = 'http://music.163.com/api/song/detail/?id=' + id + '&ids=%5B' + id + '%5D';
  11. if (playlist_id) {
  12. url = 'http://music.163.com/api/playlist/detail/?id=' + playlist_id;
  13. }
  14. netease_http(url, next, function(data) {
  15. var output = {
  16. data: data,
  17. status: {
  18. code: 200,
  19. message: ''
  20. }
  21. };
  22. if (req.query.callback) {
  23. return res.jsonp(output)
  24. } else {
  25. return res.send(output);
  26. }
  27. });
  28. });
  29. function netease_http(url, next, callback) {
  30. var options = {
  31. url: url,
  32. headers: {
  33. Cookie: 'appver=1.5.0.75771;',
  34. referer: 'http://music.163.com'
  35. }
  36. };
  37. request(options, function(err, res, body) {
  38. if (!err && res.statusCode == 200) {
  39. body = JSON.parse(body);
  40. callback && callback(body);
  41. } else {
  42. var error = new Error(err);
  43. error.status = 404;
  44. next(error);
  45. }
  46. });
  47. }
  48. module.exports = router;