【问题标题】:How to get images of Discogs releases?如何获取 Discogs 版本的图像?
【发布时间】:2016-05-10 11:54:03
【问题描述】:

我想获取 Discogs 版本的图片。我可以在没有 Discogs API 的情况下做到这一点吗? 他们的数据库转储中没有指向图像的链接。

【问题讨论】:

    标签: image discogs-api


    【解决方案1】:

    要在没有 API 的情况下执行此操作,您必须加载网页并从 html 源代码中提取图像。您可以通过加载https://www.discogs.com/release/xxxx 找到相关页面,其中xxxx 是版本号。由于 html 只是一个文本文件,您现在可以提取 jpeg URL。

    我不知道你的编程语言是什么,但我确信它可以处理字符串函数,比如indexOfsubString。您可以提取图片的 html 的 OG:Image 内容。

    举个例子:https://www.discogs.com/release/8140515

    将位于https://www.discogs.com/release/8140515 的页面与下面提取的URL 图像进行比较。

    【讨论】:

    • 注意:您可能需要微调这些索引位置编号。例如:您可能会从 +19 更改为 +21 以切断引号等(如果需要通过您的编码工具)。测试的时候就知道了...
    • 试图获取许多版本的图像,Discogs 不会阻止自动访问吗?
    • @Collector,我不这么认为(除非您可以另外显示)。我的任何测试 AS3 代码或 PHP 代码都没有阻止访问。每加载 5 张图片只是为了检查路径是否正确解析。
    • 好的。问题是在没有 API 的情况下获取图像。我相信我为此展示了一个好的/正确的答案。至于5000张照片,这是一个新的细节。我不是服务器专家。我只能建议您将其放慢速度以在雷达下飞行,因为我可以想象来自同一 IP 地址的 5000 个请求一次看起来很可疑并被 IP 阻止。一个“全天、每天”的网站用户可以访问一周内分布的 5000 张图片,并且不会被阻止,所以你知道...慢慢来。
    【解决方案2】:

    这是使用 Java 和 Jsoup 库的方法。

    • 获取发布的 HTML 页面
    • 解析 HTML 并获取 <meta property="og:image" content=".." /> 以获取 content
    import java.io.IOException;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;
    
    public class DiscogRelease {
    
        private final String url;
    
        public DiscogRelease(String url) {
            this.url = url;
        }
    
        public String getImageUrl() {
            try {
                Document doc = Jsoup.connect(this.url).get();
                Elements metas = doc.head().select("meta[property=\"og:image\"]");
                if (!metas.isEmpty()) {
                    Element element = metas.get(0);
                    return element.attr("content");
                }
            } catch (IOException ex) {
                Logger.getLogger(DiscogRelease.class.getName()).log(Level.SEVERE, null, ex);
            }
            return null;
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2017-02-16
      • 2015-10-24
      • 2023-01-19
      • 1970-01-01
      • 2021-12-28
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 2021-01-09
      相关资源
      最近更新 更多