首页 > 编程语言 >Typora+MinIO+Python代码打造舒适协作环境

Typora+MinIO+Python代码打造舒适协作环境

时间:2023-05-05 12:45:06浏览次数:43  
标签:MinIO Python minio Typora bucket ssl client key name

作者:IT王小二

博客:https://itwxe.com

不知不觉大半年没更新了...前面小二介绍过使用Typora+MinIO+Java代码打造舒适写作环境,然后有很多大佬啊,说用Java来实现简直是杀鸡用上牛刀,小二想了想,确实有点...正好小二最近在学习Python,所以咱们就改用Python实现一版。

安装MinIO

安装参考MinIO官网,或者参考小二的博客,搜索关键词 → Linux安装MinIO

安装完成之后使用域名映射好后台服务,小二使用nginx配置域名,配置参考如下。

    server {
        listen 443 ssl;
        server_name minio.itwxe.com;
        include /usr/local/nginx/conf/conf.d/common.conf;
        access_log logs/minioAccess.log;

        location / {
            proxy_pass http://127.0.0.1:9000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

    server {
        listen 443 ssl;
        server_name minio-console.itwxe.com;
        include /usr/local/nginx/conf/conf.d/common.conf;
        access_log logs/minioAccess.log;

        location / {
            proxy_pass http://127.0.0.1:9020;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }

其中common.conf为域名通用配置。

        ssl_certificate /usr/local/nginx/ssl/fullchain.crt;
        ssl_certificate_key /usr/local/nginx/ssl/itwxe.com.key;
        ssl_session_cache shared:SSL:1m;
        ssl_session_timeout 30m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers HIGH:!aNULL:!MD5:!EXPORT56:!EXP;
        ssl_prefer_server_ciphers on;
        proxy_connect_timeout 500;
        proxy_send_timeout 500;
        proxy_read_timeout 500;
        client_max_body_size 100m;

配置好之后访问https://minio-console.itwxe.com即可访问后台。

同时为了存储桶图片所有人可以访问,需要将存储桶设置为公开。

设置存储桶为public

Python代码实现上传

首先,小二作为一个半吊子Python学习者,看了下MinIO官网提供的SDK范例。

安装依赖。

pip install minio

官网示例代码。

from minio import Minio
from minio.error import S3Error


def main():
    # Create a client with the MinIO server playground, its access key
    # and secret key.
    client = Minio(
        "play.min.io",
        access_key="Q3AM3UQ867SPQQA43P2F",
        secret_key="zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG",
    )

    # Make 'asiatrip' bucket if not exist.
    found = client.bucket_exists("asiatrip")
    if not found:
        client.make_bucket("asiatrip")
    else:
        print("Bucket 'asiatrip' already exists")

    # Upload '/home/user/Photos/asiaphotos.zip' as object name
    # 'asiaphotos-2015.zip' to bucket 'asiatrip'.
    client.fput_object(
        "asiatrip", "asiaphotos-2015.zip", "/home/user/Photos/asiaphotos.zip",
    )
    print(
        "'/home/user/Photos/asiaphotos.zip' is successfully uploaded as "
        "object 'asiaphotos-2015.zip' to bucket 'asiatrip'."
    )


if __name__ == "__main__":
    try:
        main()
    except S3Error as exc:
        print("error occurred.", exc)

于是乎,小二开始依葫芦画瓢,代码如下。

import sys
import time
from pathlib import Path
import random
from minio import Minio

minio_domain = 'minio.itwxe.com'
minio_access_key = '你的账号名称'
minio_secret_key = '你的密码'
# 存储桶名称
bucket_name = 'img'
# 存储桶子文件夹名称
bucket_name_dir_name = 'blog'

# 获取minio客户端连接
minio_client = Minio(minio_domain, minio_access_key, minio_secret_key)

if not minio_client.bucket_exists(bucket_name):
    # 如果存储桶不存在,则创建
    minio_client.make_bucket(bucket_name)

# 获取图片参数
images = sys.argv[1:]

for image in images:
    # 文件后缀
    suffix = Path(image).suffix
    # 自定义文件名,使用13位时间戳+2位随机数
    file_name = '{}{}{}'.format(round(time.time() * 1000), random.randint(10, 99), suffix)
    # 文件存储桶下子路径拼接
    remote_full_path_name = '{}/{}'.format(bucket_name_dir_name, file_name)
    # 上传文件
    minio_client.fput_object(bucket_name, remote_full_path_name, image)
    # 打印文件路径
    print("https://minio.itwxe.com/{}/{}".format(bucket_name, remote_full_path_name))

写完之后小二不禁感慨,确实比Java简单亿点点,设置一下typora,python 你的python文件位置

image-20230504223443595

这张图片就是上传后的路径结果啦,在此,小二也祝愿大家可以愉快的写作。

标签:MinIO,Python,minio,Typora,bucket,ssl,client,key,name
From: https://www.cnblogs.com/itwxe/p/17373790.html

相关文章

  • python dingtalk钉钉群告警消息发布
    目录pythondingtalk钉钉群告警消息发布Dingtalk简介钉钉告警消息通知脚本pythondingtalk钉钉群告警消息发布公司用oprator部署的prometheus,理论上时可以直接通过alertmanager的配置。通过钉钉机器人的webhook向群里发送告警信息。但是想要格式化输出格式,并且规范化就成了问题......
  • 解决python配置环境变量后cmd窗口无法打开并弹出Microsoft store界面
    前言在一台新的机器上安装python并正确配置环境变量后,本来打算测试一下是否安装成功,结果在cmd窗口输入python执行后,没有出现版本信息,并会弹出Microsoftstore界面。反复检查了一下,环境变量确实已经正确配置了,但还是无法执行。后经查找资料解决了该问题,在此做下记录。......
  • Python使用虚拟环境
    本文来源:Python使用虚拟环境-钻芒博客(zuanmang.net)安装虚拟环境sudoapt-getupdatesudoapt-getinstallpython3-venv回到用户目录: cd~创建虚拟环境: python3-mvenvvenv激活虚拟环境: sourcevenv/bin/activate在激活的虚拟环境......
  • 批量修改Mac txt文件名 Python脚本
    本文来源:批量修改Mactxt文件名Python脚本-钻芒博客(zuanmang.net)需求:修改文件夹内所有txt文件的文件名称,如 钻芒博客1234_你好1234567.txt要求去掉_后边的名称,使其改成 钻芒博客1234.txt如果文件名称没有_,则不处理Python importosimportsubprocess #替......
  • 利用Python爬虫采集1688商品详情数据 +商品列表数据+商品API接口(支持全网)
    一、如何通过手动方式查看1688商品详情页面的数据1.1688商品详情API接口(item_get-获得1688商品详情接口),1688API接口代码对接可以获取到宝贝ID,宝贝标题,价格,掌柜名称,库存,最小购买数,宝贝链接,宝贝图片,品牌名称,商品详情,详情图片等页面上有的数据均可以获取到,手动方式如下:例......
  • Python NumPy 广播(Broadcast)
    广播(Broadcast)是numpy对不同形状(shape)的数组进行数值计算的方式,对数组的算术运算通常在相应的元素上进行。如果两个数组a和b形状相同,即满足a.shape==b.shape,那么a*b的结果就是a与b数组对应位相乘。这要求维数相同,且各维度的长度相同。importnumpyasnp"......
  • Python爬虫scrapy框架教程
    Scrapy是一个Python爬虫框架,用于提取网站上的数据。以下是使用Scrapy构建爬虫的基本步骤:安装Scrapy:在终端中运行pipinstallscrapy创建一个新项目:在终端中运行scrapystartprojectprojectname创建一个爬虫:在项目文件夹中运行scrapygenspiderspidername http://website.co......
  • Python爬虫scrapy框架教程
    Scrapy是一个Python爬虫框架,用于提取网站上的数据。以下是使用Scrapy构建爬虫的基本步骤:安装Scrapy:在终端中运行pipinstallscrapy创建一个新项目:在终端中运行scrapystartprojectprojectname创建一个爬虫:在项目文件夹中运行scrapygenspiderspidername http://website.com编......
  • Python Numpy 切片和索引(高级索引、布尔索引、花式索引)
    NumPy(NumericalPython)是Python语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy是一个运行速度非常快的数学库,主要用于数组计算,包含:一个强大的N维数组对象ndarray广播功能函数整合C/C++/Fortran代码的工具线性代......
  • Python爬虫常用框架
    大家都知道python是一门多岗位编程语言,学习python之后可以从事的岗位有很多,python爬虫便在其中,不过很多人对python不是很了解,所以也不知道python爬虫是什么,接下来小编为大家介绍一下。Python是一门非常适合开发网络爬虫的编程语言,相比于其他静态编程语言,Python抓取网页文档的接口更......