From 276d3e83e3e90bda2f15598399b7b73bd64df6e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=96=E7=95=8C=E8=A7=82=E5=AF=9F=E6=97=A5=E5=BF=97?= Date: Wed, 27 Aug 2025 07:02:02 +0800 Subject: [PATCH] feat: add config expiration warning --- config.example.toml | 3 +++ src/cmd.py | 5 ++++- src/config.py | 3 +++ src/utils.py | 7 ++++++- 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/config.example.toml b/config.example.toml index 7e58fbe..cb577b5 100644 --- a/config.example.toml +++ b/config.example.toml @@ -1,3 +1,6 @@ +# DO NOT EDIT IT +version = "0.0.1" + [instance] url = "127.0.0.1:8080" secure = false diff --git a/src/cmd.py b/src/cmd.py index ce0aa72..64d90f4 100644 --- a/src/cmd.py +++ b/src/cmd.py @@ -14,7 +14,7 @@ from src.logger import GlobalLogger from src.measurer import SpeedMeasurer from src.rip import on_decrypt_success, on_decrypt_failed, rip_song, rip_album, rip_artist, rip_playlist from src.url import AppleMusicURL, URLType -from src.utils import check_dep, run_sync, safely_create_task, get_tasks_num +from src.utils import check_dep, run_sync, safely_create_task, get_tasks_num, config_outdated class InteractiveShell: @@ -34,6 +34,9 @@ class InteractiveShell: safely_create_task(it(WrapperManager).decrypt_init(on_success=on_decrypt_success, on_failure=on_decrypt_failed)) loop.run_until_complete(self.show_status()) + if config_outdated(): + it(GlobalLogger).logger.warning("The configuration file is out of date. Please refer to config.example.toml to update it") + self.parser = argparse.ArgumentParser(exit_on_error=False) subparser = self.parser.add_subparsers() download_parser = subparser.add_parser("download", aliases=["dl"]) diff --git a/src/config.py b/src/config.py index 58f2890..150e23f 100644 --- a/src/config.py +++ b/src/config.py @@ -5,6 +5,8 @@ from creart import exists_module from creart.creator import AbstractCreator, CreateTargetInfo from pydantic import BaseModel +CONFIG_VERSION = "0.0.1" + class Instance(BaseModel): url: str @@ -41,6 +43,7 @@ class Metadata(BaseModel): class Config(BaseModel): + version: str = "0.0.0" region: Region instance: Instance download: Download diff --git a/src/utils.py b/src/utils.py index aed33a3..fb2f8ea 100644 --- a/src/utils.py +++ b/src/utils.py @@ -8,6 +8,7 @@ from copy import deepcopy from datetime import datetime, timedelta from itertools import islice from pathlib import Path +from distutils.version import LooseVersion import m3u8 import regex @@ -15,7 +16,7 @@ from bs4 import BeautifulSoup from creart import it from pydantic import ValidationError -from src.config import Config +from src.config import Config, CONFIG_VERSION from src.exceptions import NotTimeSyncedLyricsException from src.logger import GlobalLogger from src.models import PlaylistInfo @@ -297,3 +298,7 @@ def query_language(region: str): def language_exist(region: str, language: str): _, languages = query_language(region) return language in languages + + +def config_outdated(): + return LooseVersion(it(Config).version) < LooseVersion(CONFIG_VERSION)