开发APP时,如何从Genius歌曲网页提取歌曲ID用于API调用?
从Genius歌曲链接获取API可用的歌曲ID
完全可以从Genius歌曲网页直接提取歌曲ID,下面两种方法可以满足需求:
方法一:直接解析歌曲页面HTML提取ID
用户提供的歌曲URL对应的页面里,藏着多个可以直接提取ID的位置,只需要发送GET请求获取页面内容后,查找以下任一内容即可:
- 查找
<meta property="al:ios:url"标签,内容格式为genius://song/[数字ID],直接提取中间的数字串 - 查找页面内嵌的JavaScript变量
window.__PRELOADED_STATE__.song.id,这个变量的数值就是歌曲ID - 查找带有
data-song-id属性的元素(比如部分页面的<div class="song_data">),该属性的值即为ID
方法二:通过Genius API搜索接口间接获取ID
如果已经拥有Genius API访问令牌,可以通过搜索接口匹配歌曲:
- 从用户提供的URL中提取歌曲标题(比如拆分URL最后一段,去掉末尾的
-lyrics后缀) - 调用Genius的搜索接口,将提取到的标题作为搜索关键词
- 取搜索结果中第一个匹配项的
id字段,就是API可用的歌曲ID
示例伪代码(Python):
import requests def fetch_genius_song_id(api_token, song_web_url): # 从URL解析歌曲标题 song_title = song_web_url.split('/')[-1].replace('-lyrics', '') # 构造搜索请求 search_endpoint = f"https://api.genius.com/search?q={song_title}" auth_headers = {"Authorization": f"Bearer {api_token}"} response = requests.get(search_endpoint, headers=auth_headers) # 解析返回结果 if response.status_code == 200: search_results = response.json()["response"]["hits"] if search_results: return search_results[0]["result"]["id"] return None
内容的提问来源于stack exchange,提问作者Andrew
相关产品推荐
相关产品推荐

