mirror of
https://github.com/MeoProject/lx-music-api-server.git
synced 2025-05-23 19:17:41 +08:00
feat: 支持接入第三方提供的vkey api
This commit is contained in:
parent
15bfed2625
commit
c9d5df7fe8
@ -123,6 +123,9 @@ module:
|
||||
enable: false
|
||||
interval: 86000
|
||||
cdnaddr: http://ws.stream.qqmusic.qq.com/
|
||||
vkey_api: # 第三方Vkey获取API
|
||||
use_vkey_api: false
|
||||
vkey_api_url: "xxx"
|
||||
|
||||
wy: # 网易云音乐相关配置
|
||||
user: # 账号cookie数据,可以通过浏览器获取,需要vip账号来获取会员歌曲,如果没有请留为空值
|
||||
|
@ -8,7 +8,7 @@
|
||||
# This file is part of the "lx-music-api-server" project.
|
||||
|
||||
from common.exceptions import FailedException
|
||||
from common import config, utils, variable
|
||||
from common import config, utils, variable, Httpx
|
||||
from .musicInfo import getMusicInfo
|
||||
from .utils import tools
|
||||
from .utils import signRequest
|
||||
@ -16,9 +16,33 @@ import random
|
||||
|
||||
createObject = utils.CreateObject
|
||||
|
||||
index_map = {
|
||||
'dolby': 4,
|
||||
'master': 3
|
||||
}
|
||||
|
||||
async def vkeyUrl(q, b):
|
||||
apiNode = config.read_config("module.tx.vkey_api.vkey_api_url")
|
||||
filename = b['track_info']['file']['media_mid']
|
||||
if (q in index_map.keys()):
|
||||
filename = b['track_info']['vs'][index_map[q]]
|
||||
if (not filename): raise FailedException('未找到该音质')
|
||||
filename = f"{tools.fileInfo[q]['h']}{filename}{tools.fileInfo[q]['e']}"
|
||||
url = apiNode + f"?filename={filename}&guid={config.read_config('module.tx.vkeyserver.guid')}&uin={config.read_config('module.tx.vkeyserver.uin')}"
|
||||
req = await Httpx.AsyncRequest(url)
|
||||
body = req.json()
|
||||
purl = body['data'][0]['purl']
|
||||
|
||||
return {
|
||||
'url': tools.cdnaddr + purl,
|
||||
'quality': q
|
||||
}
|
||||
|
||||
async def url(songId, quality):
|
||||
infoBody = await getMusicInfo(songId)
|
||||
strMediaMid = infoBody['track_info']['file']['media_mid']
|
||||
if (config.read_config("module.tx.vkey_api.use_vkey_api")):
|
||||
return await vkeyUrl(quality, infoBody)
|
||||
user_info = config.read_config('module.tx.user') if (not variable.use_cookie_pool) else random.choice(config.read_config('module.cookiepool.tx'))
|
||||
requestBody = {
|
||||
'req_0': {
|
||||
|
Loading…
x
Reference in New Issue
Block a user