diff --git a/test/test_difflib.py b/test/test_difflib.py index dc54d4a..ef16359 100644 --- a/test/test_difflib.py +++ b/test/test_difflib.py @@ -1,9 +1,6 @@ import difflib -from xiaomusic.utils import ( - find_best_match, - keyword_detection, -) +from xiaomusic.utils.text_utils import find_best_match, keyword_detection if __name__ == "__main__": user_input = "八年的爱" diff --git a/test/test_music_duration.py b/test/test_music_duration.py index a58dbdb..e7ef0bf 100644 --- a/test/test_music_duration.py +++ b/test/test_music_duration.py @@ -1,12 +1,8 @@ import math -from xiaomusic.const import ( - SUPPORT_MUSIC_TYPE, -) -from xiaomusic.utils import ( - get_local_music_duration, - traverse_music_directory, -) +from xiaomusic.const import SUPPORT_MUSIC_TYPE +from xiaomusic.utils.file_utils import traverse_music_directory +from xiaomusic.utils.music_utils import get_local_music_duration async def test_one_music(filename): diff --git a/test/test_music_tags.py b/test/test_music_tags.py index 32fd886..7c6ab5d 100644 --- a/test/test_music_tags.py +++ b/test/test_music_tags.py @@ -1,12 +1,8 @@ import traceback -from xiaomusic.const import ( - SUPPORT_MUSIC_TYPE, -) -from xiaomusic.utils import ( - extract_audio_metadata, - traverse_music_directory, -) +from xiaomusic.const import SUPPORT_MUSIC_TYPE +from xiaomusic.utils.file_utils import traverse_music_directory +from xiaomusic.utils.music_utils import extract_audio_metadata # title 标题 # artist 艺术家 diff --git a/test/test_update.py b/test/test_update.py index 02b8e37..e01a3ca 100644 --- a/test/test_update.py +++ b/test/test_update.py @@ -1,6 +1,4 @@ -from xiaomusic.utils import ( - download_and_extract, -) +from xiaomusic.utils.system_utils import download_and_extract if __name__ == "__main__": import asyncio diff --git a/xiaomusic/api/routers/file.py b/xiaomusic/api/routers/file.py index 4b4da4d..c9f2599 100644 --- a/xiaomusic/api/routers/file.py +++ b/xiaomusic/api/routers/file.py @@ -36,20 +36,20 @@ from xiaomusic.api.models import ( DownloadPlayList, UrlInfo, ) -from xiaomusic.utils import ( - check_bili_fav_list, +from xiaomusic.utils.file_utils import ( chmoddir, - convert_file_to_mp3, + clean_temp_dir, + remove_common_prefix, + safe_join_path, +) +from xiaomusic.utils.music_utils import convert_file_to_mp3, is_mp3, remove_id3_tags +from xiaomusic.utils.network_utils import ( + check_bili_fav_list, download_one_music, download_playlist, downloadfile, - is_mp3, - remove_common_prefix, - remove_id3_tags, - safe_join_path, - try_add_access_control_param, ) -from xiaomusic.utils.file_utils import clean_temp_dir +from xiaomusic.utils.system_utils import try_add_access_control_param router = APIRouter() diff --git a/xiaomusic/api/routers/system.py b/xiaomusic/api/routers/system.py index 0c8d65b..e076e36 100644 --- a/xiaomusic/api/routers/system.py +++ b/xiaomusic/api/routers/system.py @@ -37,7 +37,7 @@ from xiaomusic.api.dependencies import ( verification, xiaomusic, ) -from xiaomusic.utils import ( +from xiaomusic.utils.system_utils import ( deepcopy_data_no_sensitive_info, get_latest_version, restart_xiaomusic, diff --git a/xiaomusic/auth.py b/xiaomusic/auth.py index fe0c987..52d40fa 100644 --- a/xiaomusic/auth.py +++ b/xiaomusic/auth.py @@ -10,11 +10,7 @@ import json import os -from miservice import ( - MiAccount, - MiIOService, - MiNAService, -) +from miservice import MiAccount, MiIOService, MiNAService from xiaomusic.config import Device from xiaomusic.const import COOKIE_TEMPLATE diff --git a/xiaomusic/config.py b/xiaomusic/config.py index 3bc5247..3233f7e 100644 --- a/xiaomusic/config.py +++ b/xiaomusic/config.py @@ -13,7 +13,7 @@ from xiaomusic.const import ( PLAY_TYPE_SEQ, PLAY_TYPE_SIN, ) -from xiaomusic.utils import validate_proxy +from xiaomusic.utils.system_utils import validate_proxy # 默认口令 diff --git a/xiaomusic/conversation.py b/xiaomusic/conversation.py index 2707ee5..917de75 100644 --- a/xiaomusic/conversation.py +++ b/xiaomusic/conversation.py @@ -13,10 +13,7 @@ import time from aiohttp import ClientTimeout -from xiaomusic.const import ( - GET_ASK_BY_MINA, - LATEST_ASK_API, -) +from xiaomusic.const import GET_ASK_BY_MINA, LATEST_ASK_API class ConversationPoller: diff --git a/xiaomusic/crontab.py b/xiaomusic/crontab.py index a011654..88bee94 100644 --- a/xiaomusic/crontab.py +++ b/xiaomusic/crontab.py @@ -4,10 +4,7 @@ from apscheduler.schedulers.asyncio import AsyncIOScheduler from apscheduler.triggers.base import BaseTrigger from apscheduler.triggers.cron import CronTrigger -from xiaomusic.holiday import ( - is_off_day, - is_working_day, -) +from xiaomusic.holiday import is_off_day, is_working_day from xiaomusic.utils.file_utils import clean_temp_dir diff --git a/xiaomusic/device_manager.py b/xiaomusic/device_manager.py index f3bfec4..8ed284f 100644 --- a/xiaomusic/device_manager.py +++ b/xiaomusic/device_manager.py @@ -7,9 +7,7 @@ """ from xiaomusic.device_player import XiaoMusicDevice -from xiaomusic.utils import ( - parse_str_to_dict, -) +from xiaomusic.utils.text_utils import parse_str_to_dict class DeviceManager: diff --git a/xiaomusic/device_player.py b/xiaomusic/device_player.py index 719f2ee..5ab59e2 100644 --- a/xiaomusic/device_player.py +++ b/xiaomusic/device_player.py @@ -23,11 +23,8 @@ from xiaomusic.const import ( TTS_COMMAND, ) from xiaomusic.events import DEVICE_CONFIG_CHANGED -from xiaomusic.utils import ( - chmodfile, - custom_sort_key, - list2str, -) +from xiaomusic.utils.file_utils import chmodfile +from xiaomusic.utils.text_utils import custom_sort_key, list2str class XiaoMusicDevice: diff --git a/xiaomusic/music_library.py b/xiaomusic/music_library.py index 03567d9..8505c43 100644 --- a/xiaomusic/music_library.py +++ b/xiaomusic/music_library.py @@ -15,22 +15,17 @@ from dataclasses import asdict from xiaomusic.const import SUPPORT_MUSIC_TYPE from xiaomusic.events import CONFIG_CHANGED -from xiaomusic.utils import ( - custom_sort_key, - extract_audio_metadata, - find_best_match, - fuzzyfinder, - not_in_dirs, - save_picture_by_base64, - set_music_tag_to_file, - traverse_music_directory, - try_add_access_control_param, -) +from xiaomusic.utils.file_utils import not_in_dirs, traverse_music_directory from xiaomusic.utils.music_utils import ( Metadata, + extract_audio_metadata, get_local_music_duration, get_web_music_duration, + save_picture_by_base64, + set_music_tag_to_file, ) +from xiaomusic.utils.system_utils import try_add_access_control_param +from xiaomusic.utils.text_utils import custom_sort_key, find_best_match, fuzzyfinder class MusicLibrary: diff --git a/xiaomusic/music_url.py b/xiaomusic/music_url.py index d53a793..290e4dc 100644 --- a/xiaomusic/music_url.py +++ b/xiaomusic/music_url.py @@ -6,10 +6,8 @@ import base64 import urllib.parse -from xiaomusic.utils import ( - MusicUrlCache, - try_add_access_control_param, -) +from xiaomusic.utils.network_utils import MusicUrlCache +from xiaomusic.utils.system_utils import try_add_access_control_param class MusicUrlHandler: diff --git a/xiaomusic/online_music.py b/xiaomusic/online_music.py index d216e3d..4ccfdf5 100644 --- a/xiaomusic/online_music.py +++ b/xiaomusic/online_music.py @@ -12,9 +12,7 @@ from urllib.parse import urlparse import aiohttp -from xiaomusic.const import ( - PLAY_TYPE_ALL, -) +from xiaomusic.const import PLAY_TYPE_ALL def _build_keyword(song_name, artist): diff --git a/xiaomusic/utils/__init__.py b/xiaomusic/utils/__init__.py index bfecd65..dba2881 100644 --- a/xiaomusic/utils/__init__.py +++ b/xiaomusic/utils/__init__.py @@ -1,123 +1,11 @@ #!/usr/bin/env python3 """ -Utils package - 工具函数模块 +工具函数模块 -将原 utils.py 拆分为多个职责清晰的子模块: +子模块分类: - text_utils: 文本处理和搜索 - file_utils: 文件和目录操作 - music_utils: 音乐文件处理 - network_utils: 网络请求和下载 - system_utils: 系统操作和环境 """ - -# 从各子模块导入常用函数,保持向后兼容 -from xiaomusic.utils.file_utils import ( - chmoddir, - chmodfile, - not_in_dirs, - remove_common_prefix, - safe_join_path, - traverse_music_directory, -) -from xiaomusic.utils.music_utils import ( - Metadata, - convert_file_to_mp3, - extract_audio_metadata, - get_duration_by_ffprobe, - get_duration_by_mutagen, - get_local_music_duration, - get_web_music_duration, - is_m4a, - is_mp3, - remove_id3_tags, - save_picture_by_base64, - set_music_tag_to_file, -) -from xiaomusic.utils.network_utils import ( - MusicUrlCache, - check_bili_fav_list, - download_one_music, - download_playlist, - downloadfile, - fetch_json_get, - text_to_mp3, -) -from xiaomusic.utils.system_utils import ( - deepcopy_data_no_sensitive_info, - download_and_extract, - get_latest_version, - get_os_architecture, - get_random, - is_docker, - restart_xiaomusic, - try_add_access_control_param, - update_version, - validate_proxy, -) -from xiaomusic.utils.text_utils import ( - calculate_tts_elapse, - chinese_to_number, - custom_sort_key, - find_best_match, - find_key_by_partial_string, - fuzzyfinder, - keyword_detection, - list2str, - parse_str_to_dict, - split_sentences, - traditional_to_simple, -) - -__all__ = [ - # text_utils - "calculate_tts_elapse", - "chinese_to_number", - "custom_sort_key", - "find_best_match", - "find_key_by_partial_string", - "fuzzyfinder", - "keyword_detection", - "list2str", - "parse_str_to_dict", - "split_sentences", - "traditional_to_simple", - # file_utils - "chmoddir", - "chmodfile", - "not_in_dirs", - "remove_common_prefix", - "safe_join_path", - "traverse_music_directory", - # music_utils - "Metadata", - "convert_file_to_mp3", - "extract_audio_metadata", - "get_duration_by_ffprobe", - "get_duration_by_mutagen", - "get_local_music_duration", - "get_web_music_duration", - "is_m4a", - "is_mp3", - "remove_id3_tags", - "set_music_tag_to_file", - "save_picture_by_base64", - # network_utils - "MusicUrlCache", - "check_bili_fav_list", - "download_one_music", - "download_playlist", - "downloadfile", - "fetch_json_get", - "text_to_mp3", - # system_utils - "deepcopy_data_no_sensitive_info", - "download_and_extract", - "get_latest_version", - "get_os_architecture", - "get_random", - "is_docker", - "restart_xiaomusic", - "try_add_access_control_param", - "update_version", - "validate_proxy", -] diff --git a/xiaomusic/xiaomusic.py b/xiaomusic/xiaomusic.py index eeb9669..f078725 100644 --- a/xiaomusic/xiaomusic.py +++ b/xiaomusic/xiaomusic.py @@ -11,9 +11,7 @@ from xiaomusic import __version__ from xiaomusic.analytics import Analytics from xiaomusic.auth import AuthManager from xiaomusic.command_handler import CommandHandler -from xiaomusic.config import ( - Config, -) +from xiaomusic.config import Config from xiaomusic.config_manager import ConfigManager from xiaomusic.const import ( PLAY_TYPE_ALL, @@ -31,11 +29,9 @@ from xiaomusic.music_library import MusicLibrary from xiaomusic.music_url import MusicUrlHandler from xiaomusic.online_music import OnlineMusicService from xiaomusic.plugin import PluginManager -from xiaomusic.utils import ( - chinese_to_number, - deepcopy_data_no_sensitive_info, - downloadfile, -) +from xiaomusic.utils.network_utils import downloadfile +from xiaomusic.utils.system_utils import deepcopy_data_no_sensitive_info +from xiaomusic.utils.text_utils import chinese_to_number class XiaoMusic: