
lalala
Typora之Python+OSS完美图床
Typora每次复制图片都是将图片保存在本地,比较麻烦,特别是管理起来或者替换终端的时候很麻烦,虽然也有其他方法可以配合图床,但是我认为最优解还是Python+OSS,精简而细节。
购买OSS
这边我所购买的是aliyun的OSS资源包,价格为1年40G/¥5元
还是比较便宜的,正常我们存储图片也够了。
购买完以后到OSS管理控制台
新建Bucket
新建的时候公共读
一定要开!
创建完以后有条件的可以配置域名,没条件就直接用OSS默认的域名
设置OSS AK
设置accesskeyid和accesssecret,这个相当于是OSS的帐号和密码,生成完以后一定要保存好,也不能泄露。
首先设置AK需要先创建一个RAM用户,这个到RAM访问控制
即可创建
创建完RAM用户的时候有个权限设置,一定要设置好!!!(这个很重要)
权限一定要低!
权限一定要低!
权限一定要低!
只让他管理OSS即可!!
只选这两个即可!
创建完以后会自动生成AK,将AK保存好就好了。
如果AK没有保存好,可以进入RAM用户重新生成AK。
AK保存好,你的图床就算完成一半了!
配置Python
# -*- coding: utf-8 -*-
import oss2
import time
import argparse
import requests
arg = argparse.ArgumentParser()
# 填写RAM用户的访问密钥(AccessKey ID和AccessKey Secret)。
accessKeyId = ''
accessKeySecret = ''
# 使用代码嵌入的RAM用户的访问密钥配置访问凭证。
auth = oss2.Auth(accessKeyId, accessKeySecret)
def oss_upload(filename):
try:
# 格式化成2016-03-20 11:45:39形式
# time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
time_ = time.strftime("/%Y/%m/%d/%H:%M:%S-", time.localtime())
file_name_list = filename.split('\\') #分割文件名
path = f'{time_}'+file_name_list[len(file_name_list)-1] #上传后的路径,以时间来上传
# -*- coding: utf-8 -*-
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 从环境变量中获取访问凭证。运行本代码示例之前,请确保已设置环境变量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
# 填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# yourBucketName填写存储空间名称。
bucket = oss2.Bucket(auth, 'https://oss-cn-shanghai.aliyuncs.com', 'img')
# 上传文件到OSS。
# yourObjectName由包含文件后缀,不包含Bucket名称组成的Object完整路径,例如abc/efg/123.jpg。
# yourLocalFile由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
# print(time_)
oss_filename = 'Typora'+path
bucket.put_object_from_file(oss_filename, filename)
print('https://img.oss-cn-shanghai.aliyuncs.com'+oss_filename)
#这里直接获取图片上传后的地址,这里的https://img.oss-cn-shanghai.aliyuncs.com就是你桶的地址
except Exception as e :
print(e)
arg.add_argument('-f','--filename',type=str)
args = arg.parse_args()
if 'http' in args.filename: #判断是网络资源还是本地资源
header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36 Edg/118.0.2088.61'}
res = requests.get(url=args.filename,headers=header) #请求网络资源
temp_path = 'C:\\Users\\Administrator\\AppData\\Roaming\\Typora\\typora-user-images\\' #临时目录
time_filename = str(int(time.time())) #时间命名
filename =temp_path + time_filename + '.jpg'
with open( filename ,'wb') as f:
f.write(res.content)
res.close()
oss_upload(filename)
else:
oss_upload(args.filename)
根据上面代码做相应修改
AK配置
这里的accessKeyId、accessKeySecret,换成自己OSS对应的
存储空间配置
这里第二个参数写OSS对应的域名,第二个参数为你的设置Bucket名称
获取图片地址
欲上传图片的临时目录地址设置
临时目录为Typora默认存放图片的目录
可以直接在Typora随便粘贴个图片上去就可以看到该机的临时目录
修改一下就可以了
Typora上传设置
python D:\soft\Typora\oss_upload.py -f
直接写上python调用即可,py文件一定要绝对路径!
-f后面是跟上的是图片地址
最终效果
更新于: 2024年03月22日 19:50
1624
0