在按流派分类音乐时,我发现维基百科比大多数其他数据源拥有更多有趣的流派信息。
我似乎记得有一个数据库从 Wikipedia 收集了此类信息并使其更易于访问,但我今天无法搜索任何内容。
如果我要尝试检索这些数据,我有哪些选择?有什么像我描述的那样,还是我需要去屏幕抓取?
在按流派分类音乐时,我发现维基百科比大多数其他数据源拥有更多有趣的流派信息。
我似乎记得有一个数据库从 Wikipedia 收集了此类信息并使其更易于访问,但我今天无法搜索任何内容。
如果我要尝试检索这些数据,我有哪些选择?有什么像我描述的那样,还是我需要去屏幕抓取?
您应该查看Freebase(例如,参见他们的音乐艺术家表)。如果您确实选择了 Wikipedia,那么您可能应该下载一个数据库转储。
比较 Radiohead 乐队的 Freebase 和 Wikipedia 的流派列表的示例:
编辑:更重要的是,我包含了一个使用 mjt 的工作示例,这是一个为 Freebase 设计的 Javascript 框架。将其复制粘贴到文件中,用浏览器打开,输入艺术家的姓名,然后查看 Freebase 为他们提供的流派。
不太重要的是,我更改了我的示例并默认为 Radiohead。=)
<html>
<head>
<script type="text/javascript" src="http://mjtemplate.org/dist/mjt-0.6/mjt.js"></script>
</head>
<body onload="mjt.run()">
<pre mjt.script="">
var name = mjt.urlquery.name ? mjt.urlquery.name : 'Radiohead';
</pre>
<div mjt.task="q">
mjt.freebase.MqlRead([{
type: '/music/artist',
name: {
value:name,
lang:{name:{value:'English'}}
},
genre: [{
name: {
value:null,
lang:{name:{value:'English'}}}
}]
}])
</div>
<form method="get" action="">
<input type="text" name="name" value="$name" />
<input type="submit" value="search" />
</form>
<table mjt.for="topic in q.result">
<tr mjt.for="(var rowi = 0; rowi < topic.genre.length; rowi++)">
<td><pre mjt.script="">var gname = topic.genre[rowi].name;</pre>$gname.value</td>
</tr>
</table>
</body></html>
您很可能使用另一种语言,但希望您可以轻松翻译上述查询。
MusicBrainz ( http://musicbrainz.org/ ) 可能是你想要的,而不是维基百科。这是一个制作免费许可的高质量音乐元数据(作曲家姓名、专辑名称、曲目标题、该曲目上长号手的姓名等)的项目。他们开发了一个很棒的数据库、一个详细的数据库架构、用于使元数据准确和一致的综合风格指南、可以将元数据插入音乐数据文件中的标签的应用程序软件,以及一个您可以使用数据的 API。所有免费提供和协作编辑。
MusicBrainz 元数据的一个薄弱环节是音乐流派。这是因为这是一个非常棘手的问题:一个人的“放克”是另一个人的“流行”。
当我发布我的问题时,我发现了我的想法。Infochimps收集了来自 Wikipedia 的信息框,例如音乐艺术家的信息框。不过,这并不是我真正想要的,因为它只能作为下载提供。
在我寻找的过程中,我发现了如何使用未呈现的 wiki 标记访问XML 格式的文章。显然它在维基百科服务器上更容易,但我不确定它是否更容易解析。