免责声明:本脚本是使用cookie方式获取数据,并非51啦官方推荐方式,因此本脚本仅用于开发学习,请勿用于生产环境。

一,配置环境变量(青龙面板->环境变量)

  1. 登录51啦(https://www.51.la/)统计,获取cookie:51SESSIONID
  2. 在青龙面板新建环境变量 LA_SESSIONID,值设为上一步获取的cookie值

二、创建脚本(青龙面板->脚本管理)

  1. 新建空脚本,文件名写 51la_count.js
  2. 复制下面代码粘贴保存:
(async function() {
    const post = async (api, form) => {
        const options = {
            method: 'POST',
            headers: {
                'Cookie': `51SESSIONID=${process.env.LA_SESSIONID}`
            }
        };

        if (form) {
            const formData = new FormData();
            Object.entries(form).forEach(([key, value]) => {
                formData.append(key, value);
            });
            options.body = formData;
        }

        const response = await fetch('https://v6.51.la' + api, options);

        if (!response.ok) {
            throw new Error(`HTTP ${response.status}: ${response.statusText}`);
        }

        try {
            const data = await response.json();
            return data.data || data.bean;
        } catch(e) {
            throw new Error(response.text());
        }
    };
    
    const { sendNotify } = require('./sendNotify');
    
    const title = '51LA概况数据';
    try {
        const list = await post('/api/site/list');
        list.sort((a, b) => a.comId - b.comId);
        const sites = [];
        let content = '';
        
        list.forEach((site, i) => {
            content += `#### ${site.name}\n`;
            content += `||IP|UV|PV\n-|-|-|-\n`;
            content += `今日|${site.todayIp}|${site.todayUv}|${site.todayPv}\n`;
            content += `predict_${i}`;
            content += `昨日|${site.yesterdayIp}|${site.yesterdayUv}|${site.yesterdayPv}\n`;
            sites.push(post('/api/report/overview/title', { comId: site.comId }));
        });
        
        const predict_list = await Promise.all(sites);
        predict_list.forEach((site, i) => {
            content = content.replace(`predict_${i}`, `预计|${site.predictIp}|${site.predictUv}|${site.predictPv}\n`);
        });
        
        sendNotify(title, content, { type: 'markdown' }, '');
        console.log('51laPush任务执行成功!');
    } catch (e) {
        const content = '数据获取失败!' + e.message;
        sendNotify('51LA概况数据', content);
        console.error(content);
    }
})();

三、新建定时任务(青龙面板->定时任务)

  1. 新建任务,名称填写 51la概况数据,命令/脚本填写 task 51la_count.js,定时规则填写 0 8,12,20,23 * * *,其中 8,12,20,23 代表每天8、12、20、23点各推送一次,你也可以改为其他时间推送。
  2. 点击运行一次,测试脚本是否正常运行。

关键词:青龙面板51啦通知
所属分类:代码片段
本文地址:https://me.i-i.me/article/77.html




评论提示: 点击头像可以回复评论

提交取消回复
[face]@
[uname]  [add_time]
[content]
[reply]
加载更多评论