You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用JavaScript调用Last.FM API时部分曲目出现Error Code 5问题求助

解决Last.FM JS包装器track.getInfo部分曲目报错错误码5的问题

问题分析

你遇到的错误码5(无效响应格式),看似是格式参数问题,但实际大概率是包装器对含特殊字符的参数处理存在bug。比如Mobb Deep的《Survival of The Fittest》包含空格、大小写混合字符,可能请求时未正确编码,导致Last.FM API无法识别请求格式,进而返回错误。

解决方案

1. 强制传递format并编码曲目名称

尝试手动对track名称做URL编码,同时强制指定format参数,确保包装器正确传递该参数:

async function lastFMTest(){
  const trackName = encodeURIComponent('Survival of The Fittest');
  const data = await lastfm.track.getInfo({
    artist: 'Mobb Deep',
    track: trackName,
    username: 'NAG_Z',
    autocorrect: '1',
    format: 'json'
  });
  console.log(data.track.name, data.track.userplaycount, data.track.toptags.tag[0].name);
}

2. 直接使用原生Fetch请求(绕过包装器)

如果包装器本身存在参数处理缺陷,直接构造API请求更可靠:

async function lastFMTestDirect() {
  const API_KEY = '你的Last.FM API密钥'; // 替换成你的密钥
  const params = new URLSearchParams({
    method: 'track.getInfo',
    artist: 'Mobb Deep',
    track: 'Survival of The Fittest',
    username: 'NAG_Z',
    autocorrect: 1,
    format: 'json',
    api_key: API_KEY
  });

  const response = await fetch(`https://ws.audioscrobbler.com/2.0/?${params}`);
  const data = await response.json();
  
  if (data.error) {
    console.error('请求错误:', data);
    return;
  }
  console.log(data.track.name, data.track.userplaycount, data.track.toptags.tag[0].name);
}

3. 检查包装器的参数处理逻辑

查看该包装器的源码,确认它是否自动添加format=json参数,或是处理特殊字符时存在编码遗漏。如果是包装器的bug,可以提交issue或自行修改源码中的参数处理部分。

内容的提问来源于stack exchange,提问作者NAGZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 22:32:24