当前位置:首页>python>用Python批量下载AI绘画作品——顺便把提示词也带回来了

用Python批量下载AI绘画作品——顺便把提示词也带回来了

  • 2026-10-11 06:08:30
用Python批量下载AI绘画作品——顺便把提示词也带回来了

用Python批量下载AI绘画作品——顺便把提示词也带回来了

✦ ✦ ✦

摘要:在 liblib.art 上看到一个喜欢的模型,作品展示区有几千张社区生成的图片,一张张手动保存太累了。我用 Python 写了段脚本,一键批量下载所有图片和对应的生成参数——提示词、采样方法、步数、CFG、种子,全部自动归档。本文记录实现思路,纯技术交流。

✦ ✦ ✦

起因

事情是这样的。我在 liblib.art 上闲逛,看到一个模型的效果特别对胃口,点进作品展示区一看——好家伙,社区用户用这个模型生成了不少图片。

我当时的想法是:这些图要是能全部拉下来,加上每张图对应的提示词和参数,不管是用来分析这个模型的风格偏好,还是给后续项目做素材参考,都很有价值。

但真要我一张张点开、右键保存、再复制参数——几千张图,手得废掉。得想个办法让它自己干。

捋一下思路

打开浏览器开发者工具看了看,发现 liblib 的页面是前后端分离的,作品数据走的是 API。那事情就简单了:搞清楚 API 怎么调,剩下的交给代码。

整个流程分三步:

第一步,调 API 把作品列表全拉下来,拿到每张图的 UUID。

第二步,拿 UUID 去详情页把图片和参数提取出来。

第三步,加个断点续传机制,万一中途断了不用从头再来。

拿 UUID

作品展示区的数据是通过一个接口返回的:

POST https://api2.liblib.art/api/www/community/returnPicList

参数很简单,传模型的 UUID、每页条数、页码就行:

{  "uuid": "模型的UUID",  "pageSize": 100,  "page": 1}

每次返回 100 条,翻页遍历完所有页面,所有作品的 UUID 就到手了。

提取图片和参数

拿到 UUID 之后,访问作品的详情页:

https://www.liblib.art/imageinfo/{uuid}

页面的 HTML 里嵌着一份完整的服务端渲染数据,图片地址和生成参数都在里面。顺着这个路径找就行:

data → props → pageProps → data → imagesV2[0][0]

能拿到的东西还挺全的:

字段
说明
originalImageUrl
原图地址,不带水印
generateInfo.prompt
提示词
generateInfo.negativePrompt
负向提示词
generateInfo.samplingMethod
采样方法
generateInfo.samplingStep
步数
generateInfo.cfgScale
CFG 值
generateInfo.seed
种子

每张图生成两个文件,图片和参数分开存:

001 - 作品标题.png    ← 原图001 - 作品标题.txt    ← 提示词 + 参数

断点续传

几千张图,下载过程中可能断网、可能报错、可能想关电脑走人。所以必须支持断点续传。

方案是在输出目录维护一个检查点文件:

{  "uuids": ["...所有UUID"],  "completed": ["...已成功的"],  "failed": ["...失败的"]}

每成功下载一张就更新一次。下次启动时加个参数,自动跳过已完成的,继续处理失败的。

几个小细节

图片地址

SSR 数据里的 originalImageUrl是原图,不带水印。如果这个字段为空,可以回退到 imageUrl或 coverUrl。

隐藏参数

有些作品设置了隐藏参数,SSR 数据里不包含生成信息。这种情况在 txt 里标注一下就行,不影响图片下载。

请求间隔

API 请求间隔 0.5-1 秒,图片下载间隔 2-4 秒,不给服务器添麻烦。

实际效果

拿一个模型试了试(绪儿大佬的红尘白梦),下载下来的图片拼了几张图,效果还不错:

有了数据能做什么

这批「图片 + 参数」数据拿到手之后,能做的事情还挺多的:

提示词词频统计——看看大家用这个模型时最喜欢写什么关键词参数分布分析——步数、CFG、采样方法,社区用户的偏好一目了然图生图参数还原——看到喜欢的风格,反推它的生成配置数据集构建——为模型训练或风格迁移准备素材

✦ ✦ ✦

仅供学习交流,请遵守 liblib.art 的用户协议。

— 完 —

最新文章

随机文章