musicbrainz使用musicbrainzws2java定位各种曲目的mbid
我已经将musicbrainzws2 java库导入到我的项目中,并且我一直在阅读MusicBrainz在其web服务上的文档。但这很令人困惑。我想知道是否有人能帮助我了解如何浏览MusicBrainz数据库。我不懂术语,我使用数据库的主要目的是收集各种歌曲的mbid
现在这就是我所拥有的
public static void main(String[] args) {
ArtistSearchFilterWs2 filter = new ArtistSearchFilterWs2();
filter.setArtistName("Lindsey Stirling");
filter.setLimit((long) 100);
filter.setMinScore((long) 0);
filter.setOffset((long) 0);
ArtistSearchWs2 search = new ArtistSearchWs2(filter);
List<ArtistResultWs2> result = search.getFullList();
/*
for(ArtistResultWs2 artist : result) {
System.out.println(artist.getArtist().getName() + " " + i);
i++;
if(artist.getArtist().getName() == "Lindsey Stirling") {
System.out.println(artist.getArtist().getName() + " " + i);
break;
}
}
*/
String artistName = result.get(0).getArtist().getName();
System.out.println(artistName);
List<ReleaseWs2> releases = result.get(0).getArtist().getReleaseList().getReleases();
System.out.println(releases.size());
for(ReleaseWs2 release : releases) {
System.out.println(release.getTitle());
}
出于某种原因,它说艺术家林赛·斯特林(Lindsey Stirling)有0个版本,除此之外,我不知道如何根据艺术家和专辑搜索特定歌曲
# 1 楼答案
releases
不包含任何元素,因为搜索服务器不会为艺术家搜索返回此信息。为了澄清这一点:MusicBrainz的“normal”web service和search web service在其输出中使用相同的XML模型,这意味着ArtistWs2
类可以表示它们中任何一个的结果除了搜索web服务之外,正常的web服务允许您request more information关于正在检索信息的实体(在本例中,您需要
artist
的发布信息,因此必须在inc
参数中包含releases
)您可以查看搜索服务器为您的搜索返回的XMLhere,对包含发布信息的普通web服务的请求是here
以下代码(减去导入)将执行您想要的操作:
要了解搜索是如何工作的,您应该首先阅读the general documentation,然后在recording search documentation中找到所需的搜索字段。如果要在特定专辑中搜索特定艺术家的歌曲(
recording
,请使用artist
和releases
字段。例如,要通过“ShatterMe”上的“Lindsey Stirling”搜索“Mirror Haus”,您需要执行以下查询:"Mirror Haus" AND artist:"Lindsey Stirling" AND release:"Shatter Me"以下代码将执行此操作: