Python脚本实现Typora粘贴图片自动上传博客园

Python脚本实现Typora粘贴图片自动上传博客园

众所周知,Typora支持粘贴图片后各种自动处理的功能,最方便的就是自动上传后转为外链了,但是我找了好久,没有找到理想中的脚本或程序,Typora支持PicGo,但是我又不想为了上传图片专门下载一个程序,PicGo支持的各种平台也都不太合我心意,我在Windows平台下找到过一个C#程序,支持将图片自动上传到博客园,受其启发,重写了一个Python脚本,可以在各种平台使用.

#!/usr/bin/python
# -*- coding: utf-8 -*-
import os
import sys
import xmlrpc.client as xmlrpclib
import magic

def main(argv):
    itercars = iter(argv)
    next(itercars)
    for image in itercars:
        print(upload(image))
def upload(filepath):
    url = "https://rpc.cnblogs.com/metaweblog/{metaweblogurl}"
    blogid = "blogid"
    usr = "usr"
    passwd = "passwd"
    server = xmlrpclib.ServerProxy(url)
    mwb = server.metaWeblog

    buf = read_into_buffer(filepath)
    image = open(filepath,"rb")

    mime_type = magic.from_file(filepath, mime=True)

    imgdata = dict(name=image.name, type=mime_type, bits=buf)
    mediaObject = mwb.newMediaObject(blogid, usr, passwd, imgdata)
    return mediaObject["url"]

def read_into_buffer(filename):
    buf = bytearray(os.path.getsize(filename))
    with open(filename, 'rb') as f:
        f.readinto(buf)
    f.close()
    return buf

if __name__ == "__main__":
    main(sys.argv)

image-20211205121433684

然后在Typora中这样设置,图片粘贴后就能自动转为博客园的外链了.

命令:

python /home/{pyfilepath}/image_upload.py

上述url是博客园metaweblog的url,可以在博客园个人设置中找到,用户名密码blogid等同上.

posted @ 2021-12-05 12:26  巩云龙  阅读(129)  评论(0编辑  收藏  举报