曾梦想仗剑走天涯
从memos的webhook开始

自动摘要

这篇文章介绍了 memos 在 v0.18 版本中加入的 webhook 功能,以及如何利用 webhook 实现对 memos 的更多玩法。作者分享了使用 webhook 自动保存 json 数据、解决跨域问题的方法,并提供了通过 BASH 获取最近 200 条 memos 的脚本以及部署 webhook 镜像的步骤。文章还介绍了如何在宝塔面板中创建网站并配置反向代理,实现 memos 更新时自动更新 memos.json 文件的功能。文章最后给出了一个演示链接。

说在前面

memos的webhook功能从v0.18 版本开始加入.
webhook也为memos带来了不一样的玩法.

前段时间从Typecho主题icefox上直接CTRL+C了CSS布局,做了一个基于memos的单页面,类微信朋友圈.

然后使用webhook自动保存json到本地目录,快速加载. 解决跨域问题

使用bash获取memos.json

创建一个memos.sh文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#!/bin/bash

# API地址
API_URL="https://memos.ee/api/v1/memos"

# 过滤参数
FILTER="visibilities == ['PUBLIC'] && creator == 'users/1'"
PAGE_SIZE="200"

# Authorization 头部
AUTH_HEADER="Bearer token"

# 目标文件
OUTPUT_FILE="/config/memos.json"

# 使用 curl 发送 GET 请求并将结果保存到文件
curl -G "${API_URL}" \
--data-urlencode "filter=${FILTER}" \
--data-urlencode "pageSize=${PAGE_SIZE}" \
-H "Authorization: ${AUTH_HEADER}" \
-H "Accept: application/json" \
-o "${OUTPUT_FILE}"

# 检查是否成功
if [ $? -eq 0 ]; then
echo "JSON 数据已成功保存到 ${OUTPUT_FILE}"
else
echo "获取 JSON 数据失败"
fi

这个脚本用于获取最近200条的memos

自行更改以上的API_URL token 以及过滤参数

使用webhook功能

部署webhook镜像

此处使用一个webhook的DOCKER镜像

此Docker镜像是我根据官方dockerfile增加了中文支持编译而成.
推荐使用docker-compose部署 编辑docker-compose.yaml内容为

1
2
3
4
5
6
7
8
9
10
11
12
13
services:
webhook:
image: jkjoy/webhook
container_name: webhook
command: -verbose -hooks=hooks.yml -hotreload
environment:
- TZ=Asia/Chongqing #中国时区
- LANG=C.UTF-8 #中文支持
volumes:
- ./:/config:rw
ports:
- 9000:9000
restart: always

创建hooks.yml文件并编辑内容为

1
2
3
- id: memos
execute-command: "/config/memos.sh"
command-working-directory: "/"

然后运行

1
docker compose up -d

即可

使用Webhook

hooks.yaml为webhook的配置文件

其中的execute-command为容器中的可执行脚本目录
webhook的访问地址格式为 服务器 ip:端口/hooks/id
访问http://127.0.0.1:9000/hooks/memos
即可触发执行bash /config/memos.sh

在memos的webhook设置中填入http://127.0.0.1:9000/hooks/memos的webhook地址,
即可

以宝塔为例

创建一个名为 api.domain.com的网站
在网站的根目录下创建 docker-compose.yaml hooks.yaml memos.sh 的文件
运行

1
docker compose up -d

创建一个反向代理
使 127.0.0.1:9000 代理到 api.domain.com 的 /webhook/ 目录
访问api.domain.com/webhook/hooks/memos
此时会在网站根目录下生成memos.json
访问api.domain.com/memos.json
此时在memos的webhook地址中填入api.domain.com/webhook/hooks/memos
实现在memos更新时自动更新memos.json文件

演示

https://memos.jkjoy.cn

memos webhook
EasyPanel:一款使用Docker部署的VPS面板

评论

© 2020 浪子
Powered by hexo | Theme is blank