mirror of https://github.com/jkjoy/sunpeiwen.git
Compare commits
No commits in common. "a66f2180e75ecbca44296549663ad53f269e1caa" and "1b345192112dafd802463c15439346f357a54f2e" have entirely different histories.
a66f2180e7
...
1b34519211
|
@ -1,125 +0,0 @@
|
||||||
---
|
|
||||||
title: 从memos的webhook开始
|
|
||||||
tags:
|
|
||||||
- memos
|
|
||||||
- webhook
|
|
||||||
categories:
|
|
||||||
- 分享
|
|
||||||
abbrlink: 8bf3d085
|
|
||||||
excerpt: >-
|
|
||||||
这篇文章介绍了 memos 在 v0.18 版本中加入的 webhook 功能,以及如何利用 webhook 实现对 memos 的更多玩法。作者分享了使用
|
|
||||||
webhook 自动保存 json 数据、解决跨域问题的方法,并提供了通过 BASH 获取最近 200 条 memos 的脚本以及部署 webhook
|
|
||||||
镜像的步骤。文章还介绍了如何在宝塔面板中创建网站并配置反向代理,实现 memos 更新时自动更新 memos.json
|
|
||||||
文件的功能。文章最后给出了一个演示链接。
|
|
||||||
date: 2024-06-18 11:10:10
|
|
||||||
cover:
|
|
||||||
---
|
|
||||||
## 说在前面
|
|
||||||
memos的`webhook`功能从v0.18 版本开始加入.
|
|
||||||
`webhook`也为`memos`带来了不一样的玩法.
|
|
||||||
|
|
||||||
前段时间从`Typecho`主题`icefox`上直接`CTRL`+`C`了CSS布局,做了一个基于`memos`的单页面,类微信朋友圈.
|
|
||||||
|
|
||||||
然后使用`webhook`自动保存json到本地目录,快速加载. 解决跨域问题
|
|
||||||
|
|
||||||
## 使用bash获取memos.json
|
|
||||||
|
|
||||||
创建一个`memos.sh`文件
|
|
||||||
```bash
|
|
||||||
#!/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`内容为
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
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`文件并编辑内容为
|
|
||||||
```yaml
|
|
||||||
- id: memos
|
|
||||||
execute-command: "/config/memos.sh"
|
|
||||||
command-working-directory: "/"
|
|
||||||
```
|
|
||||||
然后运行
|
|
||||||
```
|
|
||||||
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` 的文件
|
|
||||||
运行
|
|
||||||
```
|
|
||||||
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
|
|
Loading…
Reference in New Issue