点歌功能再次优化
This commit is contained in:
@@ -10,7 +10,7 @@ command-format = """
|
|||||||
|
|
||||||
[GuessSong.api]
|
[GuessSong.api]
|
||||||
# 新的聚合搜索API,一次调用即可获取所有信息(包括播放链接)
|
# 新的聚合搜索API,一次调用即可获取所有信息(包括播放链接)
|
||||||
music_api = "http://192.168.2.170:5000?keyword={keywords}&limit=10"
|
music_api = "http://192.168.2.240:5000"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ class GuessSongPlugin(MessagePluginInterface):
|
|||||||
|
|
||||||
# 加载API配置
|
# 加载API配置
|
||||||
api_config = guess_song_config.get("api", {})
|
api_config = guess_song_config.get("api", {})
|
||||||
self.music_api = api_config.get("music_api", "http://192.168.2.170:5000")
|
self.music_api = api_config.get("music_api", "http://192.168.2.170:5000?keywords={keywords}&limit=10")
|
||||||
|
|
||||||
# 加载游戏配置
|
# 加载游戏配置
|
||||||
game_config = guess_song_config.get("game", {})
|
game_config = guess_song_config.get("game", {})
|
||||||
@@ -359,10 +359,13 @@ class GuessSongPlugin(MessagePluginInterface):
|
|||||||
async def _get_random_song(self, singer_name: Optional[str]) -> Dict[str, Any]:
|
async def _get_random_song(self, singer_name: Optional[str]) -> Dict[str, Any]:
|
||||||
"""获取随机歌曲信息"""
|
"""获取随机歌曲信息"""
|
||||||
try:
|
try:
|
||||||
base_url = self.music_api.rstrip("/")
|
|
||||||
keyword = singer_name if singer_name else random.choice(self.popular_singers)
|
keyword = singer_name if singer_name else random.choice(self.popular_singers)
|
||||||
search_url = f"{base_url}/Search"
|
if "{keywords}" in self.music_api:
|
||||||
resp = requests.get(search_url, params={"keywords": keyword}, timeout=10)
|
search_url = self.music_api.format(keywords=keyword)
|
||||||
|
else:
|
||||||
|
base = self.music_api.split("?")[0].rstrip("/")
|
||||||
|
search_url = f"{base}/Search?keywords={keyword}&limit=10"
|
||||||
|
resp = requests.get(search_url, timeout=10)
|
||||||
if resp.status_code != 200:
|
if resp.status_code != 200:
|
||||||
self.LOG.error(f"API 请求失败,状态码: {resp.status_code}")
|
self.LOG.error(f"API 请求失败,状态码: {resp.status_code}")
|
||||||
return {}
|
return {}
|
||||||
@@ -376,9 +379,9 @@ class GuessSongPlugin(MessagePluginInterface):
|
|||||||
return {}
|
return {}
|
||||||
random_song = random.choice(songs)
|
random_song = random.choice(songs)
|
||||||
song_id = str(random_song.get("id", ""))
|
song_id = str(random_song.get("id", ""))
|
||||||
detail_url = f"{base_url}/Song_V1"
|
base = self.music_api.split("?")[0].rstrip("/")
|
||||||
detail_params = {"url": song_id, "level": "standard", "type": "json"}
|
detail_url = f"{base}/Song_V1?url={song_id}&level=standard&type=json"
|
||||||
detail_resp = requests.get(detail_url, params=detail_params, timeout=15)
|
detail_resp = requests.get(detail_url, timeout=15)
|
||||||
if detail_resp.status_code != 200:
|
if detail_resp.status_code != 200:
|
||||||
self.LOG.error(f"详情请求失败,状态码: {detail_resp.status_code}")
|
self.LOG.error(f"详情请求失败,状态码: {detail_resp.status_code}")
|
||||||
return {}
|
return {}
|
||||||
|
|||||||
@@ -7,4 +7,4 @@ command-format = """
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
# 新的聚合搜索API,一次调用即可获取所有信息(包括播放链接)
|
# 新的聚合搜索API,一次调用即可获取所有信息(包括播放链接)
|
||||||
music_api_url = "http://192.168.2.170:5000?keyword={keywords}&limit=10"
|
music_api_url = "http://192.168.2.240:5000"
|
||||||
@@ -70,7 +70,8 @@ class MusicPlugin(MessagePluginInterface):
|
|||||||
self._commands = self._config.get("Music", {}).get("command", ["点歌", "音乐"])
|
self._commands = self._config.get("Music", {}).get("command", ["点歌", "音乐"])
|
||||||
self.command_format = self._config.get("Music", {}).get("command-format", "点歌 歌曲名")
|
self.command_format = self._config.get("Music", {}).get("command-format", "点歌 歌曲名")
|
||||||
self.enable = self._config.get("Music", {}).get("enable", True)
|
self.enable = self._config.get("Music", {}).get("enable", True)
|
||||||
self.music_api_url = self._config.get("Music", {}).get("music_api_url", "http://192.168.2.170:5000")
|
self.music_api_url = self._config.get("Music", {}).get("music_api_url", "http://192.168.2.170:5000?keywords={keywords}&limit=10")
|
||||||
|
self.song_api_url = self._config.get("Music", {}).get("song_api_url", "")
|
||||||
self.LOG.debug(f"[{self.name}] 插件初始化完成,指令:{self._commands}")
|
self.LOG.debug(f"[{self.name}] 插件初始化完成,指令:{self._commands}")
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -139,10 +140,13 @@ class MusicPlugin(MessagePluginInterface):
|
|||||||
def _search_song(self, song_name: str) -> Dict[str, Any]:
|
def _search_song(self, song_name: str) -> Dict[str, Any]:
|
||||||
"""搜索歌曲信息"""
|
"""搜索歌曲信息"""
|
||||||
try:
|
try:
|
||||||
base_url = self.music_api_url.rstrip("/")
|
if "{keywords}" in self.music_api_url:
|
||||||
search_url = f"{base_url}/Search"
|
search_url = self.music_api_url.format(keywords=song_name)
|
||||||
|
else:
|
||||||
|
base = self.music_api_url.split("?")[0].rstrip("/")
|
||||||
|
search_url = f"{base}/Search?keyword={song_name}&limit=10"
|
||||||
self.LOG.info(f"请求歌曲API: {search_url}")
|
self.LOG.info(f"请求歌曲API: {search_url}")
|
||||||
resp = requests.get(search_url, params={"keywords": song_name}, timeout=10)
|
resp = requests.get(search_url, timeout=10)
|
||||||
if resp.status_code != 200:
|
if resp.status_code != 200:
|
||||||
self.LOG.error(f"API 请求失败,状态码: {resp.status_code}")
|
self.LOG.error(f"API 请求失败,状态码: {resp.status_code}")
|
||||||
return {}
|
return {}
|
||||||
@@ -156,9 +160,12 @@ class MusicPlugin(MessagePluginInterface):
|
|||||||
return {}
|
return {}
|
||||||
first_song = songs[0]
|
first_song = songs[0]
|
||||||
song_id = str(first_song.get("id", ""))
|
song_id = str(first_song.get("id", ""))
|
||||||
detail_url = f"{base_url}/Song_V1"
|
if self.song_api_url:
|
||||||
detail_params = {"url": song_id, "level": "standard", "type": "json"}
|
detail_url = self.song_api_url.format(url=song_id, level="standard", type="json")
|
||||||
detail_resp = requests.get(detail_url, params=detail_params, timeout=15)
|
else:
|
||||||
|
base = self.music_api_url.split("?")[0].rstrip("/")
|
||||||
|
detail_url = f"{base}/Song_V1?url={song_id}&level=standard&type=json"
|
||||||
|
detail_resp = requests.get(detail_url, timeout=15)
|
||||||
if detail_resp.status_code != 200:
|
if detail_resp.status_code != 200:
|
||||||
self.LOG.error(f"详情请求失败,状态码: {detail_resp.status_code}")
|
self.LOG.error(f"详情请求失败,状态码: {detail_resp.status_code}")
|
||||||
return {}
|
return {}
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import requests
|
|||||||
import json
|
import json
|
||||||
from urllib.parse import unquote
|
from urllib.parse import unquote
|
||||||
|
|
||||||
BASE_URL = "http://192.168.2.170:5000"
|
BASE_URL = "http://192.168.2.240:5000"
|
||||||
|
|
||||||
|
|
||||||
def search_and_extract_song(keyword: str = "学不会", level: str = "standard"):
|
def search_and_extract_song(keyword: str = "学不会", level: str = "standard"):
|
||||||
|
|||||||
Reference in New Issue
Block a user