Skip to content
Open
6 changes: 2 additions & 4 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: "Common airport Checkin"

on:
schedule:
- cron: "0 14 * * *" # scheduled at 06:00 (UTC+8) everyday
- cron: "0 22 * * *" # scheduled at 06:00 (UTC+8) everyday
workflow_dispatch:

env:
Expand All @@ -23,7 +23,7 @@ jobs:
- name: Set up python
uses: actions/setup-python@v5
with:
python-version: 3.10.16
python-version: 3.10.6

- name: Random sleep
if: github.event_name == 'schedule'
Expand All @@ -37,8 +37,6 @@ jobs:
env:
URL: ${{ secrets.URL }}
SCKEY: ${{ secrets.SCKEY }}
EMAIL: ${{ secrets.EMAIL }}
PASSWD: ${{ secrets.PASSWD }}
CONFIG: ${{ secrets.CONFIG }}
run: |
python3 ./main.py
11 changes: 8 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# 通用机场签到😍<br/>
# SSPANEL 机场签到😍<br/>
>只要机场网站''' Powered by SSPANEL ''',就可以进行签到。要确认是否是''' Powered by SSPANEL ''',在机场首页滑倒最底端就可以看到。例如:
![Y0}SY$J`8837H8T5GXM1DZY](https://user-images.githubusercontent.com/21276183/214764546-4f66333a-cb9b-420e-8260-697d26fb4547.png)
## 作用
Expand All @@ -14,10 +14,15 @@

| 参数 | 是否必须 | 内容 |
| ------------ | ------------ | ------------ |
| URL | 是 | 机场地址 |
| CONFIG| 是 | 账号密码 |
| SCKEY | 否 | Sever酱秘钥 |
<br/>
<b>其中URL的值必须是机场网站的地址,例如:https://example.com</b>,尾部不要加''' / '''号 config写法:一行账号一行密码
>[说明]
>
>其中URL的值必须是机场网站的地址,例如:https://example.com</b>,尾部不要加''' / '''号
>
><b>config写法:一行账号一行密码</b>


3. 到`Actions`中创建一个workflow,运行一次,以后每天项目都会自动运行。<br/>
4. 最后,可以到Run sign查看签到情况,同时也会也会将签到详情推送到Sever酱。
56 changes: 32 additions & 24 deletions main.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import requests, json, re, os
import requests, json, os
# 机场的地址
url = os.environ.get('URL')
# 配置用户名(一般是邮箱)
Expand All @@ -7,6 +7,7 @@
# server酱
SCKEY = os.environ.get('SCKEY')


login_url = '{}/auth/login'.format(url)
check_url = '{}/user/checkin'.format(url)

Expand All @@ -22,41 +23,48 @@ def sign(order,user,pwd):
'passwd': pwd
}
try:
print(f'===账号{order}进行登录...===')
print(f'账号:{user}')
print(f'[info]签到 第{order}个账号')
# 尝试脱敏输出账号,避免被github actions替换成***
user_out = ''
for i in user:
user_out += i
user_out += " "
print(f'[info]账号:{user_out}')
res = session.post(url=login_url,headers=header,data=data).text
print(res)
print('[debug]登录接口返回',res)
response = json.loads(res)
print(response['msg'])
print(f'[info]第{order}个账号',response['msg'])
# 进行签到
res2 = session.post(url=check_url,headers=header).text
print(res2)
print('[debug]签到接口返回',res2)
result = json.loads(res2)
print(result['msg'])
content = result['msg']
# 进行推送
if SCKEY != '':
push_url = 'https://sctapi.ftqq.com/{}.send?title=机场签到&desp={}'.format(SCKEY, content)
requests.post(url=push_url)
print('推送成功')
print(f"[info]第{order}个账号",result['msg'])
return f"[账号{user}]签到成功:{result['msg']}"
except Exception as ex:
content = '签到失败'
print(content)
print("出现如下异常%s"%ex)
if SCKEY != '':
push_url = 'https://sctapi.ftqq.com/{}.send?title=机场签到&desp={}'.format(SCKEY, content)
requests.post(url=push_url)
print('推送成功')
print('===账号{order}签到结束===\n'.format(order=order))
print('[error]第{order}个账号签到失败')
print("[error]签到时出现如下异常%s" % ex)
return f"[账号{user}]签到失败:{ex}"

def push(msg):
if SCKEY != '':
push_url = 'https://sctapi.ftqq.com/{}.send?title=机场签到&desp={}'.format(SCKEY, msg)
requests.post(url=push_url)
print('[info]已推送至 server酱')
else:
print('[info]未配置 Server酱,跳过推送流程')

if __name__ == '__main__':
configs = config.splitlines()
pushmsg = 'SSPANEL 机场签到结果推送:'
if len(configs) %2 != 0 or len(configs) == 0:
print('配置文件格式错误')
print('[warn]机密CONFIG格式错误,参考README.md进行修改\n[exit]退出签到')
exit()
user_quantity = len(configs)
user_quantity = user_quantity // 2
for i in range(user_quantity):
user = configs[i*2]
pwd = configs[i*2+1]
sign(i,user,pwd)

pushmsg += '\n' + sign(i+1,user,pwd)
push(pushmsg)
print('[exit]流程结束')
exit()