fix: 调整配置,优化获取歌曲时长接口
This commit is contained in:
parent
2d5f3799a3
commit
eaedef452c
@ -219,3 +219,13 @@ class Config:
|
|||||||
if converted_value is not None:
|
if converted_value is not None:
|
||||||
setattr(self, k, converted_value)
|
setattr(self, k, converted_value)
|
||||||
self.init_keyword()
|
self.init_keyword()
|
||||||
|
|
||||||
|
# 获取设置文件
|
||||||
|
def getsettingfile(self):
|
||||||
|
# 兼容旧配置空的情况
|
||||||
|
if not self.conf_path:
|
||||||
|
self.conf_path = "conf"
|
||||||
|
if not os.path.exists(self.conf_path):
|
||||||
|
os.makedirs(self.conf_path)
|
||||||
|
filename = os.path.join(self.conf_path, "setting.json")
|
||||||
|
return filename
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import asyncio
|
||||||
import copy
|
import copy
|
||||||
import difflib
|
import difflib
|
||||||
import io
|
|
||||||
import logging
|
import logging
|
||||||
import mimetypes
|
import mimetypes
|
||||||
import os
|
import os
|
||||||
@ -16,7 +16,6 @@ from collections.abc import AsyncIterator
|
|||||||
from http.cookies import SimpleCookie
|
from http.cookies import SimpleCookie
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
|
|
||||||
import aiofiles
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import mutagen
|
import mutagen
|
||||||
from mutagen.id3 import ID3
|
from mutagen.id3 import ID3
|
||||||
@ -241,14 +240,13 @@ async def get_web_music_duration(url):
|
|||||||
|
|
||||||
# 获取文件播放时长
|
# 获取文件播放时长
|
||||||
async def get_local_music_duration(filename):
|
async def get_local_music_duration(filename):
|
||||||
|
loop = asyncio.get_event_loop()
|
||||||
duration = 0
|
duration = 0
|
||||||
try:
|
try:
|
||||||
async with aiofiles.open(filename, "rb") as f:
|
|
||||||
buffer = io.BytesIO(await f.read())
|
|
||||||
if is_mp3(filename):
|
if is_mp3(filename):
|
||||||
m = mutagen.mp3.MP3(buffer)
|
m = await loop.run_in_executor(None, mutagen.mp3.MP3, filename)
|
||||||
else:
|
else:
|
||||||
m = mutagen.File(buffer)
|
m = await loop.run_in_executor(None, mutagen.File, filename)
|
||||||
if m and m.info:
|
if m and m.info:
|
||||||
duration = m.info.length
|
duration = m.info.length
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
@ -84,15 +84,11 @@ class XiaoMusic:
|
|||||||
debug_config = deepcopy_data_no_sensitive_info(self.config)
|
debug_config = deepcopy_data_no_sensitive_info(self.config)
|
||||||
self.log.info(f"Startup OK. {debug_config}")
|
self.log.info(f"Startup OK. {debug_config}")
|
||||||
|
|
||||||
if self.conf_path == self.music_path:
|
if self.config.conf_path == self.music_path:
|
||||||
self.log.warning("配置文件目录和音乐目录建议设置为不同的目录")
|
self.log.warning("配置文件目录和音乐目录建议设置为不同的目录")
|
||||||
|
|
||||||
def init_config(self):
|
def init_config(self):
|
||||||
self.music_path = self.config.music_path
|
self.music_path = self.config.music_path
|
||||||
self.conf_path = self.config.conf_path
|
|
||||||
# 兼容旧配置空的情况
|
|
||||||
if not self.conf_path:
|
|
||||||
self.conf_path = "conf"
|
|
||||||
self.download_path = self.config.download_path
|
self.download_path = self.config.download_path
|
||||||
if not self.download_path:
|
if not self.download_path:
|
||||||
self.download_path = self.music_path
|
self.download_path = self.music_path
|
||||||
@ -720,16 +716,9 @@ class XiaoMusic:
|
|||||||
def getconfig(self):
|
def getconfig(self):
|
||||||
return self.config
|
return self.config
|
||||||
|
|
||||||
# 获取设置文件
|
|
||||||
def getsettingfile(self):
|
|
||||||
if not os.path.exists(self.conf_path):
|
|
||||||
os.makedirs(self.conf_path)
|
|
||||||
filename = os.path.join(self.conf_path, "setting.json")
|
|
||||||
return filename
|
|
||||||
|
|
||||||
def try_init_setting(self):
|
def try_init_setting(self):
|
||||||
try:
|
try:
|
||||||
filename = self.getsettingfile()
|
filename = self.config.getsettingfile()
|
||||||
with open(filename) as f:
|
with open(filename) as f:
|
||||||
data = json.loads(f.read())
|
data = json.loads(f.read())
|
||||||
self.update_config_from_setting(data)
|
self.update_config_from_setting(data)
|
||||||
@ -751,8 +740,7 @@ class XiaoMusic:
|
|||||||
|
|
||||||
# 配置文件落地
|
# 配置文件落地
|
||||||
def do_saveconfig(self, data):
|
def do_saveconfig(self, data):
|
||||||
# 默认暂时配置保存到 music 目录下
|
filename = self.config.getsettingfile()
|
||||||
filename = self.getsettingfile()
|
|
||||||
with open(filename, "w", encoding="utf-8") as f:
|
with open(filename, "w", encoding="utf-8") as f:
|
||||||
json.dump(data, f, ensure_ascii=False, indent=2)
|
json.dump(data, f, ensure_ascii=False, indent=2)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user