首先感谢下GPT…0基础做博客真的太难了,昨天在新购置的阿里云虚拟机上用宝塔配置了memos,反向代理让公网可以访问,我想把首页置顶的说说模块拉取memos上自己最新的一条说说,于是开始研究。

错的代码试了几十次,终于在ai的帮助下实现了,实际上memos的api端口可以很方便的获取数据(例如这里,获取指定ID最新的一条说说),获取到的数据是JSON格式,我需要做的只是从JSON格式的信息中用php的正则表达式来筛选出自己需要的,但是好像这样不行。

好在最终在它的帮助下,成功了~记录下memos api的抓取代码:

<?php
// API接口URL
$url = 'https://b.ihaihe.cn/api/v1/memo?creatorId=1&rowStatus=NORMAL&limit=1';

// 获取API返回的JSON数据
$response = file_get_contents($url);

// 解析JSON数据
$data = json_decode($response, true); // 第二个参数true表示返回关联数组而不是对象

// 检查解析是否成功
if ($data === null && json_last_error() !== JSON_ERROR_NONE) {
die("JSON 解析错误: " . json_last_error_msg());
}

// 提取 content 字段的值
if (isset($data[0]['content'])) {
$content = $data[0]['content'];
echo "#" . $content;
} else {
echo "未找到 content 字段或者数据格式不符合预期。";
}
?>

2024年7月20日,添加修改,如果JSON获取到的数据超过100字,则随机显示设置好的文字:

<?php
// API接口URL
$url = 'https://b.ihaihe.cn/api/v1/memo?creatorId=1&rowStatus=NORMAL&limit=1';

// 获取API返回的JSON数据
$response = file_get_contents($url);

// 解析JSON数据
$data = json_decode($response, true); // 第二个参数true表示返回关联数组而不是对象

// 检查解析是否成功
if ($data === null && json_last_error() !== JSON_ERROR_NONE) {
die("JSON 解析错误: " . json_last_error_msg());
}

// 提取 content 字段的值
if (isset($data[0]['content'])) {
$content = $data[0]['content'];
// 预设的提示语数组
$defaultMessages = [
"#阳光温热,岁月静好,你还不来,我怎敢老。",
"#那些将要去的地方,都是素未谋面的故乡。",
"#我做人的第一原则:关你屁事 关我屁事。",
"#时光像肉包子打狗一样,一去不复反。",
"#我是一棵树,一棵让你放弃整片森林的树。",
"#听了这么多大道理,还是没过好这一生。",
"#最好的心理医生,是有钱的自己。"
]; 
// 检查 content 字段长度
if (mb_strlen($content, 'UTF-8') > 100) {
$randomMessage = $defaultMessages[array_rand($defaultMessages)];
echo $randomMessage;
} else {
echo "#" . $content;
}
} else {
echo "配置错误,请检查JSON数据。";
}
?>

顺便说一句,折腾万岁!~