mirror of
https://github.com/hanxi/xiaomusic.git
synced 2025-12-06 14:52:50 +08:00
feat: 网络歌曲支持使用代理的方式播放
This commit is contained in:
@@ -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(","):
|
||||
|
||||
@@ -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",
|
||||
}
|
||||
|
||||
|
||||
5
xiaomusic/static/default/setting.html
vendored
5
xiaomusic/static/default/setting.html
vendored
@@ -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">
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user