1
0
mirror of https://github.com/hanxi/xiaomusic.git synced 2025-12-06 14:52:50 +08:00

feat: 网络歌曲支持使用代理的方式播放

This commit is contained in:
涵曦
2025-08-17 22:07:11 +08:00
parent 80a7345ae7
commit 01d8584fe0
4 changed files with 17 additions and 2 deletions

View File

@@ -221,6 +221,10 @@ class Config:
)
# 搜索歌曲数量
search_music_count: int = int(os.getenv("XIAOMUSIC_SEARCH_MUSIC_COUNT", "100"))
# 网络歌曲使用proxy
web_music_proxy: bool = (
os.getenv("XIAOMUSIC_WEB_MUSIC_PROXY", "false").lower() == "true"
)
def append_keyword(self, keys, action):
for key in keys.split(","):

View File

@@ -887,7 +887,7 @@ async def proxy(urlb64: str):
# 创建会话并确保关闭
session = aiohttp.ClientSession(
timeout=aiohttp.ClientTimeout(total=600),
connector=aiohttp.TCPConnector(ssl=False),
connector=aiohttp.TCPConnector(ssl=True),
)
# 复用经过验证的请求头配置
@@ -896,7 +896,6 @@ async def proxy(urlb64: str):
"User-Agent": "Wget/1.21.3",
"Accept": "*/*",
"Accept-Encoding": "identity",
"Host": parsed_url.netloc,
"Connection": "Keep-Alive",
}

View File

@@ -265,6 +265,11 @@ var vConsole = new window.VConsole();
<option value="false">false</option>
</select>
<label for="web_music_proxy">网络歌曲过代理:</label>
<select id="web_music_proxy">
<option value="true">true</option>
<option value="false" selected>false</option>
</select>
<label for="music_list_url" class="setting-label">歌单地址:
<button class="option-inline mini-button" id="get_music_list">

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env python3
import asyncio
import base64
import copy
import json
import logging
@@ -533,6 +534,12 @@ class XiaoMusic:
if self.is_web_music(name):
url = self.all_music[name]
self.log.info(f"get_music_url web music. name:{name}, url:{url}")
if self.config.web_music_proxy:
urlb64 = base64.b64encode(url.encode("utf-8")).decode("utf-8")
url = f"{self.hostname}:{self.public_port}/proxy?urlb64={urlb64}"
self.log.info(
f"get_music_url web music by proxy. name:{name}, url:{url}"
)
return url
filename = self.get_filename(name)