我想获取 Discogs 版本的图像。我可以在没有 Discogs API 的情况下做到这一点吗?他们的数据库转储中没有指向图像的链接。
2 回答
要在没有 API 的情况下执行此操作,您必须加载网页并从 html源代码中提取图像。您可以通过加载版本号https://www.discogs.com/release/xxxx
在哪里找到相关页面。xxxx
由于 html 只是一个文本文件,您现在可以提取 jpeg URL。
我不知道你的编程语言是什么,但我确信它可以处理字符串函数,比如indexOf
and subString
。您可以提取图片的 htmlOG:Image
内容。
举个例子:https ://www.discogs.com/release/8140515
- 找到
.indexOf("og:image\" content=\");
保存为startPos
某个整数。 - 那是 19 个字符,所以接下来将 a
.indexOf(".jpg", startPos + 19);
放入 aendPos
中。
这会在startPos + 19 任何其他字符的索引之后首次出现.jpg 。 现在从 html 文本中提取一个子字符串
img_URL = myHtmlStr.substring(startPos+19, endPos);
您最终应该得到一个如下所示的字符串(提取的 URL):
https://img.discogs.com/_zHBK73yJ5oON197YTDXM7JoBjA=/fit-in/600x600/filters:strip_icc():format(jpeg):mode_rgb():质量(90)/discogs-images/R-8140515-1460073064-5890.jpeg.jpg该过程可以缩短为找到 的startPos索引,然后在从该startPos
https://img.
索引之后搜索时找到第一个出现的。在该长度范围内提取。这是因为图像 URL 仅在 html 源代码中提及.jpg
https://img.
比较位于https://www.discogs.com/release/8140515的页面与下面提取的 URL 图片。
这是使用 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;
}
}