如何在Spotify中获取歌曲的语言

问题描述 投票:0回答:1

各位开发者,

我正在尝试研究过去 5 年中有多少首英文歌曲进入 Spotify 的“全球 top50”。为此,我打算提取属于该排名的所有歌曲并检查它们的语言。

然而,坏消息是,Spotify 的公共 API 不提供歌曲的语言元数据。

我尝试用两种解决方法来解决这个问题,但没有成功:

第一个解决方法

我尝试为开发人员使用 MusixMatch API,因为根据他们的文档,方法 matcher.lyrics.gettrack.lyrics.get 应该在属性“lyrics_language”中返回歌曲语言。

但是,当我拨打电话时,我没有得到这个值。我认为这只是他们的 PLUS 付费服务的一个功能。

第二种解决方法

在这篇文章中,我发现了有关如何使用 Spotify 客户端(与开放的 Spotify API 不同)检索表演语言的好信息。

在致电客户服务时,您需要指定一个 GID - 这与典型的 Spotify trackID 不同。 GID 以 16 为基数,而 trackID 以 62 为基数。

在使用帖子中提供的示例时 - Aime Simone 的“Oh Yeah” - 我可以在使用时获得同一首歌:

直到这里,一切都很好顺利,因为base62中的0VtMV3IYHAu7fyZmqnGE99与base16中的1e763423ad0e4862b20f9dbfdadc2cb7相同。

但是,当我获取基数 62 中的任何其他 trackID 并将其更改为基数 16 来进行 spclient 调用时,它不起作用,并且收到 404 Not Found。

结论

如果你们中的任何人能让我知道如何:

,那将非常有帮助
  • 成功从 trackID 创建 GID。
  • 或者通过第三种解决方法获取 Spotify 歌曲的语言。

提前非常感谢。我希望解释足够清楚:)

spotify spotipy libspotify spotify-app musixmatch
1个回答
0
投票

这是一种方法,使用您提供的 API (https://developer.musixmatch.com/)。如果您注册帐户并通过仪表板获取 API 密钥,则可以使用 matcher.lyrics.get 端点来获取歌词。 (他们的文档说该语言包含在 matcher.track.get 的响应中,但不幸的是,这似乎是错误的)。

返回歌词后,您可以通过名为 langdetect 的 Python 库运行它。这是一个模块,使用英语和西班牙语的两首流行歌曲:

import requests
from langdetect import detect

BASE_MATCH_URL = "https://api.musixmatch.com/ws/1.1/matcher.lyrics.get"
params = {
  "q_track": "Closer",
  "q_artist": "Chainsmokers",
  "apikey": "YOUR_API_KEY"
}

response = requests.get(BASE_MATCH_URL, params=params)

if response.status_code == 200:
  data = response.json()
  lyrics = str(data['message']['body']['lyrics']['lyrics_body'])

print(detect(lyrics))

params = {
  "q_track": "despacito",
  "q_artist": """Luis%20Fonsi""",
  "apikey": "YOUR_API_KEY"
}

response = requests.get(BASE_MATCH_URL, params=params)

if response.status_code == 200:
  data = response.json()
  lyrics = str(data['message']['body']['lyrics']['lyrics_body'])
  print(detect(lyrics))

这将打印:

en
es

适用于英语和西班牙语。耶皮!

© www.soinside.com 2019 - 2024. All rights reserved.