github API+IOS快捷指令 实现手机上传

这篇文章是在iphone上编写+上传

网上好像目前为止应该还没有这类功能吧,也可能我没看到,不过也没啥,原理很简单,实现起来也不难。主要是利用了githubAPI的put请求 github API
iOS的快捷指令也很好编写。

快捷指令

mdGo

image-20221103174624879
链接: https://www.icloud.com/shortcuts/a42f4481a7b94b508d7b210c8d00225d

记得打开在共享表单中显示,更新同名文件,出现失败提示不要慌,点确定

iPicGo

外加一个上传图像的(根据网上一个脚本改的),两个是相同的原理:

image-20221103192734984
链接: https://www.icloud.com/shortcuts/f63ca2774ce6460da4173e2deb179129
image-20221103192734984
快捷指令截图

Github API

1
2
3
4
5
6
7
8
9
10
11
12
https://api.github.com/repos/<userName>/<repoName>/contents/<path>/<fileName>
PUT 请求
header 里
{
"Accept" : "application/vnd.github.v3+json",
"Authorization" : "token <github token>"
}
请求体里:json必传的两个参数
{
"message" : 提交日志信息,
"content" : 文件以base64形式不换行
}

更新同名文件

但是上面这个有个问题,如果遇到同名文件,会返回错误信息:

1
{"message":"Invalid request.\n\n\"sha\" wasn't supplied.

这个返回的意思是少了一个 sha 的参数,sha 可以理解为文件的 id(动态变化)

所以我们如果想要覆盖同名文件,需要先获取文件的 sha 值。

  1. Get 请求获取 sha
1
2
3
4
5
6
7
https://api.github.com/repos/<userName>/<repoName>/contents/<path>/<fileName>
GET 请求
header 里
{
"Accept" : "application/vnd.github.v3+json",
"Authorization" : "token <github token>"
}

返回的 response 中,有 sha 值

img
  1. 然后再次用 put 请求,但是要在请求体中加 sha 值
img

然后就可以替换了