From 57977c82d271fc74da05bf2cb3c99eeab633b6cc Mon Sep 17 00:00:00 2001 From: helloplhm-qwq Date: Sun, 17 Dec 2023 13:50:22 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B0=86=E6=89=80=E6=9C=89api=E8=AF=B7?= =?UTF-8?q?=E6=B1=82=E6=9B=B4=E6=8D=A2=E4=B8=BA=E5=BC=82=E6=AD=A5=EF=BC=8C?= =?UTF-8?q?=E6=8F=90=E9=AB=98=E9=80=9F=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- modules/kg/musicInfo.py | 13 +++++++++++-- modules/kg/utils.py | 2 +- modules/kw/__init__.py | 2 +- modules/mg/__init__.py | 2 +- modules/tx/mv.py | 10 ++++++++++ modules/tx/utils.py | 3 +-- modules/wy/__init__.py | 9 ++++----- 7 files changed, 29 insertions(+), 12 deletions(-) create mode 100644 modules/tx/mv.py diff --git a/modules/kg/musicInfo.py b/modules/kg/musicInfo.py index f19c74a..ac0bdd6 100644 --- a/modules/kg/musicInfo.py +++ b/modules/kg/musicInfo.py @@ -49,7 +49,8 @@ async def getMusicInfo(hash_, use_cache = True): 'cache-ignore': [tn] } options['body'] = json.dumps(options['data']).replace(', ', ',').replace(': ', ':') - body = Httpx.request(url, dict(options)).json() + body = await Httpx.AsyncRequest(url, dict(options)) + body = body.json() return body['data'][0][0] if (body['data'] and body['data'][0]) else {} async def getMusicSingerInfo(hash_, use_cache = True): @@ -94,4 +95,12 @@ async def getMusicSingerInfo(hash_, use_cache = True): 'avatar': a['sizable_avatar'].format(size = 1080), 'sizable_avatar': a['sizable_avatar'], }) - return res \ No newline at end of file + return res + +async def getMusicMVHash(hash_, use_cache = True): + req = await Httpx.AsyncRequest('http://mobilecdnbj.kugou.com/api/v3/song/info?hash=' + hash_, { + 'method': 'GET', + 'cache': 86400 * 30 if use_cache else 'no-cache', + }) + body = req.json() + return body['data']['mvhash'] if (body['data']) else '' \ No newline at end of file diff --git a/modules/kg/utils.py b/modules/kg/utils.py index 05dd7ba..aaabadf 100644 --- a/modules/kg/utils.py +++ b/modules/kg/utils.py @@ -58,7 +58,7 @@ def sign(params, body = "", signkey = tools["signkey"]): async def signRequest(url, params, options, signkey = tools["signkey"]): params['signature'] = sign(params, options.get("body") if options.get("body") else (options.get("data") if options.get("data") else ""), signkey) url = url + "?" + buildRequestParams(params) - return Httpx.request(url, options) + return await Httpx.AsyncRequest(url, options) def getKey(hash_): return utils.createMD5(hash_.lower() + tools.pidversec + tools.appid + tools.mid + tools.userid) diff --git a/modules/kw/__init__.py b/modules/kw/__init__.py index c652e55..16b23de 100644 --- a/modules/kw/__init__.py +++ b/modules/kw/__init__.py @@ -30,7 +30,7 @@ async def url(songId, quality): target_url = f'''https://bd-api.kuwo.cn/api/service/music/downloadInfo/{songId}?isMv=0&format={tools['extMap'][quality]}&br={tools['qualityMap'][quality]}''' - req = Httpx.request(target_url, { + req = await Httpx.AsyncRequest(target_url, { 'method': 'GET', 'headers': { 'User-Agent': 'okhttp/3.10.0', diff --git a/modules/mg/__init__.py b/modules/mg/__init__.py index 9052f22..13a9a7f 100644 --- a/modules/mg/__init__.py +++ b/modules/mg/__init__.py @@ -32,7 +32,7 @@ } async def url(songId, quality): - req = Httpx.request(tools['url'].replace('__quality__', tools['qualityMap'][quality]).replace('__songId__', songId), { + req = await Httpx.AsyncRequest(tools['url'].replace('__quality__', tools['qualityMap'][quality]).replace('__songId__', songId), { 'method': 'GET', 'headers': { 'User-Agent': tools['useragent'], diff --git a/modules/tx/mv.py b/modules/tx/mv.py new file mode 100644 index 0000000..43ff3b2 --- /dev/null +++ b/modules/tx/mv.py @@ -0,0 +1,10 @@ +# ---------------------------------------- +# - mode: python - +# - author: helloplhm-qwq - +# - name: mv.py - +# - project: lx-music-api-server - +# - license: MIT - +# ---------------------------------------- +# This file is part of the "lx-music-api-server" project. + +# 没做 \ No newline at end of file diff --git a/modules/tx/utils.py b/modules/tx/utils.py index 885eac8..dbdc7ad 100644 --- a/modules/tx/utils.py +++ b/modules/tx/utils.py @@ -7,7 +7,6 @@ # ---------------------------------------- # This file is part of the "lx-music-api-server" project. -from common.exceptions import FailedException from common import Httpx from common import utils from common import config @@ -62,7 +61,7 @@ async def signRequest(data, cache = False): data = json.dumps(data) s = sign(data) headers = {} - return Httpx.request('https://u.y.qq.com/cgi-bin/musics.fcg?format=json&sign=' + s, { + return await Httpx.AsyncRequest('https://u.y.qq.com/cgi-bin/musics.fcg?format=json&sign=' + s, { 'method': 'POST', 'body': data, 'headers': headers, diff --git a/modules/wy/__init__.py b/modules/wy/__init__.py index 2851502..6902a6c 100644 --- a/modules/wy/__init__.py +++ b/modules/wy/__init__.py @@ -38,7 +38,7 @@ async def url(songId, quality): path = '/api/song/enhance/player/url/v1' requestUrl = 'https://interface.music.163.com/eapi/song/enhance/player/url/v1' - req = Httpx.request(requestUrl, { + req = await Httpx.AsyncRequest(requestUrl, { 'method': 'POST', 'headers': { 'Cookie': tools['cookie'], @@ -49,14 +49,13 @@ async def url(songId, quality): "encodeType": "flac", })) }) - body = json.loads(req.text) + body = req.json() if (not body.get("data") or (not body.get("data")) or (not body.get("data")[0].get("url"))): raise FailedException("failed") data = body["data"][0] - if (config.read_config('module.wy.reject_unmatched_quality')): - if (data['level'] != tools['qualityMap'][quality]): - raise FailedException("reject unmatched quality") + if (data['level'] != tools['qualityMap'][quality]): + raise FailedException("reject unmatched quality") return { 'url': data["url"].split("?")[0],