Skip to content

Commit

Permalink
feat: 支持接入第三方提供的vkey api
Browse files Browse the repository at this point in the history
  • Loading branch information
ikun0014 committed Sep 16, 2024
1 parent 15bfed2 commit c9d5df7
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
3 changes: 3 additions & 0 deletions common/default_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,9 @@
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账号来获取会员歌曲,如果没有请留为空值
Expand Down
26 changes: 25 additions & 1 deletion modules/tx/player.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,41 @@
# 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
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': {
Expand Down

0 comments on commit c9d5df7

Please sign in to comment.