A async coroutine script for gelbooru API and download.
一个采用异步协程,用于通过指定tags关键词访问Gelbooru公共API,并下载图片的脚本。
对于SD训练很有用。
输入你想要的tags关键词,自动查询Gelbooru的API,然后采用异步协程方式,并发下载图片,同时会把gelbooru上图片的详细tags一同保存 特点:
- Download automatically | 自动化下载
- Download images with tag | 下载图片和tags
- MD5, Say no to duplication | 重复文件md5校验
- Asyncio and coroutine, fast | 协程异步并发写入和下载
- httpx and aiofiles | 全部采用协程,不包含任何同步阻塞操作
- Save detailed gelbooru tags txt concurrently | 下载图片同时保存详细的gelbooru tags
- Get gelbooru tags without downloading duplicate images | 已经存在图片但无tags文本,会自动补全
Attention! It's probably against Gelbooru's TOS!
scrape_images
以自动的方式,httpx默认的UA头访问gelbooru的公共API,然后并发地异步下载图片
虽然我没找到gelbooru在这方面的限制,但这仍然可能违反了gelbooru的政策!
不要滥用这个脚本,不要大量下载gelbooru的图片,保证下载频率和最大协程数不要过高!
如果你觉得这个脚本有用,你应该感谢gelbooru的无私贡献 你可以以捐赠或者购买商品的形式支持他们
请保证 python>=3.9
pip install -r requirements.txt
Tip
中国用户访问gelbooru请自行使用系统代理.
或者通过 $env:HTTPS_PROXY = http://127.0.0.1:7890
的方式,以环境变量 HTTPS_PROXY
指定代理服务器.
在windows环境中,修改 run_download_images_coroutine.ps1 中内容,powershell运行即可。
$tags = "hifumi_(blue_archive)" # 符合gelbooru搜索规则的tags | tags for gelbooru
$max_images_number = 200 # 需要下载的图片数 | the number of images you need to download
$download_dir = "images" # 下载图片的路径 | the folder path to download images
$max_workers= 15 # 最大下载协程数 | maximum number of download coroutines
$unit = 100 # 下载单位,下载图片数以此向上取一单位 | unit for download. eg: max_images_number=11, unit=10, then you get 20
$timeout = 10 # 下载超时限制 | download connecting timeout limit
请查看download_images_coroutine.py
- 增加更多booru支持
-
增加对pixiv的支持 - 增加是否覆盖tags文本选项
- 使用
pydantic
代替pandas
作为依赖项 - 重构代码,采用Google规范的Docstring
- 移除被弃用的多线程下载器
- 使用
ruff
进行格式化和lint修复 - 微调部分函数签名
More History
- 增加了显示下载速度的功能
- 基础类
class Downloader
的.download()
方法输出类型已更改,现在会输出一个class DownloadResult
的实例- 因为实现了
__eq__
方法,所以仍然可以用Downloader.download() == 1
等判断下载是否成功 - 具体请看download_images_coroutine.py中的
class DownloadResult
定义
- 因为实现了
新增了pillow库的要求.
- 增加检查下载目录中错误图片的功能1#issue
-
下载时候的使用方法请看run_download_images_coroutine.ps1
-
你也做为单独的工具脚本使用,请看utils/run_check_images.ps1
-
API方式
await Scrape_images(*arg,**kwargs, check_images_mode: Union[None, int]=None, # 新增参数 ) # check_images_mode为是否在下载结束后检查图片是否正确 # 默认为None,不检查 # 0为检查,但只输出信息不做任何操作 # 1为尝试修复图片 # 2为尝试删除图片
-