【青龙面板】使用脚本每天自动签到论坛

发表于:2024-11-9 16:05:24 三方应用 6284

<br /> <br />

安装青龙脚本

直接在应用商店安装即可

再安装所需环境:

参考链接:https://club.fnnas.com/forum.php?mod=viewthread&tid=3002

设置环境变量名:PV_COOKIE

获取cookie填入变量内

青龙签到脚本文件

import os
import notify  # 不可删除
import httpx
import logging
import asyncio
from datetime import datetime, timedelta

# 配置日志
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')


def get_cookie_from_env():
    """从环境变量中读取 Cookie """
    cookie_string = os.environ.get('PV_COOKIE', '')
    if not cookie_string:
        try:
            from qlpanel.some_module import get_env_variable
            cookie_string = get_env_variable('PV_COOKIE')
        except ImportError:
            logging.error("未找到环境变量 PV_COOKIE,请确保已正确设置。")
            raise ValueError("未找到 Cookie")
    return cookie_string


async def sign_in(sign_in_url, cookie_string):
    """执行签到操作"""
    if not cookie_string:
        logging.error("未找到 Cookie,无法进行签到。")
        return "未找到 Cookie,无法进行签到。"

    headers = {'Cookie': cookie_string}

    async with httpx.AsyncClient() as client:
        try:
            response = await client.get(sign_in_url, headers=headers)

            # 检查响应状态码
            if response.status_code == 200:
                if "您今天已经打过卡了,请勿重复操作!" in response.text:
                    logging.info("今天已经签到过了,无需重复操作!")
                    return "今天已经签到过了,无需重复操作!"
                elif "恭喜您,打卡成功!" in response.text:
                    logging.info("恭喜您,打卡成功!")
                    return "恭喜您,打卡成功!"
                else:
                    logging.warning("未知响应内容,可能签到失败。")
                    logging.debug("响应内容: %s", response.text)
                    return "未知响应内容,可能签到失败。"
            else:
                logging.error("打卡失败!")
                logging.error("状态码: %s", response.status_code)
                logging.error("响应内容: %s", response.text)
                return f"打卡失败!状态码: {response.status_code}"
        except httpx.RequestError as e:
            logging.error("请求异常: %s", e)
            return f"请求异常: {e}"


async def send_notification(summary_message):
    """异步发送通知"""
    try:
        notify.send("飞牛OS论坛签到情况", summary_message)
    except Exception as e:
        logging.error("通知发送失败: %s", e)


async def wait_until(target_time):
    """等待直到指定时间"""
    now = datetime.now()
    wait_time = (target_time - now).total_seconds()
    if wait_time > 0:
        logging.info(f"当前时间: {now}, 等待到目标时间: {target_time}")
        await asyncio.sleep(wait_time)
    return target_time


async def main():
    # 固定签到地址
    sign_in_url = "https://club.fnnas.com/plugin.php?id=zqlj_sign&sign=a33ba82c"

    try:
        # 编译代码
        cookie_string = get_cookie_from_env()
        logging.info("读取到的 Cookie: %s", cookie_string)
    except ValueError as e:
        logging.error(e)
        return

    # 确定执行时间
    now = datetime.now()
    target_time = now.replace(hour=0, minute=0, second=30, microsecond=900000)
    if target_time < now:
        target_time += timedelta(days=1)

    # 等待到指定时间
    start_time = await wait_until(target_time)

    # 执行签到
    sign_result = await sign_in(sign_in_url, cookie_string)
    sign_time = datetime.now()

    # 计算脚本运行时间
    run_time = (sign_time - start_time).total_seconds()

    # 格式化签到时间,精确到毫秒
    sign_time_str = sign_time.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]

    # 格式化脚本运行时间,精确到毫秒
    run_time_str = f"{run_time * 1000:.3f} 毫秒"

    # 生成通知内容
    summary_message = f"签到结果:{sign_result}\n签到时间:{sign_time_str}\n脚本运行时间:{run_time_str}"

    # 发送请求
    await send_notification(summary_message)


if __name__ == "__main__":
    asyncio.run(main())

:loveliness: 注意:签到脚本是固定时间运行的,意思是,现在跑起来不会立即签到,而是到了91行代码设置的时间才会发送签到时间。

(hour=0, minute=0, second=30, microsecond=900000)

是0点0分30秒900毫秒时执行签到命令

设置青龙通知,脚本签到完成即可收到通知内容

收藏
送赞 10
分享

发表回复

评论列表(18)

提示: 作者被禁止或删除 内容自动屏蔽
能飞牛自动签到么:)...
2024-11-15 19:12:37 回复
这个就是签飞牛的脚本  详情 回复
2024-11-16 08:37
这个就是签飞牛的脚本
2024-11-16 08:37:08 回复
怎么获取cookie
2024-11-16 22:09:33 回复
浏览器插件,或者是F12
2024-11-17 10:41:55 回复
失败了==  详情 回复
4 天前
厉害,学习了哟
2024-11-25 09:43:46 回复
怎么添加脚本?
2024-11-28 20:55:07 回复
大佬,设置环境变量名在哪里设置?获取cookie在哪里获取?脚本文件填哪里,纯小白
2024-12-1 22:03:18 回复
本帖最后由 drw 于 2024-12-6 11:26 编辑

搞定了。。。谢谢分享。
2024-12-2 09:32:26 回复
获取cookie
2024-12-16 11:56:47 回复
脚本的邮件通知怎么配置....
2024-12-22 17:11:06 回复
大佬以下报错时是什么原因
========================================================================
## 开始执行... 2024-12-31 12:04:51


Traceback (most recent call last):
  File "/ql/data/scripts/飞牛签到.swap.py", line 3, in <module>
    import httpx
ModuleNotFoundError: No module named 'httpx'

## 执行结束... 2024-12-31 12:04:51  耗时 1 秒
===============================================
Python 的依赖安装了  requests  / canvas /ping3 / jieda / aiohttp  都是安装完成 还需要其他的依赖么  LINUX 的安装失败,NodeJs 的  jsdom -g 安装失败有影响么
2024-12-31 12:07:57 回复
大概是搞定了,这个报错的意思是没有安装  THHPX 依赖。。重新安装依赖就好了。。
之前那个贴纸里给的依赖么有PH的这个依赖。。
2024-12-31 13:05:41 回复
这个填cookie是全部,还是只取其中一小段关键字符?
2025-1-2 16:05:30 回复
cookie得到了,但是在变量里面填入的话是什么格式有要求么?有俩个cookie
2025-1-5 15:26:00 回复
不错,挺好使
5 天前 回复
kggzs 发表于 2024-11-17 10:41
浏览器插件,或者是F12

失败了==
4 天前 回复
已经签到过的信息修改过了   得改成  if "今日已打卡" in response.text:
4 天前 回复