如何使用Typora+MinIO+Python代码打造舒适协作环境
作者:IT王小二 发布时间:2023-11-12 15:12:10
标签:Typora,MinIO,Python
不知不觉大半年没更新了...前面小二介绍过使用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
即可访问后台。
同时为了存储桶图片所有人可以访问,需要将存储桶设置为公开。
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文件位置
。
这张图片就是上传后的路径结果啦,在此,小二也祝愿大家可以愉快的写作。
来源:https://www.cnblogs.com/itwxe/p/17373790.html


猜你喜欢
- 可匹配单行,也支持换行匹配[\s\S]*?加上括号,效果更好([\s\S]*?)来源:https://blog.csdn.net/ASUKA
- 用法:分析一个脚本的依赖: analysis_dependency.py script1.py递归分析依赖: analysis_depend
- 基本思路斑马线检测通过opencv图像处理来进行灰度值转换、高斯滤波去噪、阈值处理、腐蚀和膨胀后对图像进行轮廓检测,通过判断车辆和行人的位置
- 实例如下:import os if __name__ == "__main__": file_path =
- 一、题目描述题目内容:题目示例:题目解析:1 <= nums.length <= 104-107 <= nums
- #过滤式特征选择#根据方差进行选择,方差越小,代表该属性识别能力很差,可以剔除from sklearn.feature_selection
- 最近,我有机会在一个真实的 Golang 场景中使用泛型,同时寻找与 Stream filter(Predicate<? super
- CREATE DATABASE `ct` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_c
- 原理python没有办法直接和c++共享内存交互,需要间接调用c++打包好的库来实现流程C++共享内存打包成库python调用C++库往共享
- NumPy广播(Broadcast),广播(Broadcast)是 numpy 对不同形状(shape)的数组进行数值计算的方式, 对数组的
- 在数据处理过程中比如从CSV文件中导入数据data_df = pd.read_csv("names.csv")在处理之前
- 1.请实现一个装饰器,把函数的返回值+100然后返回def wapper(func):def innner(*args,**kwargs):
- python安装教程和Pycharm安装详细教程,分享给大家。首先我们来安装python1、首先进入网站下载:点击打开链接(或自己输入网址h
- ASP中的全角和半角转化函数,使用方法,传入要转换的字符给str即可,flag设置要转换的类型。<% Function&n
- SPAN 和 DIV 的区别在于,DIV(division)是一个块级元素,可以包含段落、标题、表格,乃至诸如章节、摘要和备注等。而SPAN
- 一、自定义函数:1. 可以返回表变量2. 限制颇多,包括不能使用output参数;不能用临时表;函数内部的操作不能影响到外部环境;不能通过s
- 正在看的ORACLE教程是:Access2000迁移到Oracle9i要点。 &nb
- 我们先看一下相关数据结构的知识。 在学习线性表的时候,曾有这样一个例题。 已知一个存储整数的顺序表La,试构造顺序表Lb,要求顺序表Lb中只
- Qt是一种基于C++的跨平台图形用户界面应用程序开发框架。如何跨平台?上到服务器上位机,下到嵌入式GUI,上天入地无所不能。Qt最早是由19
- 边缘检测图像边缘是指图像中表达物体的周围像素灰度发生阶跃变化的那些像素集合。图像中两个灰度不同的相邻区域的交界处,必然存在灰度的快速过渡或称