【python自动化】搭建个人图床,批量上传图片生成外链


简介

使用七牛云搭建个人图床,并使用python脚本实现自动化批量上传图片,并生成图片的外链。

注册七牛云

首先在七牛云官网注册个人账号,并进行实名认证。
七牛云有10G免费的永久存储空间,就算超出10G也能以较低价格购买存储空间,所以是搭建图床的不错选择。

在这里插入图片描述

新建空间

在对象存储中点击新建空间
在这里插入图片描述
输入存储空间名称,存储区域选择离自己较近的,访问控制选择公开,最后点击确定。
在这里插入图片描述

域名查看

在这里插入图片描述

密钥查看

在这里插入图片描述

python自动化脚本

安装七牛云三方库

pip install qiniu

登陆七牛云

密钥获取方式可参考上文

# 需要填写你的 Access Key 和 Secret Key
access_key = ''
secret_key = ''
# 构建鉴权对象
q = Auth(access_key, secret_key)

遍历找出文件夹中的所有图片

此处文件夹中的子文件夹中的图片也会被遍历出来

def search_pic(localdir):
    for dir_path, _, files_list in os.walk(localdir):
        for file in files_list:
        	# 可以自定义需要上传的图片格式
            if file.split(".")[-1] in ["jpg", "JPG", "png", "PNG"]:
                yield os.path.join(dir_path, file)

批量上传图片

域名地址获取方式可参考上文

# q为登陆七牛云后得到的对象
def upload_pic(q, file_name):
    # 域名地址
    base_url = ""
    # 要上传的空间
    bucket_name = ''
    # 上传后保存的文件名,为了防止文件名相同,此处使用时间给文件进行重命名。
    key = datetime.now().strftime("%Y%m%d%H%M%S%f") + "." + file_name.split(".")[-1]
    # 生成上传 Token,可以指定过期时间等
    token = q.upload_token(bucket_name, key, 3600)
    ret, info = put_file(token, key, file_name, version='v2')
    try:
        assert ret['key'] == key
        assert ret['hash'] == etag(file_name)
        # 成功后打印图片的外链,可以自行修改为写入本地文件
        print(os.path.join(base_url, key))
    except:
        print(file_name + "----error----")

完整代码

import os
from datetime import datetime

from qiniu import Auth, put_file, etag


def search_pic(localdir):
    for dir_path, _, files_list in os.walk(localdir):
        for file in files_list:
            if file.split(".")[-1] in ["jpg", "JPG", "png", "PNG"]:
                yield os.path.join(dir_path, file)


def upload_pic(q, file_name):
    base_url = ""
    bucket_name = ''
    key = datetime.now().strftime("%Y%m%d%H%M%S%f") + "." + file_name.split(".")[-1]
    token = q.upload_token(bucket_name, key, 3600)
    ret, info = put_file(token, key, file_name, version='v2')
    try:
        assert ret['key'] == key
        assert ret['hash'] == etag(file_name)
        print(os.path.join(base_url, key))
    except:
        print(file_name + "----error----")


if __name__ == '__main__':
    access_key = ''
    secret_key = ''
    q = Auth(access_key, secret_key)
    # 需要批量上传图片的文件夹的本地路径
    localdir = '/Users/xxx/Desktop/xxx'
    files = search_pic(localdir)
    for file in files:
        upload_pic(q, file)

运行效果

上传成功后会打印图片的外链,点击即可查看图片。
在这里插入图片描述

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值