51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

Typora+Alist图床功能实现

由于平时我写文章都是以markdown形式上传的,编写工具使用的是typora,图片默认保存在本地,想在云端也保存一份(顺便当个图床)
但是typora支持的gopic工具不是很好用(点名github) :鹿乃_生气:
于是就写了一个自动上传的CLI工具
接口默认对接到本站的Alist共享列表,可以实现类似图床的功能

Github仓库:https://github.com/kanoqwq/Alist-uploader
(写的比较随意,不过希望有issue提交())

使用说明

环境:nodejs

安装:npm i

USAGE: node kano_img_bed -upload [path]

typora设置

  • 上传服务选择 "Custom Command"
  • 命令输入:node ${path}/kano_img_bed.js -upload path表示文件路径

效果

image-20221012220755960

代码:

const fs = require('fs')
const axios = require('axios')
const path = require('path')
const FormData = require('form-data')
//域名
const domain = 'https://pan.kanokano.cn'
//上传目录
const uploadPath = '/阿里云の盘/Typora图床'

//图片上传接口
async function upload(path) {
const form = new FormData();
form.append('path', uploadPath);
form.append('files', fs.createReadStream(path));
let result = await axios.post(
`${domain}/api/public/upload`,
form,
{ headers: form.getHeaders() }
).then(
(res) =\> {
return true
},
(err) =\> {
return false
}
)
return result
}
function getLink(baseName) {
axios.post(
`${domain}/api/public/path`,
{ "path": uploadPath }
).then(
(res) =\> {
//请求成功
let files = res.data.data.files
files.forEach(fileName =\> {
baseName.forEach(base =\> {
if (base == fileName.name) {
console.log(fileName.name);
}
})
})
},
(err) =\> {
console.error(err.message);
}
)
}
async function main() {
//获取参数
let arguments = process.argv.splice(2)
if (arguments\[0\] == '-upload') {
let status = false
//遍历上传图片
for (let i = 1; i \< arguments.length; i++) {
//获取文件路径和文件名
let fullpath = path.join(arguments\[i\])
let baseName = (path.basename(arguments\[i\]))
//上传图片
status = await upload(fullpath)
if (status) {
console.log('https://pan.kanokano.cn/d' + uploadPath + '/' + baseName);
} else {
console.log(`${baseName}上传失败`)
break
}
}


    } else {
        console.log('USAGE: -upload [path]');
    }



`}
main();`

赞(0)
未经允许不得转载:工具盒子 » Typora+Alist图床功能实现