refactor: 优化代码
This commit is contained in:
parent
7744a75773
commit
7877775495
@ -79,7 +79,11 @@ def reset_http_server():
|
|||||||
|
|
||||||
# 更新 music 链接
|
# 更新 music 链接
|
||||||
app.router.routes = [route for route in app.router.routes if route.path != "/music"]
|
app.router.routes = [route for route in app.router.routes if route.path != "/music"]
|
||||||
app.mount("/music", StaticFiles(directory=config.music_path,follow_symlink=True), name="music")
|
app.mount(
|
||||||
|
"/music",
|
||||||
|
StaticFiles(directory=config.music_path, follow_symlink=True),
|
||||||
|
name="music",
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def HttpInit(_xiaomusic):
|
def HttpInit(_xiaomusic):
|
||||||
|
@ -7,18 +7,17 @@ import mimetypes
|
|||||||
import os
|
import os
|
||||||
import random
|
import random
|
||||||
import re
|
import re
|
||||||
|
import shutil
|
||||||
import string
|
import string
|
||||||
import tempfile
|
import tempfile
|
||||||
from collections.abc import AsyncIterator
|
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
|
||||||
from mutagen.id3 import ID3
|
|
||||||
from mutagen.mp3 import MP3
|
|
||||||
import os
|
|
||||||
import shutil
|
|
||||||
|
|
||||||
import aiohttp
|
import aiohttp
|
||||||
import mutagen
|
import mutagen
|
||||||
|
from mutagen.id3 import ID3
|
||||||
|
from mutagen.mp3 import MP3
|
||||||
from requests.utils import cookiejar_from_dict
|
from requests.utils import cookiejar_from_dict
|
||||||
|
|
||||||
from xiaomusic.const import SUPPORT_MUSIC_TYPE
|
from xiaomusic.const import SUPPORT_MUSIC_TYPE
|
||||||
@ -300,20 +299,21 @@ def parse_str_to_dict(s, d1=",", d2=":"):
|
|||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
# remove mp3 file id3 tag and padding to reduce delay
|
# remove mp3 file id3 tag and padding to reduce delay
|
||||||
def no_padding(info):
|
def no_padding(info):
|
||||||
# this will remove all padding
|
# this will remove all padding
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
def remove_id3_tags(filename,music_path):
|
|
||||||
|
|
||||||
file_path = music_path + "/" + filename
|
def remove_id3_tags(file_path):
|
||||||
audio = MP3(file_path, ID3=ID3)
|
audio = MP3(file_path, ID3=ID3)
|
||||||
change = False
|
change = False
|
||||||
|
|
||||||
# 检查是否存在ID3 v2.3或v2.4标签
|
# 检查是否存在ID3 v2.3或v2.4标签
|
||||||
if audio.tags and (audio.tags.version == (2, 3, 0) or audio.tags.version == (2, 4, 0)):
|
if audio.tags and (
|
||||||
|
audio.tags.version == (2, 3, 0) or audio.tags.version == (2, 4, 0)
|
||||||
|
):
|
||||||
# 构造新文件的路径
|
# 构造新文件的路径
|
||||||
new_file_path = file_path + ".bak"
|
new_file_path = file_path + ".bak"
|
||||||
|
|
||||||
@ -331,8 +331,4 @@ def remove_id3_tags(filename,music_path):
|
|||||||
|
|
||||||
change = True
|
change = True
|
||||||
|
|
||||||
return filename,change
|
return change
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -37,12 +37,11 @@ from xiaomusic.utils import (
|
|||||||
fuzzyfinder,
|
fuzzyfinder,
|
||||||
get_local_music_duration,
|
get_local_music_duration,
|
||||||
get_web_music_duration,
|
get_web_music_duration,
|
||||||
|
is_mp3,
|
||||||
parse_cookie_string,
|
parse_cookie_string,
|
||||||
parse_str_to_dict,
|
parse_str_to_dict,
|
||||||
traverse_music_directory,
|
|
||||||
remove_id3_tags,
|
remove_id3_tags,
|
||||||
is_mp3
|
traverse_music_directory,
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@ -371,21 +370,22 @@ class XiaoMusic:
|
|||||||
self.log.debug(f"get_music_url web music. name:{name}, url:{url}")
|
self.log.debug(f"get_music_url web music. name:{name}, url:{url}")
|
||||||
return url
|
return url
|
||||||
|
|
||||||
filename = self.get_filename(name).replace("\\", "/")
|
filename = self.get_filename(name)
|
||||||
|
# 移除MP3 ID3 v2标签和填充,减少播放前延迟
|
||||||
|
if self.remove_id3tag and is_mp3(filename):
|
||||||
|
self.log.info(f"remove_id3tag:{self.remove_id3tag}, is_mp3:True ")
|
||||||
|
change = remove_id3_tags(filename)
|
||||||
|
if change:
|
||||||
|
self.log.info("ID3 tag removed, orgin mp3 file saved as bak")
|
||||||
|
else:
|
||||||
|
self.log.info("No ID3 tag remove needed")
|
||||||
|
|
||||||
|
filename = filename.replace("\\", "/")
|
||||||
if filename.startswith(self.config.music_path):
|
if filename.startswith(self.config.music_path):
|
||||||
filename = filename[len(self.config.music_path) :]
|
filename = filename[len(self.config.music_path) :]
|
||||||
if filename.startswith("/"):
|
if filename.startswith("/"):
|
||||||
filename = filename[1:]
|
filename = filename[1:]
|
||||||
self.log.debug(f"get_music_url local music. name:{name}, filename:{filename}")
|
self.log.debug(f"get_music_url local music. name:{name}, filename:{filename}")
|
||||||
|
|
||||||
#移除MP3 ID3 v2标签和填充,减少播放前延迟
|
|
||||||
if self.remove_id3tag and is_mp3(f"{self.music_path}/{filename}"):
|
|
||||||
self.log.info(f"remove_id3tag:{self.remove_id3tag}, is_mp3:True ")
|
|
||||||
filename,change = remove_id3_tags(filename,self.music_path)
|
|
||||||
if change:
|
|
||||||
self.log.info(f"ID3 tag removed, orgin mp3 file saved as bak")
|
|
||||||
else:
|
|
||||||
self.log.info(f"No ID3 tag remove needed")
|
|
||||||
encoded_name = urllib.parse.quote(filename)
|
encoded_name = urllib.parse.quote(filename)
|
||||||
return f"http://{self.hostname}:{self.public_port}/music/{encoded_name}"
|
return f"http://{self.hostname}:{self.public_port}/music/{encoded_name}"
|
||||||
|
|
||||||
@ -418,12 +418,12 @@ class XiaoMusic:
|
|||||||
all_music_by_dir[dir_name][name] = True
|
all_music_by_dir[dir_name][name] = True
|
||||||
self.log.debug(f"_gen_all_music_list {name}:{dir_name}:{file}")
|
self.log.debug(f"_gen_all_music_list {name}:{dir_name}:{file}")
|
||||||
|
|
||||||
#self.log.debug(self.all_music)
|
# self.log.debug(self.all_music)
|
||||||
|
|
||||||
self.music_list = {}
|
self.music_list = {}
|
||||||
for dir_name, musics in all_music_by_dir.items():
|
for dir_name, musics in all_music_by_dir.items():
|
||||||
self.music_list[dir_name] = list(musics.keys())
|
self.music_list[dir_name] = list(musics.keys())
|
||||||
#self.log.debug("dir_name:%s, list:%s", dir_name, self.music_list[dir_name])
|
# self.log.debug("dir_name:%s, list:%s", dir_name, self.music_list[dir_name])
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self._append_music_list()
|
self._append_music_list()
|
||||||
@ -471,8 +471,8 @@ class XiaoMusic:
|
|||||||
self.music_list[list_name] = one_music_list
|
self.music_list[list_name] = one_music_list
|
||||||
if self._all_radio:
|
if self._all_radio:
|
||||||
self.music_list["所有电台"] = list(self._all_radio.keys())
|
self.music_list["所有电台"] = list(self._all_radio.keys())
|
||||||
#self.log.debug(self.all_music)
|
# self.log.debug(self.all_music)
|
||||||
#self.log.debug(self.music_list)
|
# self.log.debug(self.music_list)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.log.exception(f"Execption {e}")
|
self.log.exception(f"Execption {e}")
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user