收起左侧

飞牛社区签到脚本(配合青龙面板可以实现每日自动签到)

32
回复
4770
查看
[ 复制链接 ]

4

主题

12

回帖

90

牛值

社区共建团

2024-11-10 14:01:14 显示全部楼层 阅读模式

飞牛社区自动签到脚本指南

在这篇文章中,我将分享一个自动签到的 Python 脚本,适用于飞牛社区。通过该脚本,您可以方便快捷地完成每日签到,避免手动操作的繁琐。

脚本参考:fnOS 青龙面板部署飞牛社区自动签到脚本带通知功能_青龙面板自动签到-CSDN博客

1. 实现功能

该脚本主要负责完成以下任务:

  • 自动发送签到请求,获取签到结果。
  • 提取并展示用户的签到情况,包括最近打卡、本月打卡和累计打卡奖励等信息并发送邮件通知本人。
  • 在发生错误时,自动发送电子邮件通知本人。

2. 代码解析

请求部分:

使用 requests 库向签到接口发起 GET 请求,并根据返回的数据判断签到结果。

def sign_in():
    try:
        # 签到请求链接右键打卡按钮直接复制替换
        response = requests.get('*******签到请求链接右键打卡按钮直接复制替换*******', cookies=cookies)

        if '恭喜您,打卡成功!' in response.text:
            print('签到详情(打卡成功):\n')
            get_sign_in_info()
        elif '您今天已经打过卡了,请勿重复操作!' in response.text:
            print('签到详情(已经打过卡了):\n')
            get_sign_in_info()
        else:
            print('打卡失败, cookies可能已经过期或站点更新.')
            smtp(title='飞牛社区自动签到(打卡失败)', content='cookies可能已经过期或站点更新.')  # 发送邮件
    except Exception as error:
        print('签到请求失败:', error)
        smtp(title='飞牛社区自动签到(请求失败)', content=str(error))  # 发送邮件

若签到成功或已签到,脚本会调用 get_sign_in_info() 函数获取详细信息。

def get_sign_in_info():
    try:
        response = requests.get('https://club.fnnas.com/plugin.php?id=zqlj_sign', cookies=cookies)

        soup = BeautifulSoup(response.text, 'html.parser')
        content = []

        # 定义需要查找的模式和选择器
        patterns = [
            {'name': '最近打卡', 'selector': 'li:-soup-contains("最近打卡")'},
            {'name': '本月打卡', 'selector': 'li:-soup-contains("本月打卡")'},
            {'name': '连续打卡', 'selector': 'li:-soup-contains("连续打卡")'},
            {'name': '累计打卡', 'selector': 'li:-soup-contains("累计打卡")'},
            {'name': '累计奖励', 'selector': 'li:-soup-contains("累计奖励")'},
            {'name': '最近奖励', 'selector': 'li:-soup-contains("最近奖励")'},
            {'name': '当前打卡等级', 'selector': 'li:-soup-contains("当前打卡等级")'}
        ]

        for pattern in patterns:
            element = soup.select_one(pattern['selector'])
            if element:
                # 提取文本并清洗
                text = element.get_text()
                content.append(f"{pattern['name']}: {text.split(':')[-1].strip()}")
        content_text = '\n'.join(content)
        print(content_text + '\n')
        smtp(title='飞牛社区自动签到(成功)', content=str(content_text))  # 发送邮件

    except Exception as error:
        print('获取打卡信息失败:', error)
        smtp(title='飞牛社区自动签到(获取打卡信息失败)', content=str(error))  # 发送邮件

信息提取:

脚本使用 BeautifulSoup 对 HTML 内容进行解析,提取用户的签到信息。我们定义了一系列的模式,通过选择器查找特定的文本。

def get_sign_in_info():
    try:
        response = requests.get('https://club.fnnas.com/plugin.php?id=zqlj_sign', cookies=cookies)

        soup = BeautifulSoup(response.text, 'html.parser')
        content = []

        # 定义需要查找的模式和选择器
        patterns = [
            {'name': '最近打卡', 'selector': 'li:-soup-contains("最近打卡")'},
            {'name': '本月打卡', 'selector': 'li:-soup-contains("本月打卡")'},
            {'name': '连续打卡', 'selector': 'li:-soup-contains("连续打卡")'},
            {'name': '累计打卡', 'selector': 'li:-soup-contains("累计打卡")'},
            {'name': '累计奖励', 'selector': 'li:-soup-contains("累计奖励")'},
            {'name': '最近奖励', 'selector': 'li:-soup-contains("最近奖励")'},
            {'name': '当前打卡等级', 'selector': 'li:-soup-contains("当前打卡等级")'}
        ]

        for pattern in patterns:
            element = soup.select_one(pattern['selector'])
            if element:
                # 提取文本并清洗
                text = element.get_text()
                content.append(f"{pattern['name']}: {text.split(':')[-1].strip()}")
        content_text = '\n'.join(content)
        print(content_text + '\n')
        smtp(title='飞牛社区自动签到(成功)', content=str(content_text))  # 发送邮件

    except Exception as error:
        print('获取打卡信息失败:', error)
        smtp(title='飞牛社区自动签到(获取打卡信息失败)', content=str(error))  # 发送邮件

邮件推送:

在签到成功或失败时,脚本通过 SMTP 发送结果邮件,保证用户及时了解签到状态。

def smtp(title: str, content: str):
    """
    使用 SMTP 邮件 推送消息。
    """
    if (
            not push_config.get("SMTP_SERVER")
            or not push_config.get("SMTP_SSL")
            or not push_config.get("SMTP_EMAIL")
            or not push_config.get("SMTP_PASSWORD")
            or not push_config.get("SMTP_NAME")
    ):
        print(
            "SMTP 邮件 的 SMTP_SERVER 或者 SMTP_SSL 或者 SMTP_EMAIL 或者 SMTP_PASSWORD 或者 SMTP_NAME 未设置!!\n取消推送"
        )
        return
    print("SMTP 邮件 服务启动")

    message = MIMEText(content, "plain", "utf-8")
    message["From"] = formataddr(
        (
            Header(push_config.get("SMTP_NAME"), "utf-8").encode(),
            push_config.get("SMTP_EMAIL"),
        )
    )
    message["To"] = formataddr(
        (
            Header(push_config.get("SMTP_NAME"), "utf-8").encode(),
            push_config.get("SMTP_EMAIL"),
        )
    )
    message["Subject"] = Header(title, "utf-8")

    try:
        smtp_server = (
            smtplib.SMTP_SSL(push_config.get("SMTP_SERVER"))
            if push_config.get("SMTP_SSL") == "true"
            else smtplib.SMTP(push_config.get("SMTP_SERVER"))
        )
        smtp_server.login(
            push_config.get("SMTP_EMAIL"), push_config.get("SMTP_PASSWORD")
        )
        smtp_server.sendmail(
            push_config.get("SMTP_EMAIL"),
            push_config.get("SMTP_EMAIL"),
            message.as_bytes(),
        )
        smtp_server.close()
        print("SMTP 邮件 推送成功!")
    except Exception as e:
        print(f"SMTP 邮件 推送失败!{e}")

3. 使用前准备

(1)用户需要设置相应的 Cookie 值和 SMTP 邮件服务配置。确保使用的邮箱支持 SMTP 发送,并提供正确的服务器信息。

  • Cookie获取链接:https://club.fnnas.com/plugin.php?id=zqlj\_sign
  • 打开链接登录后,使用开发者模式获取所需要的Cookie相应字段的值。
  • 邮件服务可以选择配置,详细配置教程可以参考来自bing的搜索。
# 填写对应的 Cookie 值
cookies = {
    'pvRK_2132_saltkey': '',
    'pvRK_2132_auth': '',
}
# SMTP 邮件服务配置
push_config = {
    'SMTP_SERVER': '',  # SMTP 发送邮件服务器,形如 smtp.exmail.qq.com:465
    'SMTP_SSL': 'true',  # SMTP 发送邮件服务器是否使用 SSL,填写 true 或 false
    'SMTP_EMAIL': '',  # SMTP 收发件邮箱,通知将会由自己发给自己
    'SMTP_PASSWORD': '',  # SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定
    'SMTP_NAME': '定时任务',  # SMTP 收发件人姓名,可随意填写
}

(2)签到链接获取

# 签到请求链接右键打卡按钮直接复制替换
response = requests.get('**签到请求链接右键打卡按钮直接复制替换**', cookies=cookies)

4.完整脚本

import requests
from bs4 import BeautifulSoup
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.utils import formataddr

# 填写对应的 Cookie 值
cookies = {
    'pvRK_2132_saltkey': '',
    'pvRK_2132_auth': '',
}
# SMTP 邮件服务配置
push_config = {
    'SMTP_SERVER': '',  # SMTP 发送邮件服务器,形如 smtp.exmail.qq.com:465
    'SMTP_SSL': 'true',  # SMTP 发送邮件服务器是否使用 SSL,填写 true 或 false
    'SMTP_EMAIL': '',  # SMTP 收发件邮箱,通知将会由自己发给自己
    'SMTP_PASSWORD': '',  # SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定
    'SMTP_NAME': '定时任务',  # SMTP 收发件人姓名,可随意填写
}


def sign_in():
    try:
        # 签到请求链接右键打卡按钮直接复制替换
        response = requests.get('**签到请求链接右键打卡按钮直接复制替换**', cookies=cookies)

        if '恭喜您,打卡成功!' in response.text:
            print('签到详情(打卡成功):\n')
            get_sign_in_info()
        elif '您今天已经打过卡了,请勿重复操作!' in response.text:
            print('签到详情(已经打过卡了):\n')
            get_sign_in_info()
        else:
            print('打卡失败, cookies可能已经过期或站点更新.')
            smtp(title='飞牛社区自动签到(打卡失败)', content='cookies可能已经过期或站点更新.')  # 发送邮件
    except Exception as error:
        print('签到请求失败:', error)
        smtp(title='飞牛社区自动签到(请求失败)', content=str(error))  # 发送邮件


def get_sign_in_info():
    try:
        response = requests.get('https://club.fnnas.com/plugin.php?id=zqlj_sign', cookies=cookies)

        soup = BeautifulSoup(response.text, 'html.parser')
        content = []

        # 定义需要查找的模式和选择器
        patterns = [
            {'name': '最近打卡', 'selector': 'li:-soup-contains("最近打卡")'},
            {'name': '本月打卡', 'selector': 'li:-soup-contains("本月打卡")'},
            {'name': '连续打卡', 'selector': 'li:-soup-contains("连续打卡")'},
            {'name': '累计打卡', 'selector': 'li:-soup-contains("累计打卡")'},
            {'name': '累计奖励', 'selector': 'li:-soup-contains("累计奖励")'},
            {'name': '最近奖励', 'selector': 'li:-soup-contains("最近奖励")'},
            {'name': '当前打卡等级', 'selector': 'li:-soup-contains("当前打卡等级")'}
        ]

        for pattern in patterns:
            element = soup.select_one(pattern['selector'])
            if element:
                # 提取文本并清洗
                text = element.get_text()
                content.append(f"{pattern['name']}: {text.split(':')[-1].strip()}")
        content_text = '\n'.join(content)
        print(content_text + '\n')
        smtp(title='飞牛社区自动签到(成功)', content=str(content_text))  # 发送邮件

    except Exception as error:
        print('获取打卡信息失败:', error)
        smtp(title='飞牛社区自动签到(获取打卡信息失败)', content=str(error))  # 发送邮件


def smtp(title: str, content: str):
    """
    使用 SMTP 邮件 推送消息。
    """
    if (
            not push_config.get("SMTP_SERVER")
            or not push_config.get("SMTP_SSL")
            or not push_config.get("SMTP_EMAIL")
            or not push_config.get("SMTP_PASSWORD")
            or not push_config.get("SMTP_NAME")
    ):
        print(
            "SMTP 邮件 的 SMTP_SERVER 或者 SMTP_SSL 或者 SMTP_EMAIL 或者 SMTP_PASSWORD 或者 SMTP_NAME 未设置!!\n取消推送"
        )
        return
    print("SMTP 邮件 服务启动")

    message = MIMEText(content, "plain", "utf-8")
    message["From"] = formataddr(
        (
            Header(push_config.get("SMTP_NAME"), "utf-8").encode(),
            push_config.get("SMTP_EMAIL"),
        )
    )
    message["To"] = formataddr(
        (
            Header(push_config.get("SMTP_NAME"), "utf-8").encode(),
            push_config.get("SMTP_EMAIL"),
        )
    )
    message["Subject"] = Header(title, "utf-8")

    try:
        smtp_server = (
            smtplib.SMTP_SSL(push_config.get("SMTP_SERVER"))
            if push_config.get("SMTP_SSL") == "true"
            else smtplib.SMTP(push_config.get("SMTP_SERVER"))
        )
        smtp_server.login(
            push_config.get("SMTP_EMAIL"), push_config.get("SMTP_PASSWORD")
        )
        smtp_server.sendmail(
            push_config.get("SMTP_EMAIL"),
            push_config.get("SMTP_EMAIL"),
            message.as_bytes(),
        )
        smtp_server.close()
        print("SMTP 邮件 推送成功!")
    except Exception as e:
        print(f"SMTP 邮件 推送失败!{e}")


if __name__ == '__main__':
    sign_in()

结尾

通过这个自动签到脚本,我们能够实现自动化操作,提高效率。如果您在使用过程中遇到问题,欢迎在评论区交流。

收藏
送赞 10
分享

1

主题

4

回帖

0

牛值

江湖小虾

2024-11-11 13:29:35 显示全部楼层
打卡失败, cookies可能已经过期或站点更新.
以前好的,现在也显示这了。更新了cookies也一样  详情 回复
2025-2-23 22:42
我也一直都是这样,请问您解决了吗?  详情 回复
2025-1-24 09:06
[md]需要把自己的cookie和签到地址填到脚本相应位置哦!脚本没问题的 ![1000008224.jpg](data/attachment/forum/202411/11/133957hcewh009jwfwwe89.jpg "1000008224.jpg") [/md]  详情 回复
2024-11-11 13:40

4

主题

12

回帖

90

牛值

社区共建团

2024-11-11 13:40:24 楼主 显示全部楼层

需要把自己的cookie和签到地址填到脚本相应位置哦!脚本没问题的 1000008224.jpg

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

1

主题

4

回帖

0

牛值

江湖小虾

2024-11-11 14:00:00 显示全部楼层
签到详情(已经打过卡了):

最近打卡: 2024-11-11 13:55:42
本月打卡: 1天
连续打卡: 1天
累计打卡: 2天
累计奖励: 8飞牛币
最近奖励: 3飞牛币
当前打卡等级: 无名新人

4

主题

118

回帖

60

牛值

fnOS系统内测组

社区上线纪念勋章社区共建团荣誉勋章飞牛百度网盘玩家

2024-11-11 18:51:43 显示全部楼层
有用,插个眼,标记一下
✨( ̄︶ ̄)↗ ✨✨

12

主题

74

回帖

0

牛值

初出茅庐

2024-11-15 12:51:13 显示全部楼层
手动点赞,好东西,收下了

11

主题

218

回帖

0

牛值

fnOS系统内测组

社区上线纪念勋章

2024-11-16 18:20:43 显示全部楼层
为啥不做pushplus这种消息推送服务
还有我报错: file:///ql/data/scripts/%E9%A3%9E%E7%89%9B%E7%A4%BE%E5%8C%BA%E7%AD%BE%E5%88%B02.mjs:2 from bs4 import BeautifulSoup ^^^ SyntaxError: Unexpected identifier 'bs4' at ModuleLoader.  详情 回复
2024-11-16 19:26
都行。

11

主题

218

回帖

0

牛值

fnOS系统内测组

社区上线纪念勋章

2024-11-16 19:26:07 显示全部楼层
还有我报错:
file:///ql/data/scripts/%E9%A3%9E%E7%89%9B%E7%A4%BE%E5%8C%BA%E7%AD%BE%E5%88%B02.mjs:2
from bs4 import BeautifulSoup
     ^^^

SyntaxError: Unexpected identifier 'bs4'
    at ModuleLoader.moduleStrategy (node:internal/modules/esm/translators:169:18)
    at callTranslator (node:internal/modules/esm/loader:272:14)
    at ModuleLoader.moduleProvider (node:internal/modules/esm/loader:278:30)
    at async link (node:internal/modules/esm/module_**:78:21)

Node.js v20.15.1
还有,这个脚本的语言是python需要使用python解释器运行哦  详情 回复
2024-11-21 16:30
[md]这个情况的话是没有下载bs4这个依赖,可以尝试下载bs4依赖后再次运行 ![image.png](data/attachment/forum/202411/19/191235vf4qc1869645xc17.png "image.png") [/md]  详情 回复
2024-11-19 19:12
都行。

4

主题

12

回帖

90

牛值

社区共建团

2024-11-19 19:12:45 楼主 显示全部楼层

这个情况的话是没有下载bs4这个依赖,可以尝试下载bs4依赖后再次运行 image.png

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我装安装了还是报错 ## 开始执行... 2025-04-24 00:16:42 file:///ql/data/scripts/feiniu.js:2 from bs4 import BeautifulSoup ^^^ SyntaxError: Unexpected identifier 'bs4' at compileSourceTextMod  详情 回复
2025-4-24 00:20

1

主题

5

回帖

0

牛值

江湖小虾

2024-11-20 10:40:15 显示全部楼层
大佬,我运行这个报错
(node:72449) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
/ql/data/scripts/fnsign.js:1
import requests
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at wrapSafe (node:internal/modules/cjs/loader:1281:20)
    at Module._compile (node:internal/modules/cjs/loader:1321:27)
    at Module._extensions..js (node:internal/modules/cjs/loader:1416:10)
    at Module.load (node:internal/modules/cjs/loader:1208:32)
    at Module._load (node:internal/modules/cjs/loader:1024:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:174:12)
    at node:internal/main/run_main_module:28:49

Node.js v20.15.1
需要使用python解释器运行哦!记得要将导入的依赖都安装好  详情 回复
2024-11-21 16:31

4

主题

12

回帖

90

牛值

社区共建团

2024-11-21 16:30:57 楼主 显示全部楼层
还有,这个脚本的语言是python需要使用python解释器运行哦

4

主题

12

回帖

90

牛值

社区共建团

2024-11-21 16:31:35 楼主 显示全部楼层
需要使用python解释器运行哦!记得要将导入的依赖都安装好
我没仔细审题哈哈,谢谢大佬~  详情 回复
2024-11-23 20:41
可以了,之后就行了  详情 回复
2024-11-21 18:50

11

主题

218

回帖

0

牛值

fnOS系统内测组

社区上线纪念勋章

2024-11-21 18:50:13 显示全部楼层
可以了,之后就行了
都行。

6

主题

29

回帖

0

牛值

江湖小虾

2024-11-22 22:13:28 显示全部楼层
青龙小白,完全不懂怎么操作。

1

主题

5

回帖

0

牛值

江湖小虾

2024-11-23 20:41:57 显示全部楼层
晨阳 发表于 2024-11-21 16:31
需要使用python解释器运行哦!记得要将导入的依赖都安装好

我没仔细审题哈哈,谢谢大佬~

31

主题

63

回帖

0

牛值

fnOS系统内测组

2024-12-19 11:30:24 显示全部楼层
已签到成功,感谢楼主,提个建议,可以将cookies,签到链接等,做成青龙变量,有些不懂的,可能会忘记到代码里面改。

8

主题

25

回帖

0

牛值

fnOS系统内测组

2024-12-23 21:33:46 显示全部楼层
还不知道要怎么搞

2

主题

6

回帖

0

牛值

江湖小虾

2025-1-2 13:23:16 显示全部楼层
请问不想推送到邮箱只想签到怎么修改代码?
不管邮箱的配置就行,代码有邮箱的异常处理的  详情 回复
2025-1-2 22:05

4

主题

12

回帖

90

牛值

社区共建团

2025-1-2 22:05:05 楼主 显示全部楼层
不管邮箱的配置就行,代码有邮箱的异常处理的
感谢大佬  详情 回复
2025-1-3 12:36

2

主题

6

回帖

0

牛值

江湖小虾

2025-1-3 12:36:31 显示全部楼层
感谢大佬

0

主题

2

回帖

0

牛值

江湖小虾

2025-1-3 13:36:26 显示全部楼层
飞牛社区自动签到(成功)

最近打卡: 2025-01-03 12:10:52 本月打卡: 2天 连续打卡: 2天 累计打卡: 2天 累计奖励: 11飞牛币 最近奖励: 1飞牛币 当前打卡等级: 无名新人

PUSH+推送的,怎么实现显示换行呢。

4

主题

93

回帖

0

牛值

fnOS系统内测组

飞牛百度网盘玩家

2025-1-6 10:05:45 显示全部楼层
给力了
我去试试感谢
让我们一起实现梦想

0

主题

3

回帖

0

牛值

江湖小虾

2025-1-11 19:52:31 显示全部楼层
感谢,好东西,收下了
最近打卡: 2025-01-11 18:29:31
本月打卡: 2天
连续打卡: 1天
累计打卡: 2天
累计奖励: 10飞牛币
最近奖励: 3飞牛币
当前打卡等级: 无名新人

4

主题

12

回帖

0

牛值

fnOS系统内测组

2025-1-13 11:20:27 显示全部楼层
签到链接获取 是把那个汉字全部替换吗

11

主题

11

回帖

0

牛值

江湖小虾

2025-1-24 09:06:12 显示全部楼层
我也一直都是这样,请问您解决了吗?
2025-2-23 22:42:17 显示全部楼层
以前好的,现在也显示这了。更新了cookies也一样

0

主题

2

回帖

0

牛值

江湖小虾

2025-2-27 21:15:24 显示全部楼层
我对楼主的脚本修改了下,支持PushPlus

import requests
from bs4 import BeautifulSoup

# 填写对应的 Cookie 值
cookies = {
    'pvRK_2132_saltkey': '',
    'pvRK_2132_auth': '',
}

# PushPlus 配置
pushplus_config = {
    'PUSHPLUS_TOKEN': '',  # PushPlus 的 Token
    'ENABLE_PUSHPLUS': 'true'  # 是否启用 PushPlus 推送,true 启用,false 关闭
}

def send_pushplus(title: str, content: str):
    """
    使用 PushPlus 发送消息
    """
    if pushplus_config.get("ENABLE_PUSHPLUS") != "true" or not pushplus_config.get("PUSHPLUS_TOKEN"):
        print("PushPlus 推送未启用或未配置 Token,取消推送")
        return

    print("PushPlus 服务启动")

    try:
        data = {
            'token': pushplus_config.get("PUSHPLUS_TOKEN"),
            'title': title,
            'content': content,
            'template': 'html'
        }
        
        response = requests.post(
            'http://www.pushplus.plus/send',
            data=data,
            headers={'Content-Type': 'application/x-www-form-urlencoded'}
        )
        
        if response.status_code == 200:
            print("PushPlus 推送成功!")
        else:
            print(f"PushPlus 推送失败,状态码:{response.status_code}")
   
    except Exception as e:
        print(f"PushPlus 推送失败!{e}")

def sign_in():
    try:
        # 签到请求链接右键打卡按钮直接复制替换
        response = requests.get('**签到请求链接右键打卡按钮直接复制替换**', cookies=cookies)

        if '恭喜您,打卡成功!' in response.text:
            print('签到详情(打卡成功):\n')
            get_sign_in_info()
        elif '您今天已经打过卡了,请勿重复操作!' in response.text:
            print('签到详情(已经打过卡了):\n')
            get_sign_in_info()
        else:
            print('打卡失败, cookies可能已经过期或站点更新.')
            send_pushplus('飞牛社区自动签到(打卡失败)', 'cookies可能已经过期或站点更新.')  # 发送推送
    except Exception as error:
        print('签到请求失败:', error)
        send_pushplus('飞牛社区自动签到(请求失败)', str(error))  # 发送推送


def get_sign_in_info():
    try:
        response = requests.get('https://club.fnnas.com/plugin.php?id=zqlj_sign', cookies=cookies)

        soup = BeautifulSoup(response.text, 'html.parser')
        content = []

        # 定义需要查找的模式和选择器
        patterns = [
            {'name': '最近打卡', 'selector': 'li:-soup-contains("最近打卡")'},
            {'name': '本月打卡', 'selector': 'li:-soup-contains("本月打卡")'},
            {'name': '连续打卡', 'selector': 'li:-soup-contains("连续打卡")'},
            {'name': '累计打卡', 'selector': 'li:-soup-contains("累计打卡")'},
            {'name': '累计奖励', 'selector': 'li:-soup-contains("累计奖励")'},
            {'name': '最近奖励', 'selector': 'li:-soup-contains("最近奖励")'},
            {'name': '当前打卡等级', 'selector': 'li:-soup-contains("当前打卡等级")'}
        ]

        for pattern in patterns:
            element = soup.select_one(pattern['selector'])
            if element:
                # 提取文本并清洗
                text = element.get_text()
                content.append(f"{pattern['name']}: {text.split(':')[-1].strip()}")
        content_text = '\n'.join(content)
        print(content_text + '\n')
        send_pushplus('飞牛社区自动签到(成功)', content_text)  # 发送推送

    except Exception as error:
        print('获取打卡信息失败:', error)
        send_pushplus('飞牛社区自动签到(获取打卡信息失败)', str(error))  # 发送推送


if __name__ == '__main__':
    sign_in()

4

主题

4

回帖

0

牛值

江湖小虾

2025-3-4 14:04:58 显示全部楼层
报错:## 开始执行... 2025-03-04 14:02:55
/ql/shell/otask.sh: line 208: fnnas: command not found
## 执行结束... 2025-03-04 14:02:55  耗时 1 秒
我按上面的配置了,cookie和打卡链接都更换了,还是报错,这个是什么问题啊?

0

主题

12

回帖

0

牛值

江湖小虾

2025-4-11 08:50:56 显示全部楼层

我昨天测试正常

0

主题

4

回帖

0

牛值

江湖小虾

2025-4-24 00:19:11 显示全部楼层
已经安装了依赖 bs4 还是报错
## 开始执行... 2025-04-24 00:16:42

file:///ql/data/scripts/feiniu.js:2
from bs4 import BeautifulSoup
     ^^^

SyntaxError: Unexpected identifier 'bs4'
    at compileSourceTextModule (node:internal/modules/esm/utils:338:16)
    at ModuleLoader.moduleStrategy (node:internal/modules/esm/translators:102:18)
    at #translate (node:internal/modules/esm/loader:437:12)
    at ModuleLoader.loadAndTranslate (node:internal/modules/esm/loader:484:27)
    at async Module**._link (node:internal/modules/esm/module_**:115:19)

Node.js v22.13.1

0

主题

4

回帖

0

牛值

江湖小虾

2025-4-24 00:20:20 显示全部楼层
晨阳 发表于 2024-11-19 19:12
[md]这个情况的话是没有下载bs4这个依赖,可以尝试下载bs4依赖后再次运行
![image.png](data/attachment/fo ...

我装安装了还是报错

## 开始执行... 2025-04-24 00:16:42

file:///ql/data/scripts/feiniu.js:2
from bs4 import BeautifulSoup
     ^^^

SyntaxError: Unexpected identifier 'bs4'
    at compileSourceTextModule (node:internal/modules/esm/utils:338:16)
    at ModuleLoader.moduleStrategy (node:internal/modules/esm/translators:102:18)
    at #translate (node:internal/modules/esm/loader:437:12)
    at ModuleLoader.loadAndTranslate (node:internal/modules/esm/loader:484:27)
    at async Module**._link (node:internal/modules/esm/module_**:115:19)

Node.js v22.13.1

0

主题

1

回帖

0

牛值

江湖小虾

2025-5-1 13:13:28 显示全部楼层

请勿使用插件打卡,异常打卡经核实,将会扣除飞牛币。

1

主题

8

回帖

0

牛值

江湖小虾

2025-5-16 16:52:52 显示全部楼层
废了吗?、、

提示
打卡失败, cookies可能已经过期或站点更新.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则