阅读视图

发现新文章,点击刷新页面。

利用飞书每天定时推送网站当天以及本月访问量

前言

飞书真是个好东西,可以利用它给我们推送各种各样的消息。

今天教大家如何推送网站当天以及本月的访问量。

教程

1.首先网站统计需要用umami搭建,不懂的自己网站搜索umami,有教程

2.网站目录下新建一个php文件,并将如下代码添加到其中

<?php
// 设置飞书 Webhook URL
$feishuWebhookUrl = '飞书地址'; // 替换为你的飞书 Webhook URL

// 获取访问数据的函数
function getVisitData($umiToken, $umiId) {
    $umiTime = time() * 1000; // 当前时间(毫秒)
    $todayStart = strtotime('today') * 1000; // 今日开始时间(毫秒)
    $monthStart = strtotime('first day of this month') * 1000; // 本月开始时间(毫秒)

    // 获取今日访问量和访问人数
    $todayUrl = "https://你的域名/api/websites/{$umiId}/stats?startAt={$todayStart}&endAt={$umiTime}";
    $todayData = file_get_contents($todayUrl, false, stream_context_create([
        'http' => [
            'header' => "Authorization: Bearer {$umiToken}rn" .
                        "Content-Type: application/jsonrn"
        ]
    ]));
    $todayData = json_decode($todayData, true);

    // 获取本月访问量
    $monthUrl = "https://你的域名/api/websites/{$umiId}/stats?startAt={$monthStart}&endAt={$umiTime}";
    $monthData = file_get_contents($monthUrl, false, stream_context_create([
        'http' => [
            'header' => "Authorization: Bearer {$umiToken}rn" .
                        "Content-Type: application/jsonrn"
        ]
    ]));
    $monthData = json_decode($monthData, true);

    // 返回数据
    return [
        'todayUv' => $todayData['visitors']['value'] ?? 0,
        'todayPv' => $todayData['pageviews']['value'] ?? 0,
        'monthPv' => $monthData['pageviews']['value'] ?? 0
    ];
}

// 设置 UMI Token 和 ID
$umiToken = "你的token"; // 获取到的 token
$umiId = "你的websiteid"; // 获取到的 websiteId

// 获取访问数据
$visitData = getVisitData($umiToken, $umiId);

// 获取当前时间
$currentDateTime = date('Y年m月d日 H:i:s');

// 构建消息内容
$messageContent = sprintf(
    "现在是 %s,今天的访问人数为 %d,今天的访问量为 %d,本月的访问量为 %d。",
    $currentDateTime,
    $visitData['todayUv'],
    $visitData['todayPv'],
    $visitData['monthPv']
);

// 构建请求参数
$requestData = [
    "msg_type" => "text",
    "content" => [
        "text" => $messageContent
    ]
];

// 将请求参数转换为 JSON 格式
$jsonData = json_encode($requestData);

// 初始化 cURL
$ch = curl_init($feishuWebhookUrl);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Content-Type: application/json',
    'Content-Length: ' . strlen($jsonData)
]);

// 执行请求
$response = curl_exec($ch);
curl_close($ch);

// 输出响应
echo $response;
?>

3.访问飞书官网

4.新建一个机器人,添加流程

5.选择触发器为webhook触发

6.参数填写:{"msg_type":"text","content":{"text":"request example"}}

7.选择操作为发送飞书消息

8.消息内容点击加号,然后选择webhook触发里的content.text

9.宝塔面板计划执行添加定时访问url。

截图

图片[1]-新锐博客

利用飞书和php代码推送最新地震

前言

最近安徽合肥几十次小地震,搞得人心惶惶,在地震带的朋友可能都无法第一时间获得消息,于是写了个php来推送消息

教程

此次教程分为两个接口如下

因无法测试,所以不知道是不是实时的,所以不要依赖于此,使用手机自带的地震预警

中国地震网:https://www.ceic.ac.cn/ajax/speedsearch?num=1

不知名地震API:https://api.wolfx.jp/cenc_eqlist.json

在网站目录下新建一个php文件,并且添加如下代码

其中https://www.feishu.cn/flow/api/trigger-webhook/xxxx 改为自己的飞书webhook

<?php

// 提取数据并发送飞书消息的函数
function extractDataAndSendFeishuMessage($jsonUrl, $feishuWebhookUrl) {
    // 初始化cURL会话
    $ch = curl_init($jsonUrl);

    // 设置cURL选项
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 忽略SSL证书验证
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); // 设置连接超时时间
    curl_setopt($ch, CURLOPT_TIMEOUT, 2); // 设置执行超时时间
    // 执行cURL请求
    $jsonData = curl_exec($ch);

    // 关闭cURL会话
    curl_close($ch);

    // 解析JSON数据
    $substr_start = "(";
    $substr_end = ")";
    $start_pos = strpos($jsonData, $substr_start);
    $end_pos = strpos($jsonData, $substr_end);

    if ($start_pos !== false && $end_pos !== false) {
        $start_pos = $start_pos + mb_strlen($substr_start);
        $end_pos = $end_pos;
        $middle_text = mb_substr($jsonData, $start_pos, $end_pos - $start_pos);
        $jsonData1 = $middle_text;
    } else {
        return "无法获取内容"; // 如果没有获取到内容,直接返回
    }
    
    $data = json_decode($jsonData1, true);
    
    // 获取No1
    if (isset($data['shuju'][0])) {
        $no1 = $data['shuju'][0];
        
        // 提取各项数据
        $eventTime = $no1['O_TIME'];
        $location = $no1['LOCATION_C'];
        $magnitude = $no1['M_MS'];
        
        // 将 $eventTime 转换为时间戳
        $eventTimestamp = strtotime($eventTime);
        // 获取当前时间戳
        $currentTimestamp = time();
        
        // 判断事件时间与当前时间的差异(是否在一天内)
        if (($currentTimestamp - $eventTimestamp) <= 86400 && ($currentTimestamp - $eventTimestamp) >= 0) { // 86400秒 = 1天
            // 发送信息到飞书
            $data = json_encode(array(
                'msg_type' => 'text',
                'content' => array(
                    'text' => "$eventTime 在 $location 发生了 $magnitude 震级地震 。"
                )
            ));

            $ch = curl_init($feishuWebhookUrl);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); // 设置连接超时时间为1秒
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_TIMEOUT, 1); // 设置执行超时时间为1秒
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Content-Type: application/json'
            ));
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            
            $result = curl_exec($ch);
            
            // 关闭cURL会话
            curl_close($ch);

            echo $result;
        } else {
            echo "短期内无事发生";
        }
    } else {
        echo "jsonData:".$jsonData;
    }
}

// JSON数据URL和飞书Webhook地址
$jsonUrl = 'https://www.ceic.ac.cn/ajax/speedsearch?num=1';
$feishuWebhookUrl = 'https://www.feishu.cn/flow/api/trigger-webhook/xxxx';

// 调用函数提取数据并发送飞书消息
extractDataAndSendFeishuMessage($jsonUrl, $feishuWebhookUrl);

?>

这个接口是中国地震网的,实测访问过多会被拉黑(测试时我是按秒执行的),但是第二个接口是托管于cloudflare的,我的服务器不能很好的访问。

如果你的服务器可以访问第二个接口就使用第二个接口,它的限制是每秒不能超过两次访问,足够使用了。

<?php

// 提取数据并发送飞书消息的函数
function extractDataAndSendFeishuMessage($jsonUrl, $feishuWebhookUrl) {
    // 初始化cURL会话
    $ch = curl_init($jsonUrl);

    // 设置cURL选项
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // 忽略SSL证书验证
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 2); // 设置连接超时时间
    curl_setopt($ch, CURLOPT_TIMEOUT, 2); // 设置执行超时时间
    // 执行cURL请求
    $jsonData = curl_exec($ch);

    // 关闭cURL会话
    curl_close($ch);

    $data = json_decode($jsonData, true);
    
    // 获取No1
    if (isset($data['No1'])) {
        $no1 = $data['No1'];
        
        // 提取各项数据
        $eventTime = $no1['time'];
        $location = $no1['location'];
        $magnitude = $no1['magnitude'];
        
        // 将 $eventTime 转换为时间戳
        $eventTimestamp = strtotime($eventTime);
        // 获取当前时间戳
        $currentTimestamp = time();
        
        // 判断事件时间与当前时间的差异(是否在一天内)
        if (($currentTimestamp - $eventTimestamp) <= 86400 && ($currentTimestamp - $eventTimestamp) >= 0) { // 86400秒 = 1天
            // 发送信息到飞书
            $data = json_encode(array(
                'msg_type' => 'text',
                'content' => array(
                    'text' => "$eventTime 在 $location 发生了 $magnitude 震级地震 。"
                )
            ));

            $ch = curl_init($feishuWebhookUrl);
            curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); // 设置连接超时时间为1秒
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
            curl_setopt($ch, CURLOPT_TIMEOUT, 1); // 设置执行超时时间为1秒
            curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
            curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
            curl_setopt($ch, CURLOPT_HTTPHEADER, array(
                'Content-Type: application/json'
            ));
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            
            $result = curl_exec($ch);
            
            // 关闭cURL会话
            curl_close($ch);

            echo $result;
        } else {
            echo "短期内无事发生";
        }
    } else {
        echo "jsonData:".$jsonData;
    }
}

// JSON数据URL和飞书Webhook地址
$jsonUrl = 'https://api.wolfx.jp/cenc_eqlist.json';
$feishuWebhookUrl = 'https://www.feishu.cn/flow/api/trigger-webhook/xxxx';

// 调用函数提取数据并发送飞书消息
extractDataAndSendFeishuMessage($jsonUrl, $feishuWebhookUrl);
?>

飞书教程

1.访问飞书官网

2.找到创建的机器人

3.点击左边的流程设计

4.创建流程

5.选择触发器为触发webhook

6.参数填写{"msg_type":"text","content":{"text":"request example"}}
 并点击完成

7.选择操作为发送飞书消息

8.发送对象看你情况选择,我选择的是群

9.消息标题为地震预警

10.消息内容点击加号然后找到webhook触发选择content.text

11.点击完成就算部署完成了。

结语

天灾无法预料,希望各位保护好自己和家人,平安度过。

 

利用飞书机器人监控网站状态

前言

之前分享过搭建uptime-kuma或者哪吒监控来监控自己的网站,但是都需要用到自己的服务器。

今天教大家如何白嫖来弄一个监控。

教程

1.首先去Spug监控助手注册一个账号

2.注册并登录飞书官网

3.手机上下载并安装飞书。

4.手机飞书创建群聊。

5.电脑上飞书官网创建应用-创建流程-选择触发器为webhook触发-选择操作为发送飞书消息

6.到webhook触发查看链接地址,启用并且发布机器人

7.Spug监控助手新建监控项。

8.按需选择条件后,通知对象选择飞书机器人,并且填写webhook触发的链接地址。

结语

飞书机器人还有不少其他的功能,如果有兴趣的伙伴可以多多摸索。

❌