1 Star 6 Fork 1

恐咖兵糖 / Obsidian 云存储后端 API

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

Obsidian S3 存储的后端 API python 版本

Go 新版本 https://gitee.com/kkbt/obcsapi-go 文档 Docs : https://kkbt.gitee.io/obcsapi-go/#/

基于 Obsidian S3 存储的后端 API ,保存到 S3 存储的 Obsidian 库。支持列表

  • 微信测试号 微信到Obsidian
  • 支持简悦 SimpRead Webook
  • 支持 fv悬浮球文字图片分享保存
  • 静读天下 MoonReader 高亮标注 仿 ReadWise API
  • 通用 http api

微信到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

  • 支持图片和文字
  • 图片下载到存储本地,而非链接(微信发送的图片,会给咱们的服务器返回图片URL)
  • 对用户的判断,仅限特定用户存储笔记。(根据 OpenID 判断)
  • 检索文字中含有 "todo" ,则生成勾选框。如 - [ ] 13:11 somethingtodo
  • 正常生成 - 13:11 something
  • 内容能在 Obsidian 插件 Memos 中正常显示
  • 支持消息类型: 文字,图片,链接(收藏中的),地图位置,语音消息(直接调用微信转文字存储)。
  • 提供三天查询,一天修改,当日新增后端 api 。

BUG:

  • 不推荐批量传图片,推荐显示已保存后依次上传。
  • 不推荐一秒内上传多个文件,图片命名精确到1S。1S内多图片会覆盖。
  • 不要使用微信自带的表情符号,请使用输入法表情。
  • 如果微信输入框换行或分段,只会在这一条消息最开始有 - 13:11 。也就是说,第二行、第二段不会在 Memos 中显示。

启动程序请运行 app.py

部署

方法 1 阿里云函数计算 FC 部署 (推荐)

  1. 拉取项目,或下载 zip 压缩包,解压。
  2. 打开并填写 config.ini 中配置。可以使用随机生成密码等程序生成 token 之类的。不要出现 %,空格,换行 。而 ^!@$ a-z A-Z 0-9 是可以的。完成后,在 obsidian-caspi 目录下全部选中,压缩为 zip 。也就是说,解压后会出现一堆文件而非一个文件夹。
  3. 打开 阿里云函数计算 FC 控制台,新建服务,新建函数。新建函数使用自定义运行时平滑迁移 Web Server 。 请求处理程序类型为处理 HTTP 请求。运行环境 Python 3.9 。通过 zip 上传代码。(就是第二步制作 zip 代码包)。启动命令: python app.py。监听端口 9000 。高级配置建议:弹性实例 内存规格 128 MB (实际约用 100 MB)。实例并发度 20 或缺省。其余保持缺省值即可。
  4. 在阿里云函数计算 首页/服务列表/服务 xxxx 详情/函数管理/ 函数代码/ 函数详情 页面有一个网页版代码编辑器。终端里运行
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

!!! 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 配置

简悦-服务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,另外开线程上传文件,然而低成本模式下会有一些反馈成功,实际失败的问题,所以暂时使用同步)。

flask 使用及开发说明

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 说明:

  • GET /ob/today 返回一个 JSON 格式 daily,包含1天 POST /ob/today 以 Obsidian Memeos 形式增加一条 Memeos ,eg: \n- [ ] 12:00 some
  • POST /ob/recent 返回一个 JSON 格式 daily,包含3天
  • POST /ob/today/all 覆盖今日 daily md 文件
  • POST /webhook SimpRead 服务 Webhook 使用。可以使用 kiwi浏览器 ,在手机上收藏裁剪网页。
  • POST /ob/fv 安卓手机fv悬浮球,自定义任务 http 请求推送文字或图片。存储到 S3 中,在 Obsidian 中显示。

更多说明和效果图Obsidian 从本地到云端效果图
演示和教程 见 https://www.bilibili.com/video/BV1Ad4y1s7EP/

Go 语言版本

https://gitee.com/kkbt/obcsapi-go

与 python 版本对比

python go
体积 未压缩 100Mb+ 未压缩15Mb
正常响应时间 500ms上下 250ms上下
FC函数计算内存 100Mb 上下 20Mb 上下
修改难度 简单 比python复杂

若有更高性能需求,可自行修改 golang 源码,并编译打包。不过 golang 功能要少一些(没有收藏微信文章功能)。新特性:可以发送邮件发送登录链接,这样配合 token 的自动失效能稍微安全一些,不过我还是不太擅长前端,很简陋。

MIT License Copyright (c) 2022 恐咖兵糖 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

Obsidian Cloud Storage API 。基于 Obsidian S3 存储的后端 API。支持微信测试号发送消息,保存到s3。支持简悦 SimpRead Webook,支持 fv悬浮球文字图片分享保存, 支持静读天下高亮笔记api 展开 收起
Python 等 3 种语言
MIT
取消

发行版 (2)

全部

贡献者

全部

近期动态

加载更多
不能加载更多了
Python
1
https://gitee.com/kkbt/obsidian-csapi.git
git@gitee.com:kkbt/obsidian-csapi.git
kkbt
obsidian-csapi
Obsidian 云存储后端 API
master

搜索帮助