Skip to content
This repository has been archived by the owner on Apr 16, 2024. It is now read-only.

song_url 接口返回 Buffer 而不是 string 或者 object #1240

Closed
greenhat616 opened this issue May 23, 2021 · 7 comments
Closed

song_url 接口返回 Buffer 而不是 string 或者 object #1240

greenhat616 opened this issue May 23, 2021 · 7 comments

Comments

@greenhat616
Copy link
Contributor

greenhat616 commented May 23, 2021

环境

  • 系统/平台: Windows 10 21H1(WSL, Ubuntu 20.04 LTS) & CentOS 7 & Ubuntu Server 20.04 LTS

  • nodejs 版本: 16.2.0

  • API版本: 4.0.12

出现问题

song_url 接口返回 Buffer 而不是 string 或者 object

重现步骤

const {song_url} = require('NeteaseCloudMusicApi')
song_url({id: '1844655097'}).then(console.log)

返回结果:

 {
  status: 200,
  body: <Buffer 7b 22 64 61 74 61 22 3a 5b 7b 22 69 64 22 3a 31 38 34 34 36 35 35 30 39 37 2c 22 75 72 6c 22 3a 22 68 74 74 70 3a 2f 2f 6d 38 30 31 2e 6d 75 73 69 63 ... 569 more bytes>,
  cookie: [
    'NMTID=00Oj_fRqJj9jk05W0JwsDe2majE6MkAAAF5mhpStg; Max-Age=315360000; Expires=Wed, 21 May 2031 16:41:26 GMT; Path=/;'
  ]
}

期待效果

修复该问题


维护项目都是业余时间,精力有限,我只能挑容易解决的issues处理,为了节约双方时间,请尽可能提供足够的有用的信息,给的信息不够我只能根据精力和时间看情况处理,如果模板信息看都不看就删掉,我不会进行任何回复,并且一个月后close掉issue

先看文档有没有相关说明,调用前须知必看,确认看完了调用前须知再发 issues

先在 issues 搜一下是否有相似问题,没有再发,否则直接关闭

不处理别人搭建的线上服务的问题,此项目不提供任何线上服务,请自行搭建

重现步骤尽量详细,不能含糊不清,包含请求地址和对应参数以及操作过程描述,不是每个人都喜欢猜别人遇到了什么问题和找参数一个个试,也比较浪费时间

如果不是提建议,提 issues 如果不照着模版来将不会优先处理或放着不管

460 cheating 的问题把 utils/request.js 里面的 headers['X-Real-IP'] 的注释取消掉就好

@greenhat616
Copy link
Contributor Author

greenhat616 commented May 23, 2021

我将尝试跟踪,解决这个问题。我先测试一下是不是 node 的问题。

@greenhat616
Copy link
Contributor Author

用 VMWare 创建的虚拟机环境:
image

测试:
image

@greenhat616
Copy link
Contributor Author

greenhat616 commented May 23, 2021

P.S 3.47.5 版本该接口是正常的,明天有空的话我看看能不能走 inspect 看看是什么问题

@greenhat616
Copy link
Contributor Author

@Binaryify 做了个修复:
image

由于

} catch (e) {
只是尝试解密,但是未尝试直接解析原数据,因此本身接口返回 JSON 的数据就会被错误丢弃。

 } catch (e) {
          // console.log(e)
          answer.body = body
          answer.status = res.status
        }

修改为:

 } catch (e) {
          // console.log(e)
          try {
            answer.body = JSON.parse(body.toString())
          } catch (err) {
            // console.log(err)
            // can't decrypt and can't parse directly
            answer.body = body
          }
          answer.status = res.status
        }

即可。我已经提交了一个 PR 修复此问题。

@greenhat616
Copy link
Contributor Author

#1241 解决了该问题

@Binaryify
Copy link
Owner

好了

@greenhat616
Copy link
Contributor Author

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants