从刷屏动图到永久珍藏:XHS-Downloader LivePhoto全链路处理指南
你是否遇到过这样的困扰:小红书上刷到的精彩LivePhoto动图,想保存却只能得到静态图片?本文将带你通过XHS-Downloader这款开源工具,从获取链接到最终保存,完整掌握LivePhoto的下载与处理方法,让转瞬即逝的动态瞬间成为永久珍藏。
认识LivePhoto与XHS-Downloader
LivePhoto是一种特殊的媒体格式,它在拍摄照片的同时会录制一段短视频,让静态图片"动起来"。XHS-Downloader作为一款基于AIOHTTP模块实现的小红书图文/视频作品采集工具,不仅支持普通图片和视频的下载,还能处理LivePhoto文件。
XHS-Downloader的核心功能模块位于source/application/目录下,其中download.py负责文件下载逻辑,image.py和video.py则分别处理图片和视频文件的解析与保存。
准备工作:安装与配置
在开始下载LivePhoto之前,我们需要先完成XHS-Downloader的安装和基础配置。
安装方式选择
XHS-Downloader提供了多种安装方式,你可以根据自己的需求选择:
-
程序运行:适合仅需下载无水印作品文件的用户。前往项目发布页面下载对应系统的压缩包,解压后双击运行
main即可。 -
Docker运行:适合熟悉容器技术的用户。使用以下命令拉取镜像并启动:
docker pull joeanamier/xhs-downloader docker run --name xhs-downloader -p 5556:5556 -v xhs_downloader_volume:/app/Volume -it joeanamier/xhs-downloader -
源码运行:适合开发者或需要自定义功能的用户。首先克隆仓库:
git clone https://gitcode.com/gh_mirrors/xh/XHS-Downloader然后安装依赖:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt最后运行:
python main.py
基础配置
对于LivePhoto下载,我们需要特别关注配置文件中的live_download参数。该参数默认为false,需要将其设置为true才能开启LivePhoto下载功能。配置文件路径为./Volume/settings.json,你可以直接编辑该文件,或通过程序的设置界面进行修改。
下载LivePhoto的三种方法
XHS-Downloader提供了多种方式来下载小红书内容,包括图形界面、命令行和API调用。下面我们将详细介绍这三种方法如何应用于LivePhoto下载。
图形界面操作
- 启动XHS-Downloader后,你会看到主界面。
- 在输入框中粘贴小红书作品链接。
- 确保"下载LivePhoto"选项已勾选。
- 点击"下载"按钮开始处理。
命令行模式
对于熟悉命令行的用户,可以直接使用命令行模式下载LivePhoto:
python main.py --live_download true "https://www.xiaohongshu.com/explore/作品ID?xsec_token=XXX"
其中--live_download true参数用于开启LivePhoto下载功能。你也可以通过编辑配置文件,将live_download设置为true,这样就不需要每次都在命令行中指定该参数了。
API调用
如果需要将XHS-Downloader集成到其他应用中,可以使用API模式。首先启动API服务器:
python main.py api
然后发送POST请求到http://127.0.0.1:5556/xhs/detail,包含以下参数:
import requests
data = {
"url": "https://www.xiaohongshu.com/explore/作品ID?xsec_token=XXX",
"download": True,
"live_download": True
}
response = requests.post("http://127.0.0.1:5556/xhs/detail", json=data)
print(response.json())
example.py文件中提供了更详细的API调用示例,你可以参考该文件进行二次开发。
LivePhoto文件处理流程
XHS-Downloader处理LivePhoto的流程可以分为以下几个关键步骤:
1. 链接解析
当你输入小红书作品链接后,XHS-Downloader会通过source/application/request.py模块向小红书服务器发送请求,获取作品的元数据。这个过程中会判断作品是否包含LivePhoto内容。
2. 资源下载
如果检测到LivePhoto,download.py模块会开始下载相关文件。需要注意的是,小红书的LivePhoto文件是含水印的,这是由于平台的限制。
3. 文件保存
下载完成后,文件会按照配置的路径和命名规则保存。默认情况下,文件会保存在./Volume/Download目录下。你可以通过修改配置文件中的work_path和folder_name参数来自定义保存路径,通过name_format参数自定义文件名格式。
高级技巧:批量下载与自动化
对于需要下载大量LivePhoto的用户,XHS-Downloader提供了批量下载和自动化功能。
批量下载
你可以一次输入多个作品链接,链接之间使用空格分隔。例如:
python main.py --live_download true "链接1" "链接2" "链接3"
监听剪贴板
XHS-Downloader还支持监听剪贴板功能,当检测到小红书链接时自动开始下载。这个功能可以通过source/expansion/browser.py模块实现,你需要在设置中开启"监听剪贴板"选项。
二次开发
如果你是开发者,可以基于XHS-Downloader进行二次开发,实现更复杂的自动化逻辑。example.py提供了详细的代码示例,展示如何通过代码调用XHS-Downloader的核心功能。
下面是一个简单的示例,展示如何使用Python代码批量下载LivePhoto:
from asyncio import run
from source import XHS
async def batch_download():
links = [
"https://www.xiaohongshu.com/explore/作品ID1?xsec_token=XXX",
"https://www.xiaohongshu.com/explore/作品ID2?xsec_token=XXX",
# 更多链接...
]
async with XHS(live_download=True) as xhs:
for link in links:
print(f"正在下载: {link}")
await xhs.extract(link, download=True)
run(batch_download())
常见问题与解决方案
LivePhoto下载后无法播放
如果你下载的LivePhoto文件无法播放,可能是由于以下原因:
-
文件不完整:网络问题可能导致文件下载不完整。XHS-Downloader有文件完整性处理机制,你可以在source/expansion/error.py中查看相关实现。如果怀疑文件不完整,可以尝试重新下载。
-
播放器不支持:LivePhoto是一种特殊格式,并非所有播放器都支持。建议使用最新版本的QuickTime Player或其他支持HEIF/HEVC格式的播放器。
下载速度慢
如果下载速度较慢,可以尝试以下方法:
- 调整分块大小:在配置文件中修改
chunk参数,增大每次从服务器获取的数据块大小。 - 使用代理:通过
proxy参数配置代理服务器,可能会提高访问速度。
Cookie相关问题
从2.2版本开始,XHS-Downloader在功能无异常的情况下无需额外处理Cookie。但如果你遇到访问受限的问题,可以尝试手动获取并设置Cookie:
- 打开浏览器,访问小红书网站
- 按下F12打开开发者工具
- 在"网络"选项卡中找到包含"web_session"的请求
- 复制Cookie值并在XHS-Downloader中设置
总结与展望
通过本文的介绍,你应该已经掌握了使用XHS-Downloader下载和处理小红书LivePhoto的方法。从基础的安装配置,到高级的批量下载和自动化,XHS-Downloader提供了全方位的功能支持。
项目的源码结构清晰,主要模块包括:
- source/CLI/:命令行界面实现
- source/TUI/:终端用户界面实现
- source/application/:核心功能实现
- source/expansion/:扩展功能实现
- source/module/:通用模块
未来,XHS-Downloader可能会加入更多高级功能,如LivePhoto水印去除、格式转换等。如果你有兴趣参与项目开发,可以参考CONTRIBUTING.md中的贡献指南。
希望本文能帮助你更好地使用XHS-Downloader,让那些精彩的LivePhoto不再转瞬即逝,而是成为你永久珍藏的美好回忆。如果你有任何问题或建议,欢迎通过项目的issue系统或社区渠道反馈。
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00







