refactor: 优化代码

This commit is contained in:
涵曦 2024-07-19 14:25:56 +00:00
parent 7744a75773
commit 7877775495
3 changed files with 33 additions and 33 deletions

View File

@ -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):

View File

@ -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

View File

@ -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}"