刷惯了微博,总是想在微信朋友圈里面用因缺思厅的(贱贱的)表情包评论,亦或者在发完朋友圈之后再在评论里面Po出后续。

想了一下,思路不难,只需要将图片通过API接口上传到图床后再通过短链形式发出去即可。

先用了Workflow试水一波,但是自从Workflow被苹果收购以后不得不吐槽一下下降的厉害的软件质量。Get Contents of URL里面填写多个Body值,不是这个无法显示就是那个无法编辑,再加上流程过长修改十分不便,差不多要放弃这个工具App了。

好在之前低价购买了JSBox,虽然还有些功能不是很完善,例如类似Workflow里面的Overlay Image的功能暂时缺失,但是胜在界面清爽和相对完善的官方文档。

关于图床选择有很多,谷歌百度搜索一大把,短链转换也有很多,相对于Workflow,JSBox另一个优势在于内置很多功能,比如长短链的转换,省去了申请API的时间。

关于图床

在微信里面使用图床,最为关键的要看马爸爸有没有屏蔽,在试过几个主流图床后,使用效果如下。

- 贴图库,勉强能用,如果用Workflow无损上传PNG的话40%会被屏蔽,利用JSBox压缩成jpg基本不会;

- sm.ms,全站被屏蔽;

- 七牛云,会提示跳转,需多余操作,体验效果不佳;

- 微博,新浪已更改API接口,无法使用。

因此在图床上面还是选择贴图库比较妥当,需要注意的是普通用户上传图片7日后会删除,并且频率也会有一定限制。

关于短链转换

虽然JSBox有现成的短链转换函数,但是在Workflow上面还是折腾比较久。因为懒得申请微博API,所以先是在百度找了一个不知名的小站做转换,实际效果是在微信中跳转时要求关注公众号,所以枪毙了。之后在Workflow里面找到一个转短链的流程,里面留了个公用Token,试了试也可以用,而且微信不屏蔽也不需要关注公众号。但是这样用人家的Token始终有些膈应,因此把Workflow流程搬到了JSBox中。

JSBox代码

第一次接触JavaScript,好在有官方文档可以查看。脚本流程原理也很简单,选取相册图片或者直接在相册选取图片以后利用Upload函数上传到图床,并将返回链接转换为短链,并拷贝到粘贴板。

代码如下:添加ID和Token即可食用,配合JSBox里的斗图啦脚本风味更加。

function PickImage() {

  $photo.pick({

    format: "image",

    handler: function(resp) {

      var image = resp.image

      if (image) {

        Upload(image.jpg(1, 0))

      } else {

        $ui.loading(false)

      }

    }

  })

}


function Upload(data) {

  $ui.loading(true)

  $http.upload({

    url: "http://up.imgapi.com/",

    form: {

      from: "file",

      aid: "你的相册ID",

      Token: "你的Token"

    },

    files: [{

      "data": data,

      "name": "file"

    }],

    handler: function(resp) {

      $ui.loading(false)

      var url = resp.data.linkurl

      if (url) {

        Shorturl(url)

      } else {

        $ui.alert("图片上传失败")

      }

    }

  })

}


function Shorturl(url) {

  $http.shorten({

    url: url,

    handler: function(url) {

      if (url) {

        $clipboard.text = "图片评论 " + url

        $ui.toast("复制成功", 2)

        $app.close(2)

      }


    }

  })

}


var inputData = $context.data

var inputLink = $context.link


if (inputData) {

  Upload(inputData)

} else if (inputLink) {

  Shorturl(inputLink)

} else {

  PickImage()

}


8
5