From 5b85379d49e4173abd23737fe662e6e579be24ea Mon Sep 17 00:00:00 2001 From: JoeanAmier Date: Sun, 8 Sep 2024 12:06:50 +0800 Subject: [PATCH] =?UTF-8?q?perf(download.py):=20=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 更新英语翻译 2. 修复代码逻辑错误 3. 优化代码变量名 4. 优化代码格式 --- locale/en_GB/LC_MESSAGES/xhs.mo | Bin 12250 -> 12376 bytes locale/en_GB/LC_MESSAGES/xhs.po | 3 +++ locale/zh_CN/LC_MESSAGES/xhs.po | 3 +++ source/application/download.py | 39 +++++++++++++++++++------------- source/module/__init__.py | 2 ++ source/module/static.py | 36 ++++++----------------------- static/Release_Notes.md | 2 ++ 7 files changed, 40 insertions(+), 45 deletions(-) diff --git a/locale/en_GB/LC_MESSAGES/xhs.mo b/locale/en_GB/LC_MESSAGES/xhs.mo index 2011a5bff885ed01656e42735977acfa7c008759..f08fa11fad4666d2e73b388ebb9040cbf5bb7184 100644 GIT binary patch delta 2032 zcmX}se@vBC9LMnk*1bTIz!lUq?_(i_+{+I^e%zZSnIutU;titAdsD8`P>fOjVeHnb zLFnrx!IaEh789_$y$qkEZ2`U%CW3}gvb^yZT-Po>;37TdiI?AI^Xl$=bZCB z=iEE7&6w-4#@dWw;>R%$hwujc%*MasGUC*9 zW42;GHew$x#_w?+Ucq;bNtihq$pJ=j0S_jumoY$`aZS=HTu8jl+JpJT{ip#?+xGLQ zf&R4S%r%DF6!VdZVJyIUT)_BdHx-A5KGXomF&96w@i`m+ZeuUKRPfxv9E@No?m$iG z5VqnOR6mQZrCl!tW>jL^QHed3%ld1HU$PCy?H5PzS=v9b?F}6DYT_2uY2S}J ztS50Jp2h3XPvde7q56$tF+PdC_zp&~oLT7kfdmzPG3JD(m14|$sE$r?Vzf2mNZ;lP zs-p}ZY9(q=TlFaVu@{y3Tet$hLS8YmNDgK`qv`OiKy6JEe$Bv%IF(g2RI&bgVJ9lX zUgTZ#wrwA?@lU7@W|3D-Ch1mTA!?u)-imwhMjXK?PN4b^^V?HG5oGHUrh`fY4M%Vt zUPNwFN;=A{8QFfb2P^Oe)SiEcEqEF0uz~c{{tCwNW7M7(6((0Ij3MF{tVI_C`u&en z(acg=H@O5g^GZ~Ptw^%w3CzaBsI3`59nvq5vCMDCZSpvIns6=tjS=Lpz-$U6-+u(t zh`TY1@l6jEec@%S#MeSM4X4DezLrw5Y)Wj~L-v0~rUO5Mb+)O*( zj;{4P)D|u(F=n+g2vG50BkGSRg8Vm_ZdAw5;R$>d=iz!zAZOLoyURR9xpz?0Mnx!k zs%wKA^Z0^WsI5`RwVtBYy^AuJQbW zfNAg8GII-sv-SU_CA*q(w>#wZWokjw?XykpH(vj$wM69reydT{W<2S=x# z9=tUA+TOCB;pVI}3k&KxyLQI9ovya6o!fV{cei)$a^kV}j<#)1ytB)RQ&XSrnn3Pw IZsC~cAK4M>9RL6T delta 1923 zcmX}tdrZ}39LMpmSmzuH?7-m!gm6+&L^y$Qu#To#B3@9uk^~iJU8p~D#oUTNsxt&_ zZ2rY>O`X=}=H@2O3(UzMt*y1fF>$)KU|wf5a&vC23$XsE-k)Iyn89Sw4=+`H!GmN%ee>3s2@OeIN+|2p*os! zW@MT1vl33(Sc!`cuOVNwmD;FaRet( z85!WD>))W-x#GOxyoa@1|0|dLtHFv;`a%^S5y+9z-6oi^v@88fw%1ie%k_^nR6|OREB8yXy(nRHTeYj*&rv)><%imIc#+ea2u-O_i;IXhI;P;GG@DvFJqXEBU?~Q zcN8^&Gw8#s7}X!1aS9sQG^$~LH5(5LQK=k7_NZ;}mia2fYbj}gb`iR(W2@Kc3q{|c z^kS-RwjPz{jYJml8lkLe0?!il-g#drvz=0c*y4@(B6D8%9{3{BCh8i+W Path: try: async with open(temp, "rb") as f: - file_start = await f.read(FILE_HEADER_MAX_LENGTH) - for offset, magic, suffix in MAGIC_DICT: - if file_start[offset:offset + len(magic)] == magic: + file_start = await f.read(FILE_SIGNATURES_LENGTH) + for offset, signature, suffix in FILE_SIGNATURES: + if file_start[offset:offset + len(signature)] == signature: return path.joinpath(f"{name}.{suffix}") - return path.joinpath(f"{name}.{suffix}") except Exception as error: logging( log, - f"文件 {temp.name} 后缀修复失败,错误信息: {repr(error)}", + self.message("文件 {0} 格式判断失败,错误信息:{1}").format(temp.name, repr(error)), ERROR, ) - return path.joinpath(f"{name}.{suffix}") + return path.joinpath(f"{name}.{default_suffix}") diff --git a/source/module/__init__.py b/source/module/__init__.py index dadc533..5734240 100644 --- a/source/module/__init__.py +++ b/source/module/__init__.py @@ -28,6 +28,8 @@ from .static import ( USERAGENT, SEC_CH_UA, SEC_CH_UA_PLATFORM, + FILE_SIGNATURES, + FILE_SIGNATURES_LENGTH, ) from .tools import ( retry, diff --git a/source/module/static.py b/source/module/static.py index 1b96b80..6529327 100644 --- a/source/module/static.py +++ b/source/module/static.py @@ -1,31 +1,8 @@ from pathlib import Path -__all__ = [ - "VERSION_MAJOR", - "VERSION_MINOR", - "VERSION_BETA", - "ROOT", - "REPOSITORY", - "LICENCE", - "RELEASES", - "MASTER", - "PROMPT", - "GENERAL", - "PROGRESS", - "ERROR", - "WARNING", - "INFO", - "USERSCRIPT", - "HEADERS", - "PROJECT", - "USERAGENT", - "SEC_CH_UA", - "SEC_CH_UA_PLATFORM", -] - VERSION_MAJOR = 2 -VERSION_MINOR = 2 -VERSION_BETA = False +VERSION_MINOR = 3 +VERSION_BETA = True ROOT = Path(__file__).resolve().parent.parent.parent PROJECT = f"XHS-Downloader V{VERSION_MAJOR}.{ VERSION_MINOR}{" Beta" if VERSION_BETA else ""}" @@ -67,13 +44,14 @@ ERROR = "b bright_red" WARNING = "b bright_yellow" INFO = "b bright_green" -MAGIC_DICT = { - # 分别为偏移量(字节)、魔数、后缀名 +FILE_SIGNATURES: tuple[tuple[int, bytes, str,], ...] = ( + # 分别为偏移量(字节)、十六进制签名、后缀 # 参考:https://en.wikipedia.org/wiki/List_of_file_signatures + # 参考:https://www.garykessler.net/library/file_sigs.html (0, b"\xFF\xD8\xFF", "jpg"), (0, b"\x89\x50\x4E\x47\x0D\x0A\x1A\x0A", "png"), (0, b"\x00\x00\x00", "avif"), (4, b"\x66\x74\x79\x70\x68\x65\x69\x63", "heic"), (8, b"\x57\x45\x42\x50", "webp"), -} -FILE_HEADER_MAX_LENGTH = max(offset + len(magic) for offset, magic, _ in MAGIC_DICT) +) +FILE_SIGNATURES_LENGTH = max(offset + len(signature) for offset, signature, _ in FILE_SIGNATURES) diff --git a/static/Release_Notes.md b/static/Release_Notes.md index b7115a4..9f1437d 100644 --- a/static/Release_Notes.md +++ b/static/Release_Notes.md @@ -2,6 +2,8 @@ 1. 优化文件后缀处理逻辑 +

旧版本升级后首次运行请删除配置文件 settings.json,删除后重新运行程序会自动生成新的默认配置文件!

+
**用户脚本更新内容:**