

Typora+MinIO+Python代码打造舒适协作环境 - IT王小二
source link: https://www.cnblogs.com/itwxe/p/17373790.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

作者:IT王小二
不知不觉大半年没更新了...前面小二介绍过使用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文件位置
。

这张图片就是上传后的路径结果啦,在此,小二也祝愿大家可以愉快的写作。
Recommend
-
53
雷锋网 AI 科技评论按,本文作者是四川大学数据智能实验室在读硕士刘震,这是他在知乎上发表的一篇文章,雷锋网 (公众号:雷锋网) 转载。
-
35
最近博主已经从VIM迁移到了EMACS作为主要生产工具,目的是为了学习Lisp和体验EMACS操作系统之美,哈哈,不要被我弄的技术焦虑,没错,我就是换了个吃饭的盘子。写下这篇博客也是为了纪念我顺利的“从VIM毕业了”。 在阅读本文之前,你需要:
-
13
本文预计阅读时间 7 分钟最近整个人都沉浸在Typora的各种优秀功能之中,当我醉心这款工具之后,发现公司有不少小伙伴都在使用这款工具,每当遇上一个,我就立马上去与之交流一波,分享一下各自的使用技巧或者经验, 后来往往发现,他们大部分都只是...
-
5
汽车 威马W6评测:打造舒适智能车空间,无人驾驶成免费“泊车小弟” 电科技杨赛09-17 06:00 1119 曾经不被人看好的新能源汽车,仅用了几年时间便完成了华丽转...
-
6
打造舒适的阅读空间—云阅读iPad3.0设计总结交互篇 浏览:657次 出处信息
-
5
小手工——动手打造一个更舒适的寝室 发表于 2018-10-24 本文将介绍一些我本科期间为...
-
7
V2EX › Elasticsearch Typora 的代码格式选什么语言可以适配 http client(如 kibana)请求格式高亮?
-
14
使用Typora + 阿里云OSS + PicGo 打造个人图床 为什么要打造图床? 让笔记远走高飞 试问以下场景: 我们要 markdown 笔记放到某博客上,直接进行复制即可。但因你的图片存储在本地,博客上的...
-
21
为了给娃一个舒适的上课环境,客厅升级计划启动 | 爱活网 Evolife.cn
-
5
舒适的办公环境,需要一把GAVEE工学椅_原创_新浪众测
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK