Last.fm API返回所有艺术家的相同的“白星”图片。

9

最近我在使用Last.fm API时遇到了问题,我有一个完全可用的代码,2/3天前还能正常工作,但今天每次尝试从API获取艺术家图片时,都会返回一个数组,其中所有艺术家的所有图片大小都是相同的网址。一个灰色背景白色星星的图像。我已经尝试创建另一个带有新API密钥的帐户,以检查是否与我的密钥有问题,因为自上次更新API相关代码以来已经过了几个月,但没有成功。

以下是代码:

    private static final String BASE_URL = "http://ws.audioscrobbler.com/2.0/";
private static final String API_KEY = "123456789";

@Nullable
public static String fetchJson(String url) {


    HttpURLConnection urlConnection = null;
    StringBuilder mStringBuilder = new StringBuilder();

    try {
        urlConnection = (HttpURLConnection) new URL(url).openConnection();

        InputStream mInputStream = new BufferedInputStream(urlConnection.getInputStream());
        BufferedReader mReader = new BufferedReader(new InputStreamReader(mInputStream));

        String line;
        while ((line = mReader.readLine()) != null) {
            mStringBuilder.append(line);
        }

        return mStringBuilder.toString();

    } catch (Exception e) {

        e.printStackTrace();
        return null;

    } finally {
        if (urlConnection != null) urlConnection.disconnect();
    }
}



public static String createArtistURL(String artistName) {
    artistName = artistName.replace("&", "%26");
    // TODO: 03/05/2019  testar isso  URLEncoder.encode(artistName,UTF?); 
    return BASE_URL.concat("?method=artist.getinfo")
            .concat("&artist=").concat(artistName)
            .concat("&lang=").concat(Locale.getDefault().getLanguage())
            .concat("&api_key=").concat(API_KEY)
            .concat("&format=json");
      }

4
经历了同样的事情,不确定发生了什么。 - Alex
4
好的,我会尽力进行翻译。以下是需要翻译的内容:相关链接:https://getsatisfaction.com/lastfm/topics/api-announcement-dac8oefw5vrxq 和 https://getsatisfaction.com/lastfm/topics/new-api-problems-urgent - Morrison Chang
这太荒谬了,看起来他们不会很快带来这个功能。 - Adam
@Adam,我已经迁移到Spotify API了,Last.fm对我来说已经死了。 - Gilian Marques
@GilianMarques 这可能不是一个坏主意。 - Adam
2个回答

7

很不幸,这是Last.fm故意做出的改变:

我们已经对API进行了更改,以限制滥用并根据我们的API使用条款为每个人提供更好的服务。

虽然我们允许API用户通过API访问大量数据,但第三方使用音频、视听、图像或艺术品一直违反我们的API使用条款。在某些情况下,一些数据可能通过少量API调用间接访问,因此作为最近API清理的一部分,我们已纠正了该异常。

如果您的应用受到影响,请参考我们的API使用条款以确保您的合规性。

艺术家图片的替代API来自MusicBrainz。如果您正在处理Last.fm数据,则可能已经拥有艺术家的MBID,您可以像这样查询(JavaScript示例):


1
Hugo,在你的JavaScript示例中,如果MusicBrainz返回包含来自Wikimedia Commons的图像URL的关系,则会获取该图像。即使许多艺术家的图像在Wikimedia Commons页面上可用,它也不会返回图像URL。你能提出克服这个问题的任何方法吗? - Mahan Vyakti

5

我只能提供一个无用的“我也有同样的问题”。希望这只是个bug,而不是LFM即将发布一些灾难性公告的先兆...


1
在问题下添加评论,而不是答案。 - COYG
感谢您与我们分享。由于last.fm API的最新更新阻止我们下载图像,因此似乎我们将不得不找到另一个元数据来源。感谢@MorrisonChang指向API公告。由于明确表明这不是我的代码或API代码上的错误,而所有这些问题都是由于API更改引起的,因此我将把我的问题标记为已解决。 - Gilian Marques
这真是太遗憾了。他们的API使用起来非常愉快(这种情况并不常见)。整个方法签名有点松散,但除此之外,它是我最喜欢的接口。没有艺术家图片,它看起来就不完整。 - user3067533

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接