英文:
Spotify - "gid" of Tracks
问题
我看到Spotify上每个音轨都有一个*gid
*。
如您在图像中所见,B
是音轨ID,但我不理解A
。
请查看前一个图像中显示的请求的响应这里。
您知道这个gid
是什么以及如何检索它吗?
提前感谢
更新:
作为示例,Spotify调用API为https://spclient.wg.spotify.com/metadata/4/track/1e763423ad0e4862b20f9dbfdadc2cb7
,对应的音轨为https://open.spotify.com/track/0VtMV3IYHAu7fyZmqnGE99。如您所见,API URL末尾的ID为1e763423ad0e4862b20f9dbfdadc2cb7
,与音轨ID(0VtMV3IYHAu7fyZmqnGE99
)不同。 API的响应为{"gid": "1e763423ad0e4862b20f9dbfdadc2cb7","name": "Oh Yeah","album": {"gid": "b6a45388cac54953b3fe0f8e0ab7c729","name": "Oh Glory","artist": [{"gid": "e8dba066dc3644b1b69510eb3cdd8a42","name": "Aime Simone"}],"label": "No Start No End","date": {"year": 2023,"month": 5,"day": 5},"cover_group": {"image": [{"file_id": "ab67616d00001e026cddc8afe19c5950b5f6f5b6","size": "DEFAULT","width": 300,"height": 300},{"file_id": "ab67616d000048516cddc8afe19c5950b5f6f5b6","size": "SMALL","width": 64,"height": 64},{"file_id": "ab67616d0000b2736cddc8afe19c5950b5f6f5b6","size": "LARGE","width": 640,"height": 640}]},"licensor": {"uuid": "1b3fb428ae7b41aa97c9b46c5b962d57"},"prerelease_config": {"earliest_reveal_date": {"year": 2023,"month": 5,"day": 4,"hour": 11},"earliest_coverart_reveal_date": {"year": 2023,"month": 5,"day": 4,"hour": 11}}},"artist": [{"gid": "e8dba066dc3644b1b69510eb3cdd8a42","name": "Aime Simone"}],"number": 10,"disc_number": 1,"duration": 122293,"popularity": 41,"external_id": [{"type": "isrc","id": "FR9W12241433"}],"file": [{"file_id": "a0ee4ae82c323cf5e45361670079e6a68f391b2f","format": "OGG_VORBIS_320"},{"file_id": "0d508123a2197901602399756f091ba8225ff781","format": "OGG_VORBIS_160"},{"file_id": "698098f862955a08c9204e9cd723de32ad4e48e2","format": "OGG_VORBIS_96"},{"file_id": "0833e88386b0320aabcc56ab893c1ae157a5fffc","format": "MP4_256_DUAL"},{"file_id": "999bff5d82f078c4d6c12a88ee7401e6cf36c048","format": "MP4_256"},{"file_id": "cca2b23924cc42ed2b8f1efc1c95766c5f26a7c8","format": "MP4_128"},{"file_id": "f80419a11fa42bb9054ef4975bdba2a7c2226077","format": "MP4_128_DUAL"},{"file_id": "41af902734adfc123dba2bb91fa1138c7632af6c","format": "AAC_24"}],"preview": [{"file_id": "b2f08b0f87cdef5489d51588dc61e5b6fd7e5ca2","format": "MP3_96"}],"earliest_live_timestamp": 1683198000,"has_lyrics": true,"licensor": {"uuid": "1b3fb428ae7b41aa97c9b46c5b962d57"},"language_of_performance": ["en"],"original_audio": {"uuid": "87a724f901a34555a86efdc16b65ee9b"},"original_title": "Oh Yeah","artist_with_role": [{"artist_gid": "e8dba066dc3644b1b69510eb3cdd8a42","artist_name": "Aime Simone","role": "ARTIST_ROLE_MAIN_ARTIST"}],"canonical_uri": "spotify:track:0VtMV3IYHAu7fyZmqnGE99","prerelease_config": {"earliest_reveal_date": {"year": 2023,"month": 5,"day": 4,"hour": 11}}}
。
英文:
I see there is a gid
for each track on Spotify.
As you see in the image, B
is the track ID but I don't understand A
.
Please check the response of the request shown in the previous image here.
Do you know what this gid is and how we can retrieve it?
Thanks in advance
UPDATE:
As an example, Spotify calls an API as https://spclient.wg.spotify.com/metadata/4/track/1e763423ad0e4862b20f9dbfdadc2cb7
for the track https://open.spotify.com/track/0VtMV3IYHAu7fyZmqnGE99. as you see the the id at the end of the API URL is 1e763423ad0e4862b20f9dbfdadc2cb7
which is different from the track id (0VtMV3IYHAu7fyZmqnGE99
). The response of the API is {"gid": "1e763423ad0e4862b20f9dbfdadc2cb7","name": "Oh Yeah","album": {"gid": "b6a45388cac54953b3fe0f8e0ab7c729","name": "Oh Glory","artist": [{"gid": "e8dba066dc3644b1b69510eb3cdd8a42","name": "Aime Simone"}],"label": "No Start No End","date": {"year": 2023,"month": 5,"day": 5},"cover_group": {"image": [{"file_id": "ab67616d00001e026cddc8afe19c5950b5f6f5b6","size": "DEFAULT","width": 300,"height": 300},{"file_id": "ab67616d000048516cddc8afe19c5950b5f6f5b6","size": "SMALL","width": 64,"height": 64},{"file_id": "ab67616d0000b2736cddc8afe19c5950b5f6f5b6","size": "LARGE","width": 640,"height": 640}]},"licensor": {"uuid": "1b3fb428ae7b41aa97c9b46c5b962d57"},"prerelease_config": {"earliest_reveal_date": {"year": 2023,"month": 5,"day": 4,"hour": 11},"earliest_coverart_reveal_date": {"year": 2023,"month": 5,"day": 4,"hour": 11}}},"artist": [{"gid": "e8dba066dc3644b1b69510eb3cdd8a42","name": "Aime Simone"}],"number": 10,"disc_number": 1,"duration": 122293,"popularity": 41,"external_id": [{"type": "isrc","id": "FR9W12241433"}],"file": [{"file_id": "a0ee4ae82c323cf5e45361670079e6a68f391b2f","format": "OGG_VORBIS_320"},{"file_id": "0d508123a2197901602399756f091ba8225ff781","format": "OGG_VORBIS_160"},{"file_id": "698098f862955a08c9204e9cd723de32ad4e48e2","format": "OGG_VORBIS_96"},{"file_id": "0833e88386b0320aabcc56ab893c1ae157a5fffc","format": "MP4_256_DUAL"},{"file_id": "999bff5d82f078c4d6c12a88ee7401e6cf36c048","format": "MP4_256"},{"file_id": "cca2b23924cc42ed2b8f1efc1c95766c5f26a7c8","format": "MP4_128"},{"file_id": "f80419a11fa42bb9054ef4975bdba2a7c2226077","format": "MP4_128_DUAL"},{"file_id": "41af902734adfc123dba2bb91fa1138c7632af6c","format": "AAC_24"}],"preview": [{"file_id": "b2f08b0f87cdef5489d51588dc61e5b6fd7e5ca2","format": "MP3_96"}],"earliest_live_timestamp": 1683198000,"has_lyrics": true,"licensor": {"uuid": "1b3fb428ae7b41aa97c9b46c5b962d57"},"language_of_performance": ["en"],"original_audio": {"uuid": "87a724f901a34555a86efdc16b65ee9b"},"original_title": "Oh Yeah","artist_with_role": [{"artist_gid": "e8dba066dc3644b1b69510eb3cdd8a42","artist_name": "Aime Simone","role": "ARTIST_ROLE_MAIN_ARTIST"}],"canonical_uri": "spotify:track:0VtMV3IYHAu7fyZmqnGE99","prerelease_config": {"earliest_reveal_date": {"year": 2023,"month": 5,"day": 4,"hour": 11}}}
.
答案1
得分: 1
The gid
probably means something like Global ID
or something of that sort. I've done some research (python codebase, JS codebase) and found that this gid
is some hexadecimal number which needs to be converted to a base62 number to get the actual ID.
在两个代码库中,用于将gid
转换为ID,然后转换为URI的函数都被称为gid2id
和id2uri
。
我尝试过两者,但它们要么不能按预期工作,也就是说它们不能提供所需的结果,要么引用了代码库中不存在的函数,所以我决定快速在Python中编写自己的转换器:
def gid_to_base62(gid):
base62_charset = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
decimal_number = int(gid, 16)
base62_id = ''
while decimal_number > 0:
remainder = decimal_number % 62
base62_id = base62_charset[remainder] + base62_id
decimal_number = decimal_number // 62
return base62_id
gid = '1e763423ad0e4862b20f9dbfdadc2cb7'
base62_id = gid_to_base62(gid)
print(base62_id) # -> 0VtMV3IYHAu7fyZmqnGE99
现在我只在两个示例gid
上进行了测试,所以请小心使用这个转换器。
英文:
The gid
probably means something like Global ID
or something of that sort. I've done some research (python codebase, JS codebase) and found that this gid
is some hexadecimal number which needs to be converted to a base62 number to get the actual ID.
In both codebases the functions used to convert the gid
to the ID and then to an URI are called gid2id
and id2uri
.
I've tried both but they either didn't work quite well as expected, meaning they didn't give the desired result or referenced functions that weren't in the codebase, so I've decided to throw together my own quick converter in python:
def gid_to_base62(gid):
base62_charset = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
decimal_number = int(gid, 16)
base62_id = ''
while decimal_number > 0:
remainder = decimal_number % 62
base62_id = base62_charset[remainder] + base62_id
decimal_number = decimal_number // 62
return base62_id
gid = '1e763423ad0e4862b20f9dbfdadc2cb7'
base62_id = gid_to_base62(gid)
print(base62_id) # -> 0VtMV3IYHAu7fyZmqnGE99
Now I have only tested this on 2 example gid's so use this converter with caution.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论