同步操作将从 HIK/typora-upload 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
v2.1.2更新
1、图片压缩不会压缩gif动图
2、增加http图片外链的上传(外链图片储存在jar所在目录temp文件夹,会隔日清除)
3、增加对302跳转外链图片的支持
这是一款简易Typora编辑器的图床上传命令行工具,在Typora偏好设置->图像->上传服务->Custom Command中即可设置。当然你也可以使用Typora自带的picgo,这款工具与picgo各有优势,picgo稳定有足够社区支持,这款工具只有我一个人维护,代码可能也写得不尽如人意,希望大佬指教。
当然这不是一个单纯的图床程序,说成是类似Postman之类的请求工具更加贴切。current指定图床,bed里设置图床的相关请求信息,包括请求方式、请求头、请求参数、文件域等,以集合[]形式储存多个请求信息,请求根据顺序依次执行。例imgchr图床配置中有两个请求,第一个请求获取上传所需的auth_token并别名为token,第二个请求中使用该token上传图片。这是个一连贯的流程,你甚至可以配置N个请求。
与picogo比优势:
基于java的简易图床上传命令行工具。建议jdk8+,如果你是linux并安装多个jdk,建议写jdk中java的全路径。建议使用oracle-jdk,第三方工具包对于某些jdk版本可能会出现不兼容情况。
打成jar包后即用,jar包放置位置随意,执行命令时用路径即可
可直接下载已发布程序:https://gitee.com/cwayteam/TyporaUpload/releases/
默认配置文件中包含路过图床、牛图、蓝空图床、SM.MS、gitee,其他图床可自行拓展配置文件。
注意:安装路径中不要含空格,例如不能放“Program Files”文件夹。如果你升级新版本,建议将原配置文件移动到其它文件夹,并使用新生成的配置文件,然后将旧配置文件配置复制到新配置文件
新版本首次使用自动在jar包所在目录释放配置文件config.json与数据库文件config.db。
~~下载config.txt放置于jar包同目录,~~想用哪个图床current里就填哪个,自带多个图床只需补全所需信息即可。配置可随时拓展添加新图床,理论上知道请求方式、参数即可拓展。
在Typora中依次选 文件->偏好设置->图像 中,插入照片时的下拉框选上传图片,并选对本地位置的图片应用此规则,其它的可以取消勾选,Linux电脑可能要勾选优先使用相对路径。
上传服务设定中选 Custom Command,命令里输入:
java -jar jar包所在路径/upload.jar
插入图片可直接自动上传,粘贴图片需选择上传
例如谷歌浏览器打开控制台,选定某一请求,复制headers或其它键值对参数到txt文件
例如复制到a.txt中,输入命令即可输出可直接复制到配置文件的格式
java -jar upload.jar ./a.txt
新版本会在jar包路径生成configTask.json文件,在此放置网络任务请求,语法与图床请求配置想同,该配置文件里请求每天只执行一次,执行后会更新lastExec字段。
语法例如(以下只是举例):
{
"_ua": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Mobile Safari/537.36",
"task":{"任务1":[
{
"url": "https://www.xx.com/xx",
"type": "post",
"header": {
"Accept": "*/*",
"User-Agent": "$ua"
},
"param": {
"name": "zhangsan",
"password": "123456"
},
"successFlag": "success"
}
]},
"write":{
}
}
若配置多个任务不想让某些执行可用"use":false让其无效。
程序默认带的是hu60论坛发帖配置示例,其它可自行配置。
使用命令
java -jar upload.jar abc.md
只要文件是md后缀即可,默认程序会将md转成html发布,若配置中任务名以_md结尾则以原文发布。调用时标题为$title
,内容为$content
。
{
"current": "niupic",
"date": "yyyy/MM/dd",
"zip": 0.5,
"db": "",
"_ua": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Mobile Safari/537.36",
"bed": {
"niupic": [
{
"url": "http://www.niupic.com/index/upload/process",
"type": "post",
"fileFiled": "image_field",
"successFlag": "success",
"getByPath": "data",
"out": true,
"before": "https://"
}
]
}
}
配置文件为json数据结构,根节点包含current、bed等关键词。bed中包含各图床信息,图床中为json数组形式的请求信息,可以配置多个请求,数组中请求从上至下依次执行。
current:填图床别名,用于选定bed中的图床。
bed:图床配置,可以配置无限个。
db:填写值任意,只要存在该配置即开启数据库模式,上传图片后保存图片md5、url进本地数据库,同一张图片二次上传直接从数据库取地址,避免二次上传带来的资源浪费。
date:填写时间格式,例如yyyy/MM/dd
,无该项配置默认为yyyy-MM-dd
。可在请求中通过$date
调用,例如在gitee中指定图片储存位置在日期文件夹内用到。
zip:开启图片压缩,填写范围大于0小于等于1,数字越小图片质量越差体积也越小,不会缩小图片尺寸,如需传原图请删除zip这行配置。默认的json配置里图片压缩为开,如不需要请删除该行!
_abc
:下划线加任意字符,类似于变量赋值,例_ua
储存User-Agent值,方便后面通过$ua
调用。
use:当"use":false时代表该条请求无效
在程序中定义了一个类似变量的东西,可以通过下划线直接赋值(例:"_name":"zhangsan"
),后续通过美元符号调用(例:$name
),在url、header、param、out
的值中均可调用,若在句子中调用需在外面套曾小括号,例如:"out":"我叫($name)"
。
有几个变量值无需定义,需要时直接调用即可:
$ran:五位数随机数
$timestamp:当前时间戳(13位)
$date:格式化后的日期,虽无需赋值,但可用date设置日期格式(见开头介绍)
$cookie:在某个图床中,若第一个请求header中设置了cookie,则第二个请求可直接通过`$cookie`调用
$ua:同cookie,首个设置后可直接调用,但鉴于大家UA都是固定某个,建议用_ua
在根节点赋值。
alis:在请求中填写,将请求的响应值的解析结果赋值给某变量,例:"alis":"token"
将该请求解析结果赋值给token,后面请求可通过$token
调用该值。
至于有人可能会问别名不是alias么?写习惯了将错就错吧,我这里alis就是别名。
在一个图床中可包含多个请求,请求参数可通过浏览器控制台的network获取。
以下介绍的关键词全都在请求中使用(即图床[]内的请求中使用)。
gt:文件大小大于等于指定值执行该请求,单位Byte
lt:文件大小小于指定值执行该请求
一般不用加这两个,除非是特殊场景,例如gitee。
url:请求地址 type:请求方式 post/get(不填默认为get) header:请求头 param:请求参数 fileFiled:文件域(表单中上传文件的name,例如下图中的image_field)
fileBase64:base64文件域,将文件base64编码后放在请求参数里。
successFlag:成功标识,对请求后返回的数据判断有无该字符串,有则成功,成功后才能使用getByPath或getByReg进行解析请求的返回值。
successFlag1:若successFlag中字符串匹配不到的话,可依次匹配successFlag1至最高successFlag10里的内容,关系为或。
getByPath:通过路径解析json数据。若请求返回是json数据,则使用该配置,值填json的路径,例如data.url,也可以填多条路径,以英文逗号隔开,例如data.url,data.imgage,前面的路径匹配不到依次向后匹配。
getByReg:通过正则解析返回数据。若返回是文本或html数据则使用正则截取,正则写在小括号里,转义符号为\。获取的内容就是小括号里正则的内容。
all:若对返回数据不处理全部使用,例 "all":true
(值任意,是不是true无所谓)。
alis:对返回数据进行别名,或者说是赋值,下个请求中可以用“$别名”调用。
before:在解析结果前加文字,例如配置文件中niupic的请求返回的网址不带https://,可以使用这个加上。
after:在解析结果后加文字。
out:值任意,表示该请求输出解析结果。若值中包含变量则直接显示变量值。
以下展示几个图床的示例,简述其思路。
"niupic": [
{
"note": "牛图图床http://www.niupic.com",
"url": "http://www.niupic.com/index/upload/process",
"type": "post",
"fileFiled": "image_field",
"successFlag": "success",
"getByPath": "data",
"out": true,
"before": "https://"
}
],
访问官网发现它无需登陆,这就方便多了,无需token、cookie,一般只需要传必要参数即可,我截了上传时的图,如图:
上图我们可以看到其参数只有文件域image_field,那只需设置文件域即可,并且它直接返回网址,只是网址不带http协议,这里我们用before手动加上https://
即可。
"lsky": [
{
"note": "蓝空图床https://www.lsky.pro,以下url为官方演示,图片会清理,请使用以蓝空图床程序搭建的网站域名,邮箱,密码替换",
"url": "https://pic.iqy.ink/api/token",
"type": "post",
"param": {
"email": "aaaaa@qq.com",
"password": "aaaaa"
},
"successFlag": "success",
"getByPath": "data.token",
"alis": "tokens"
},
{
"url": "https://pic.iqy.ink/api/upload",
"type": "post",
"header": {
"token": "$tokens"
},
"fileFiled": "image",
"successFlag": "success",
"getByPath": "data.url",
"out": true
}
],
Lsky Pro(兰空图床)并不是一个图床网站,而是一款图床程序,官网只提供演示并不提供图床服务,很多人用该程序搭建了图床。以上配置适合所有用蓝空程序搭建的图床。
这里我根据官网演示站点的接口说明写的配置:
https://pic.iqy.ink/index/api.html
第一个请求的参数带用户邮箱、密码,对请求返回值用data.token解析获取token值,并别名赋值给了tokens;第二个上传接口就直接用了该$tokens进行上传,上传成功后通过data.url获取链接。
建议接口先用Postman进行可行性测试。
Gitee配置较多,就不贴具体配置了。由于Gitee普通链接对超过1M的图片只能在登陆后显示,但md文件分享给别人总不能让别人登陆自己的帐号吧?
Gitee Pages倒是可以解决这个问题,仓库开启Gitee Pages,你上传的图片可通过Pages的链接查看,并且无1M限制。
因此在这里用lt
跟gt
对上传图片大小做了判断,超过1M返回Pages的地址,并对Pages进行重新部署。
这里还是推荐大家使用zip
参数压缩图片(如果只是做做笔记对图片质量无要求的话),一般稍大的图片都能压缩到1M以下,可自己控制压缩率,压缩越小图片质量越差,可自行测试选择合适的压缩率。
由于gitee需要的共用文字较多,因此我把它们抽出来写以下划线开始的变量中,以下介绍各变量填什么:
_giteeName:用户名,登陆gitee点自己头像->个人主页,在头像下@开头的就是你的用户名,此时在网址栏也能看到。
_giteeRepo:仓库名。
_giteeToken:在头像->设置->安全设置->私人令牌里生成令牌。
_giteeBranch:要部署的分支,一般都是master。
_giteeMsg:提交时信息,自定义。
_giteeFolder:图片文件夹,你在仓库新建的什么文件夹来存图片。若仓库页面没找到新建文件夹菜单,可使用WebIDE,点加号+
新建目录。
网址如下,请替换需要替换的部分:
https://gitee.com/-/ide/project/用户名/仓库名/edit/master/-/
_giteeCsrf:浏览器登录gitee,查看网页源码,搜索csrf-token,复制content内容即可。
_giteeCookie:登录gitee,浏览器控制台输入document.cookie即可获取cookie。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。