From ab7bbe942b98385edcfc37aed2eb3f82d7763b85 Mon Sep 17 00:00:00 2001 From: midoks Date: Sun, 20 Aug 2023 15:11:01 +0800 Subject: [PATCH] Update receive_music163_search.py --- .../startup/extend/receive_music163_search.py | 108 ++++++++++++++++++ 1 file changed, 108 insertions(+) diff --git a/plugins/tgbot/startup/extend/receive_music163_search.py b/plugins/tgbot/startup/extend/receive_music163_search.py index 8b1378917..ca6845c03 100644 --- a/plugins/tgbot/startup/extend/receive_music163_search.py +++ b/plugins/tgbot/startup/extend/receive_music163_search.py @@ -1 +1,109 @@ +# coding:utf-8 +import sys +import io +import os +import time +import re +import json +import base64 +import threading + +# sys.path.append(os.getcwd() + "/class/core") +# import mw + +# import telebot +# from telebot import types +# from telebot.util import quick_markup + +# 网易音乐搜索 + + +def httpPost(url, data, timeout=10): + """ + 发送POST请求 + @url 被请求的URL地址(必需) + @data POST参数,可以是字符串或字典(必需) + @timeout 超时时间默认60秒 + return string + """ + try: + import urllib.request + import ssl + try: + ssl._create_default_https_context = ssl._create_unverified_context + except: + pass + data = urllib.parse.urlencode(data).encode('utf-8') + req = urllib.request.Request(url, data) + response = urllib.request.urlopen(req, timeout=timeout) + result = response.read() + if type(result) == bytes: + result = result.decode('utf-8') + return result + except Exception as ex: + return str(ex) + + +def musicSearch(kw, page=1, page_size=5): + data = httpPost('http://music.163.com/api/cloudsearch/pc', { + 's': kw, + 'type': '1', + 'total': 'true', + 'limit': page_size, + 'offset': 0, + }) + # data_a = json.loads(data) + # print(data) + return json.loads(data) + + +def musicSongD(mid): + data = httpPost('http://music.163.com/api/v3/song/detail/', { + 'c': '[{"id":' + str(mid) + ',"v":0}]', + }) + # print(data) + return json.loads(data) + + +def musicSongDataUrl(mid): + data = httpPost('http://music.163.com/api/song/enhance/player/url', { + 'br': 320 * 1000, + 'ids': [mid], + }) + return json.loads(data) + + +def writeLog(log_str): + if __name__ == "__main__": + print(log_str) + + now = mw.getDateFromNow() + log_file = mw.getServerDir() + '/tgbot/task.log' + mw.writeFileLog(now + ':' + log_str, log_file, limit_size=5 * 1024) + return True + + +def tgSearchMusic(bot, message, cmd_text): + data = musicSearch(cmd_text, 1, 5) + print(data) + + +def run(bot, message): + text_body = message.text + + if isThisCmd('/music', text_body): + cmd_text = getReadCmd('/music', text_body) + cmd_text = cmd_text.strip().strip(":") + if cmd_text == "": + return bot.send_message(message.chat.id, "搜索内容不能为空, 例如:/faq 数据库") + return tgSearchMusic(bot, message, cmd_text) + + return bot + + +if __name__ == '__main__': + # musicSearch("刀郎") + t = musicSongDataUrl(2063487880) + print(t['data'][0]['url']) + print("111")