Database 有没有创建播放列表的算法不需要庞大的数据库(或使用公共可访问的数据库)?

Database 有没有创建播放列表的算法不需要庞大的数据库(或使用公共可访问的数据库)?,database,algorithm,playlist,Database,Algorithm,Playlist,有没有一种算法可以让我自动创建一个彼此配合良好的歌曲播放列表——类似于iTunes Genius这样的服务——一个开发者就可以实现?它要么不需要任何类型的远程数据库来记录听力习惯等,要么需要这样的数据库,但可以使用免费提供的数据库。我不知道iTunes Genius,但我认为数据库和API可能对您有用。每次你看到它都会根据其他用户的偏好显示一个类似曲目的列表。使用API方法也可以获得相同的信息。这些数据库背后的想法是,在其他用户听了给定的歌曲后,查看他们听了什么。这些统计数据的准确性取决于用户数

有没有一种算法可以让我自动创建一个彼此配合良好的歌曲播放列表——类似于iTunes Genius这样的服务——一个开发者就可以实现?它要么不需要任何类型的远程数据库来记录听力习惯等,要么需要这样的数据库,但可以使用免费提供的数据库。

我不知道iTunes Genius,但我认为数据库和API可能对您有用。每次你看到它都会根据其他用户的偏好显示一个类似曲目的列表。使用API方法也可以获得相同的信息。

这些数据库背后的想法是,在其他用户听了给定的歌曲后,查看他们听了什么。这些统计数据的准确性取决于用户数量,因此在本地使用这些数据可能很困难。算法本身并不难实现。
另一种选择是根据歌曲的类型、歌手。。。这些信息通常嵌入在歌曲中,但并不总是如此。Winamp具有此功能,但它不适用于旧歌曲,除非您手动设置信息或使用在线歌曲数据库。

我这样做了,并且使用了tomasz描述的last.fm数据库。我没有直接使用相关艺术家,而是通过比较与不同艺术家相关的标签来构建我自己的关系图。这不是lcfseth btw建议的方法-我有相当多的音乐,我想探索正常播放列表中可能不常见的自然联系;我也不确定相关的艺术家们有多一致

我还使用了一个本地数据库来缓存last.fm中的数据,因为对api的调用是有速率限制的,我尝试使用api的其他部分来改进/规范我从mp3标签中读取的信息

生成相关艺术家的有用图表实际上相当困难;很大程度上是因为图中的某些节点自然比其他节点更重要。如果你不平衡图表,那么你的播放列表将继续返回到重要的艺术家

最终的结果很好,因为音乐的选择在中心主题和变化之间有很好的平衡。但实现一点也不完美,图形的计算可能需要很长的时间,运行时程序会占用相当多的内存,而且它似乎仍然比预期的播放elvis costello多一点;o

如果您感兴趣,代码位于

从我作为用户的角度来看,最棒的是它可以实时更新logitech media server squeezeserver播放列表,每当列表为空时添加新曲目。无论你用手选什么音乐,这都能很好地继续播放。当然,它还可以生成一次性播放列表,最后,通过调整参数,你可以在你的音乐收藏中获得一种随机漫游——它将播放相关的曲调,但事实上会慢慢地从一种风格漂移到另一种风格,这真的是默认模式-为了让它停留在一个单一的主题上,我需要额外的逻辑,使它偏向于它之前播放的任何音乐

另外,把最终的图形转储到gephi真的很酷-我把它打印出来,现在它被钉在墙上了

pps我还试用了musicbrainz数据库,从理论上讲,它听起来像是一个奇妙的资源。但在实践中,它过于复杂,文档记录也很差