Skip to main content

Last.fm 的声学指纹 (fplib) 的绑定

项目描述

这是 Last.fm 的声学指纹库(称为 fplib)及其相关 API 服务的 Python 接口。它执行指纹提取、指纹 ID 查找和跟踪元数据查找。

安装

要安装,您将需要一个编译器和 fplib 本身所需的依赖项:fftw(为单精度浮点数编译)和libsamplerate。(在 Debian/Ubuntu 上,软件包是libfftw3-devlibsamplerate0-dev。)

一旦你有了这些,你就可以使用pip从 PyPI 轻松安装:

$ pip install pylastfp

或者,如果您没有 pip(或 easy_install),请前往下载页面。正常的安装命令应该可以工作:

$ python setup.py install

要从版本控制源(即,不是从发行版 tarball)构建,您还需要Cython。(源代码发行版包括生成的 C++ 文件,避免了对 Cython 的需要。这个包的 setup.py会发挥技巧来检测您是否安装了 Cython。)

这个库还依赖于audioread来解码音频,尽管这种依赖在技术上是可选的。如果你已经有了解码音频文件的机制,就不需要安装 audioread。

跑步

您可以运行包含的指纹/查找脚本lastmatch.py​​ 来测试您的安装:

$ lastmatch.py mysterious_music.mp3

这将显示来自 Last.fm 数据库的元数据匹配。该脚本使用 audioread来解码音乐,因此它应该透明地使用您系统上可用的媒体库(GStreamer、FFmpeg、MAD 或 Mac OS X 上的 Core Audio)。

在您的代码中使用

该脚本展示了使用 pylastfp 的常用方法,即:

>>> import lastfp
>>> xml = lastfp.match_file(apikey, path)
>>> matches = lastfp.parse_metadata(xml)
>>> print matches[0]['artist'], '-', matches[0]['title']
The National - Fake Emprire

此示例使用match_file便利函数,该函数使用 audioread解码音频数据。该函数在调用时会导入audioread模块,因此如果您不想依赖它,请不要调用此函数。

如果你有自己的音频解码方式,可以使用底层接口:

>>> xml = lastfp.match(apikey, pcmdata, samplerate, time_in_secs)

当然,您需要一个 PCM 流来获取您想要指纹的音频。pcmdata 参数必须是 Python str缓冲区对象的可迭代对象,其中包含 PCM 数据作为 C (16 位整数)值数组。

两个函数(matchmatch_file )都接受一个称为metadata的附加可选参数。它应该是一个包含您当前对文件元数据的猜测的字典。Last.fm 可能会使用这些信息来改进他们的数据库。dict 应该使用这些键(所有这些都是可选的): "artist""album""track"

根据Last.fm 的 API TOS,该模块在内部执行线程安全 API,限制为每秒 5 次查询。

去做

指纹库允许优化,在每个文件的开头跳过几毫秒的解码。(请参阅 FingerprintExtractor::getToSkipMs(),如 示例客户端所示。)利用这一点会使模块的接口变得有点复杂,因为解码源需要知道要跳过的时间量。

版本历史

0.6

使用audioread而不是包含的pygstpymad解码器。

0.5

处理来自 API 的空响应。 setup.py现在搜索Homebrew用户本地前缀。

0.4

修复 gstdec 中导致文件保持打开状态的清理错误。

0.3

修复处理 HTTP 错误时的拼写错误。处理 HTTP 状态行格式错误的情况。

0.2

修复可怕的内存泄漏。当文件太短时安全失败。安全处理从 API 返回的格式错误的 XML。处理和公开 HTTP 故障。

0.1

初始发行。

学分

该库由Adrian Sampson提供。它包括由Last.fm提供的 fplib 源代码。fplib 在 LGPLv3 下获得许可,因此 pylastfp 使用相同的许可。pylastfp 是为与 beets 一起使用而编写的您可能应该检查一下。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pylastfp-0.6.tar.gz (47.2 kB 查看哈希

已上传 source