【问题标题】:How to get album art from last.fm Android如何从 last.fm Android 获取专辑封面
【发布时间】:2014-04-14 11:44:56
【问题描述】:

我正在为 Android 制作音乐播放器,我想为用户提供从 last.fm 获取歌曲专辑封面的功能。

我也有我的 API 密钥。只需要帮助从 Last.fm 检索图像。

在获取图片网址方面的任何帮助也将不胜感激。

提前致谢。

P.S : 有关我的音乐播放器的更多信息,请查看以下链接 https://plus.google.com/u/0/communities/115046175816530349000

【问题讨论】:

    标签: android audio-player last.fm albumart android-music-player


    【解决方案1】:

    我在下面找到了解决方案检查

    添加下面的 AsyncTask 加载器

    public class RetrieveFeedTask extends AsyncTask<String, Void, String> {
    
        protected String doInBackground(String... urls) {
            String albumArtUrl = null;
            try {
                XMLParser parser = new XMLParser();
                String xml = parser.getXmlFromUrl(urls[0]); // getting XML from URL
                Document doc = parser.getDomElement(xml);
                NodeList nl = doc.getElementsByTagName("image");
                for (int i = 0; i < nl.getLength(); i++) {
                    Element e = (Element) nl.item(i);
                    Log.d(LOG_TAG,"Size = " + e.getAttribute("size") + " = " + parser.getElementValue(e));
                    if(e.getAttribute("size").contentEquals("medium")){
                        albumArtUrl = parser.getElementValue(e);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return albumArtUrl;
        }
    }
    

    如下调用:

    StringBuilder stringBuilder = new StringBuilder("http://ws.audioscrobbler.com/2.0/");
    stringBuilder.append("?method=album.getinfo");
    stringBuilder.append("&api_key=");
    stringBuilder.append("YOUR_LAST_FM_API_KEY");
    stringBuilder.append("&artist=" + URLEncoder.encode("ARTIST_NAME_HERE", "UTF-8"));
    stringBuilder.append("&album=" + URLEncoder.encode("ALBUM_NAME_HERE", "UTF-8"));
    url = new RetrieveFeedTask().execute(stringBuilder.toString()).get();
    

    您需要 2 个课程: 1.XML解析器 2.文档元素 两者都将在下面的链接中提供。 Xml parsing tutorial

    【讨论】:

    • 我听说我们不能使用last.fm api来下载供公众使用的封面艺术..不是吗?
    • 我不确定。
    • @NandanKaushik 这是真的,事实上我通过电子邮件发送了 last.fm 支持谁确认了这一点,所以谷歌播放使用 last.fm 专辑封面的所有应用程序不应该这样做 - 除非他们同意,但是我征求了同意并被告知我不应该使用任何应用程序。
    • @Mark 你知道为什么他们把所有的api都做成了供公众使用吗?
    • @NandanKaushik 从他们的网站 - The Agreement covers only Your use of Last.fm Data. You must not sub-license the Last.fm Data to others. - 所以他们是公开的,但仅供“个人”使用,共享任何数据都被视为子许可。
    【解决方案2】:

    请参阅 Last.fm Web 服务文档以获取 album.getInfohttp://www.last.fm/api/show/album.getInfo
    这是一个示例响应,您可以从中轻松了解如何获取封面图片网址:

    <album>
      <name>Believe</name>
      <artist>Cher</artist>
      <id>2026126</id>
      <mbid>61bf0388-b8a9-48f4-81d1-7eb02706dfb0</mbid>
      <url>http://www.last.fm/music/Cher/Believe</url>
      <releasedate>6 Apr 1999, 00:00</releasedate>
      <image size="small">...</image>
      <image size="medium">...</image>
      <image size="large">...</image>
      <listeners>47602</listeners>
      <playcount>212991</playcount>
      <toptags>
        <tag>
          <name>pop</name>
          <url>http://www.last.fm/tag/pop</url>
        </tag>
        ...
      </toptags>
      <tracks>
        <track rank="1">
          <name>Believe</name>
          <duration>239</duration>
          <mbid/>
          <url>http://www.last.fm/music/Cher/_/Believe</url>
          <streamable fulltrack="0">1</streamable>
          <artist>
            <name>Cher</name>
            <mbid>bfcc6d75-a6a5-4bc6-8282-47aec8531818</mbid>
            <url>http://www.last.fm/music/Cher</url>
          </artist>
        </track>
        ...
      </tracks>
    </album>
    

    【讨论】:

    • 我在 Android 中弄明白了。
    • 你这是什么意思?您使用了哪种服务?您为什么不在 SO 上分享您的解决方案? :-)
    • 我刚刚完成了。正在这里添加解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多