看到大佬的api都有json返回参数 我也给我的随机图加上了 这样就可以被脚本批量下载 感觉挺好玩就让gpt写了一个 测试了确实很好用 目前还在学习中 所以每个把玩的脚本都准备记录到学习笔记中 不要去爬未经允许的站哦 但是本站允许学习期间爬 反正都被cf缓存了 此脚本默认也没有刷cdn的功能 所以放心使用

以下是一个Python脚本,可以一直刷新API以获取不同的图片URL,并下载保存这些图片,同时避免下载到重复的图片。

import requests
import os
import hashlib
import time

# API地址
# 示例: api_url = "https://img.darklotus.cn/random?json"
api_url = "你的API地址"

# 下载保存路径
# 示例: download_path = "random"
download_path = "下载文件夹路径"

# 已下载图片的哈希值集合
downloaded_hashes = set()

# 创建下载文件夹
if not os.path.exists(download_path):
    os.makedirs(download_path)

def get_image_hash(image_content):
    """计算图片的SHA256哈希值"""
    return hashlib.sha256(image_content).hexdigest()

def download_image(image_url, image_name):
    """下载并保存图片"""
    response = requests.get(image_url)
    if response.status_code == 200:
        image_content = response.content
        image_hash = get_image_hash(image_content)
        
        if image_hash not in downloaded_hashes:
            # 保存图片
            with open(os.path.join(download_path, image_name), 'wb') as f:
                f.write(image_content)
            # 记录已下载的图片
            downloaded_hashes.add(image_hash)
            print(f"下载并保存图片: {image_name}")
        else:
            print(f"图片已下载,跳过: {image_name}")
    else:
        print(f"无法下载图片,HTTP状态码: {response.status_code}")

while True:
    try:
        # 请求API
        response = requests.get(api_url)
        if response.status_code == 200:
            data = response.json()
            if data["code"] == 200:
                image_url = data["url"]
                image_name = os.path.basename(image_url)
                
                # 下载图片
                download_image(image_url, image_name)
            else:
                print(f"API返回错误代码: {data['code']}")
        else:
            print(f"API请求失败,HTTP状态码: {response.status_code}")
        
        # 等待一段时间后再刷新
        time.sleep(5)  # 5秒刷新一次,可以根据需要调整

    except Exception as e:
        print(f"发生错误: {str(e)}")
        time.sleep(10)  # 发生错误后等待10秒再尝试

说明:

  1. api_url: 请替换为你的API地址,比如 https://img.darklotus.cn/random?json。(可以拿自己站做测试)
  2. download_path: 替换为你希望下载的图片保存的文件夹路径。
  3. 图片去重逻辑: 脚本会计算每张图片的SHA256哈希值并保存到downloaded_hashes集合中,以此来检查图片是否已经下载过。如果已经下载过,脚本会跳过该图片。
  4. 刷新频率: 脚本默认每5秒刷新一次API(可以根据需要调整time.sleep(5)的值)。

如何运行这个脚本:

  1. 将脚本保存为.py文件,比如download_images.py
  2. 运行脚本:python3 download_images.py

运行后,脚本会不断地从API获取新的图片并下载,同时避免重复下载已经保存的图片。

最后修改:2024 年 08 月 27 日
如果觉得我的文章对你有用,请随意赞赏