From bf64fb5782617b52a3371b06773a4b29288f1999 Mon Sep 17 00:00:00 2001 From: liuwei Date: Mon, 26 Jan 2026 15:07:28 +0800 Subject: [PATCH] =?UTF-8?q?=E7=82=B9=E6=AD=8C=E5=8A=9F=E8=83=BD=E5=86=8D?= =?UTF-8?q?=E6=AC=A1=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/guess_song/config.toml | 2 +- plugins/guess_song/main.py | 17 ++++++++++------- plugins/music/config.toml | 2 +- plugins/music/main.py | 21 ++++++++++++++------- test/music.py | 2 +- 5 files changed, 27 insertions(+), 17 deletions(-) diff --git a/plugins/guess_song/config.toml b/plugins/guess_song/config.toml index 290d8d1..2a14b1a 100644 --- a/plugins/guess_song/config.toml +++ b/plugins/guess_song/config.toml @@ -10,7 +10,7 @@ command-format = """ [GuessSong.api] # 新的聚合搜索API,一次调用即可获取所有信息(包括播放链接) -music_api = "http://192.168.2.170:5000?keyword={keywords}&limit=10" +music_api = "http://192.168.2.240:5000" diff --git a/plugins/guess_song/main.py b/plugins/guess_song/main.py index 088b202..f2cdde8 100644 --- a/plugins/guess_song/main.py +++ b/plugins/guess_song/main.py @@ -143,7 +143,7 @@ class GuessSongPlugin(MessagePluginInterface): # 加载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", {}) @@ -359,10 +359,13 @@ class GuessSongPlugin(MessagePluginInterface): async def _get_random_song(self, singer_name: Optional[str]) -> Dict[str, Any]: """获取随机歌曲信息""" try: - base_url = self.music_api.rstrip("/") keyword = singer_name if singer_name else random.choice(self.popular_singers) - search_url = f"{base_url}/Search" - resp = requests.get(search_url, params={"keywords": keyword}, timeout=10) + if "{keywords}" in self.music_api: + 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: self.LOG.error(f"API 请求失败,状态码: {resp.status_code}") return {} @@ -376,9 +379,9 @@ class GuessSongPlugin(MessagePluginInterface): return {} random_song = random.choice(songs) song_id = str(random_song.get("id", "")) - detail_url = f"{base_url}/Song_V1" - detail_params = {"url": song_id, "level": "standard", "type": "json"} - detail_resp = requests.get(detail_url, params=detail_params, timeout=15) + base = self.music_api.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: self.LOG.error(f"详情请求失败,状态码: {detail_resp.status_code}") return {} diff --git a/plugins/music/config.toml b/plugins/music/config.toml index a9aa45a..9afbf35 100644 --- a/plugins/music/config.toml +++ b/plugins/music/config.toml @@ -7,4 +7,4 @@ command-format = """ """ # 新的聚合搜索API,一次调用即可获取所有信息(包括播放链接) -music_api_url = "http://192.168.2.170:5000?keyword={keywords}&limit=10" \ No newline at end of file +music_api_url = "http://192.168.2.240:5000" \ No newline at end of file diff --git a/plugins/music/main.py b/plugins/music/main.py index 3a71fbd..bf13b06 100644 --- a/plugins/music/main.py +++ b/plugins/music/main.py @@ -70,7 +70,8 @@ class MusicPlugin(MessagePluginInterface): self._commands = self._config.get("Music", {}).get("command", ["点歌", "音乐"]) self.command_format = self._config.get("Music", {}).get("command-format", "点歌 歌曲名") 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}") return True @@ -139,10 +140,13 @@ class MusicPlugin(MessagePluginInterface): def _search_song(self, song_name: str) -> Dict[str, Any]: """搜索歌曲信息""" try: - base_url = self.music_api_url.rstrip("/") - search_url = f"{base_url}/Search" + if "{keywords}" in self.music_api_url: + 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}") - resp = requests.get(search_url, params={"keywords": song_name}, timeout=10) + resp = requests.get(search_url, timeout=10) if resp.status_code != 200: self.LOG.error(f"API 请求失败,状态码: {resp.status_code}") return {} @@ -156,9 +160,12 @@ class MusicPlugin(MessagePluginInterface): return {} first_song = songs[0] song_id = str(first_song.get("id", "")) - detail_url = f"{base_url}/Song_V1" - detail_params = {"url": song_id, "level": "standard", "type": "json"} - detail_resp = requests.get(detail_url, params=detail_params, timeout=15) + if self.song_api_url: + detail_url = self.song_api_url.format(url=song_id, level="standard", type="json") + 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: self.LOG.error(f"详情请求失败,状态码: {detail_resp.status_code}") return {} diff --git a/test/music.py b/test/music.py index ad324c3..2791845 100644 --- a/test/music.py +++ b/test/music.py @@ -9,7 +9,7 @@ import requests import json 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"):