Go 新版本 https://gitee.com/kkbt/obcsapi-go 文档 Docs : https://kkbt.gitee.io/obcsapi-go/#/
基于 Obsidian S3 存储的后端 API ,保存到 S3 存储的 Obsidian 库。支持列表
微信测试号发送消息,保存到COS。被Obsidian插件Remotely Save同步到笔记中。使用 Flask + Vue 。前端在 https://note.ftls.xyz/#/ZK/202209050658 中,就是一个 md 文件。需要 vue , markd , axios 三个 js 。 源码 F12 自取。使用 localStorge 存储 api 地址和 token 。另外前端基于 https://gitee.com/kkbt/obweb 。
- [ ] 13:11 somethingtodo
- 13:11 something
BUG:
- 13:11
。也就是说,第二行、第二段不会在 Memos 中显示。启动程序请运行 app.py
python app.py
。监听端口 9000 。高级配置建议:弹性实例 内存规格 128 MB (实际约用 100 MB)。实例并发度 20 或缺省。其余保持缺省值即可。pip install --upgrade pip
pip install -t . -r requirements.txt
请确保成功运行。
5. 完成后在 函数详情-函数代码 处检查并部署。在 部署按钮旁边 或者 函数详情中-触发器管理 ,找到公网访问地址 了,形似 https://someone.cn-hangzhou.fcapp.run 。
6. 在微信测试号网站中,接口配置信息 URL 为 公网访问地址+ /api/wechat 。如 https://someone.cn-hangzhou.fcapp.run/api/wechat 。token 为 config 中 WeChat 的 Token。如果配置正确,接口配置信息能成功提交。
7. 测试服务是否好使,使用测试号发送文字,图片,链接(收藏中的),地图位置,语音消息。打开 Obsidian 刷新 remotely save 查看效果。如果不好使,请在 首页/服务列表/服务 xxxxx 详情/函数管理/函数详情/调用日志/函数日志。打开 自动刷新 并实时查看异常和报错,以便修改代码,配置,反馈等等。
8. 正常后。微信测试号发送消息返回的链接,已保存的网址,进入网站。按下齿轮,勾选 Debug。拉到页面下面,两个输入框,第一个是后端api。第二个是 token。api填写类似 api.ftls.xyz/ob ,不需要协议头和尾部斜杠。另外token将加入到和后端 api 的 headers 中 Token 字段。填写完成后,点击 updateConfig 按钮并刷新页面。按函数计算fc格式,第一个框如 https://someone.cn-hangzhou.fcapp.run/ob ,第二个框 7$w8nA31OAoW@31^3!@$
(是 config.ini 中的 right_token)
9. 其余,如静读天下,简悦等请查看 app.py api 说明确定 url 。根据 config.ini 中的 各个 token ,填写 token。
注意: 函数计算 FC 部署,使用按量实例模式。会有冷启动时间,并且大约十分钟会销毁实例,在实例列表可以看到运行的实例。这就导致有时,响应时间会大于 5s 。会触发微信的重传机制,所以新建函数时,实例并发一定不能为1。这样重传保证传到一个实例内。另外,大约十分钟会销毁实例时。 messagelist 会清空。相当于重新启动了服务。
为减少冷启动时间,可在 首页/服务列表/服务 xxxxx 详情/函数管理/创建规则 配置规则(会增加费用)。也可设置定时访问。详细见 阿里云 函数计算冷启动优化最佳实践
安装依赖,服务器直接运行,(建议使用宝塔 python 项目管理器),然后 Nginx 反向代理到自己的域名。注意由于阿里云函数计算 fc 计算机时间为 +0。程序已经 特意 +8 使时间正常。所以若方法二部署,一般需要修改 obcs.py 中 def timeFmt 函数 中的 8 为 0。
!!! docker run 之前确保 config.ini 存在,否则会生成一个 config.ini 的文件夹。运行会出错。 !!!
打包示例
git clone https://gitee.com/kkbt/obsidian-csapi
cd obsidian-csapi/
docker build -t obcsapi:v3.1 .
docker run -d -v /home/obcsapi/config.ini:/app/config.ini --name obcsapi -p 3023:9000 obcsapi:v3.1
使用示例 镜像 https://hub.docker.com/r/kkbt/obcsapi/tags
docker pull kkbt/obcsapi:v3.1
docker run -d -v /home/obcsapi/config.ini:/app/config.ini --name obcsapi -p 3023:9000 obcsapi:v3.1
简悦-服务Webhook 填写样例
{"name": "WH2COS","url": "http://127.0.0.1:9000/webhook","type": "POST","headers": {"Content-Type": "application/json","Token": "your_simp_read_token"},"body": {"url": "{{url}}","title": "{{title}}","desc": "{{desc}}","content": "{{content}}","tags": "{{tags}}","note": "{{note}}"}}
说明: 不推荐批量传图片,程序对图片处理非常粗糙。。例如1M带宽服务器,连续传五个图片时。造成费时间会超过五秒,触发微信重传机制。这个机制带来的问题有很多。比如会多上传几份重复的文件,并且在微信测试号显示服务故障。(其实解决方案有很多,如使用任务队列或者是异步的方式。先返回success,另外开线程上传文件,然而低成本模式下会有一些反馈成功,实际失败的问题,所以暂时使用同步)。
app.py -> flask 运行文件
obcs.py -> 调用 boto3 S3 api 的库文件,可用于 腾讯云 COS,阿里云 OSS ,aws s3 等 ,使用 s3 兼容接口。
robot.py -> werobot 微信公众号机器人
obcs_cos.py -> 已经弃用的 cos s3 api ,可用于 腾讯云 COS 代码包会小一些
app.py api 说明:
更多说明和效果图Obsidian 从本地到云端和效果图
演示和教程 见 https://www.bilibili.com/video/BV1Ad4y1s7EP/
见 https://gitee.com/kkbt/obcsapi-go
与 python 版本对比
python | go | |
---|---|---|
体积 | 未压缩 100Mb+ | 未压缩15Mb |
正常响应时间 | 500ms上下 | 250ms上下 |
FC函数计算内存 | 100Mb 上下 | 20Mb 上下 |
修改难度 | 简单 | 比python复杂 |
若有更高性能需求,可自行修改 golang 源码,并编译打包。不过 golang 功能要少一些(没有收藏微信文章功能)。新特性:可以发送邮件发送登录链接,这样配合 token 的自动失效能稍微安全一些,不过我还是不太擅长前端,很简陋。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。