diff --git a/pyproject.toml b/pyproject.toml index 8e4f443..0466e2e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "XHS-Downloader" -version = "2.7" +version = "2.8" description = "小红书(XiaoHongShu、RedNote)链接提取/作品采集工具:提取账号发布、收藏、点赞、专辑作品链接;提取搜索结果作品、用户链接;采集小红书作品信息;提取小红书作品下载地址;下载小红书无水印作品文件" authors = [ { name = "JoeanAmier", email = "yonglelolu@foxmail.com" }, @@ -111,6 +111,8 @@ docstring-code-line-length = "dynamic" [dependency-groups] dev = [ + "nuitka>=4.0", + "pycryptodome>=3.23.0", "pyinstaller>=6.17.0", "textual-dev>=1.7.0", ] diff --git a/source/CLI/main.py b/source/CLI/main.py index 588d2f0..14d4b14 100644 --- a/source/CLI/main.py +++ b/source/CLI/main.py @@ -31,9 +31,7 @@ __all__ = ["cli"] def check_value(function): def inner(ctx: Context, param, value): - if not value: - return - return function(ctx, param, value) + return function(ctx, param, value) if value else None return inner @@ -81,8 +79,8 @@ class CLI: data.pop("browser_cookie") def __clean_params(self, data: dict) -> dict: - self.__merge_cookie(data) - return {k: v for k, v in data.items() if v} + # self.__merge_cookie(data) + return {k: v for k, v in data.items() if v != None} @staticmethod def __format_index(index: str) -> list: diff --git a/source/module/static.py b/source/module/static.py index f65fe82..3a55cc2 100644 --- a/source/module/static.py +++ b/source/module/static.py @@ -1,8 +1,8 @@ from pathlib import Path VERSION_MAJOR = 2 -VERSION_MINOR = 7 -VERSION_BETA = False +VERSION_MINOR = 8 +VERSION_BETA = True __VERSION__ = f"{VERSION_MAJOR}.{VERSION_MINOR}.{'beta' if VERSION_BETA else 'stable'}" ROOT = Path(__file__).resolve().parent.parent.parent.joinpath("Volume") ROOT.mkdir(exist_ok=True) diff --git a/static/Release_Notes.md b/static/Release_Notes.md index 20b4291..85adda7 100644 --- a/static/Release_Notes.md +++ b/static/Release_Notes.md @@ -1,28 +1,9 @@ **项目更新内容:** -1. 修复 MCP 模式无法下载文件的问题 -2. 新增 `script_server` 配置参数 -3. 移除 `从浏览器读取 Cookie` 功能 -4. 新增连接用户脚本下载作品功能 -5. 优化 Cookie 处理逻辑 -6. 修复视频作品下载功能 -7. 新增视频下载偏好设置 -8. 新增作品处理统计功能 -9. 重构数据处理逻辑 -10. 调整内置延时机制 +1. 修复 CLI 模式 KeyError 异常 ***** **用户脚本更新内容:** **版本号:2.3.1** - -1. 新增链接提取/图片下载选择模式开关 -2. 修复合辑作品链接提取失败的问题 -3. 链接提取选择界面添加序号显示 -4. 新增推送下载任务至服务器功能 -5. 新增图文作品文件下载格式设置 -6. 修复视频作品下载功能 -7. 优化用户脚本兼容性 -8. 新增英语语言支持 -9. 重构数据处理逻辑 diff --git a/uv.lock b/uv.lock index e7f6714..746bb9e 100644 --- a/uv.lock +++ b/uv.lock @@ -912,6 +912,12 @@ wheels = [ { url = "https://mirrors.ustc.edu.cn/pypi/packages/81/08/7036c080d7117f28a4af526d794aab6a84463126db031b007717c1a6676e/multidict-6.7.1-py3-none-any.whl", hash = "sha256:55d97cc6dae627efa6a6e548885712d4864b81110ac76fa4e534c03819fa4a56", size = 12319, upload-time = "2026-01-26T02:46:44.004Z" }, ] +[[package]] +name = "nuitka" +version = "4.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/simple" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/e5/d6/477dc84457fc07885f5fd020da4920e8a2787b2c04563ad444ac98f7d3eb/nuitka-4.0.tar.gz", hash = "sha256:0f404f292c3c2cc808d186d05a6d06a4b0aeca93f299cdfd5e33ddbcd19ab560", size = 4410008, upload-time = "2026-02-05T20:52:39.747Z" } + [[package]] name = "openapi-pydantic" version = "0.5.1" @@ -1065,6 +1071,25 @@ wheels = [ { url = "https://mirrors.ustc.edu.cn/pypi/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, ] +[[package]] +name = "pycryptodome" +version = "3.23.0" +source = { registry = "https://mirrors.ustc.edu.cn/pypi/simple" } +sdist = { url = "https://mirrors.ustc.edu.cn/pypi/packages/8e/a6/8452177684d5e906854776276ddd34eca30d1b1e15aa1ee9cefc289a33f5/pycryptodome-3.23.0.tar.gz", hash = "sha256:447700a657182d60338bab09fdb27518f8856aecd80ae4c6bdddb67ff5da44ef", size = 4921276, upload-time = "2025-05-17T17:21:45.242Z" } +wheels = [ + { url = "https://mirrors.ustc.edu.cn/pypi/packages/db/6c/a1f71542c969912bb0e106f64f60a56cc1f0fabecf9396f45accbe63fa68/pycryptodome-3.23.0-cp37-abi3-macosx_10_9_universal2.whl", hash = "sha256:187058ab80b3281b1de11c2e6842a357a1f71b42cb1e15bce373f3d238135c27", size = 2495627, upload-time = "2025-05-17T17:20:47.139Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/6e/4e/a066527e079fc5002390c8acdd3aca431e6ea0a50ffd7201551175b47323/pycryptodome-3.23.0-cp37-abi3-macosx_10_9_x86_64.whl", hash = "sha256:cfb5cd445280c5b0a4e6187a7ce8de5a07b5f3f897f235caa11f1f435f182843", size = 1640362, upload-time = "2025-05-17T17:20:50.392Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/50/52/adaf4c8c100a8c49d2bd058e5b551f73dfd8cb89eb4911e25a0c469b6b4e/pycryptodome-3.23.0-cp37-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:67bd81fcbe34f43ad9422ee8fd4843c8e7198dd88dd3d40e6de42ee65fbe1490", size = 2182625, upload-time = "2025-05-17T17:20:52.866Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/5f/e9/a09476d436d0ff1402ac3867d933c61805ec2326c6ea557aeeac3825604e/pycryptodome-3.23.0-cp37-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:c8987bd3307a39bc03df5c8e0e3d8be0c4c3518b7f044b0f4c15d1aa78f52575", size = 2268954, upload-time = "2025-05-17T17:20:55.027Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/f9/c5/ffe6474e0c551d54cab931918127c46d70cab8f114e0c2b5a3c071c2f484/pycryptodome-3.23.0-cp37-abi3-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:aa0698f65e5b570426fc31b8162ed4603b0c2841cbb9088e2b01641e3065915b", size = 2308534, upload-time = "2025-05-17T17:20:57.279Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/18/28/e199677fc15ecf43010f2463fde4c1a53015d1fe95fb03bca2890836603a/pycryptodome-3.23.0-cp37-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:53ecbafc2b55353edcebd64bf5da94a2a2cdf5090a6915bcca6eca6cc452585a", size = 2181853, upload-time = "2025-05-17T17:20:59.322Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/ce/ea/4fdb09f2165ce1365c9eaefef36625583371ee514db58dc9b65d3a255c4c/pycryptodome-3.23.0-cp37-abi3-musllinux_1_2_i686.whl", hash = "sha256:156df9667ad9f2ad26255926524e1c136d6664b741547deb0a86a9acf5ea631f", size = 2342465, upload-time = "2025-05-17T17:21:03.83Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/22/82/6edc3fc42fe9284aead511394bac167693fb2b0e0395b28b8bedaa07ef04/pycryptodome-3.23.0-cp37-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:dea827b4d55ee390dc89b2afe5927d4308a8b538ae91d9c6f7a5090f397af1aa", size = 2267414, upload-time = "2025-05-17T17:21:06.72Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/59/fe/aae679b64363eb78326c7fdc9d06ec3de18bac68be4b612fc1fe8902693c/pycryptodome-3.23.0-cp37-abi3-win32.whl", hash = "sha256:507dbead45474b62b2bbe318eb1c4c8ee641077532067fec9c1aa82c31f84886", size = 1768484, upload-time = "2025-05-17T17:21:08.535Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/54/2f/e97a1b8294db0daaa87012c24a7bb714147c7ade7656973fd6c736b484ff/pycryptodome-3.23.0-cp37-abi3-win_amd64.whl", hash = "sha256:c75b52aacc6c0c260f204cbdd834f76edc9fb0d8e0da9fbf8352ef58202564e2", size = 1799636, upload-time = "2025-05-17T17:21:10.393Z" }, + { url = "https://mirrors.ustc.edu.cn/pypi/packages/18/3d/f9441a0d798bf2b1e645adc3265e55706aead1255ccdad3856dbdcffec14/pycryptodome-3.23.0-cp37-abi3-win_arm64.whl", hash = "sha256:11eeeb6917903876f134b56ba11abe95c0b0fd5e3330def218083c7d98bbcb3c", size = 1703675, upload-time = "2025-05-17T17:21:13.146Z" }, +] + [[package]] name = "pydantic" version = "2.12.5" @@ -1616,7 +1641,7 @@ wheels = [ [[package]] name = "xhs-downloader" -version = "2.7" +version = "2.8" source = { virtual = "." } dependencies = [ { name = "aiofiles" }, @@ -1636,6 +1661,8 @@ dependencies = [ [package.dev-dependencies] dev = [ + { name = "nuitka" }, + { name = "pycryptodome" }, { name = "pyinstaller" }, { name = "textual-dev" }, ] @@ -1659,6 +1686,8 @@ requires-dist = [ [package.metadata.requires-dev] dev = [ + { name = "nuitka", specifier = ">=4.0" }, + { name = "pycryptodome", specifier = ">=3.23.0" }, { name = "pyinstaller", specifier = ">=6.17.0" }, { name = "textual-dev", specifier = ">=1.7.0" }, ]