提交 a5073748 编写于 作者: ZainCheung's avatar ZainCheung

增加API列表

上级 b7410f77
[
{
"account": "ZainCheung@163.com",
"password": "10ca5e4c316f81c5d9b56702********",
"sckey": "SCU97783T70c13167b4daa422f4d419a765eb4ebb5ebc9********"
},
{
"account": "150********",
"password": "bfa834f7de58cb650ca01edb********",
"sckey": "SCU97783T70c13167b4daa422f4d419a765eb4ebb5ebc9********"
},
{
"account": "132********",
"password": "f391235b15781c95384cd5bb********",
"sckey": "SCU97783T70c13167b4daa422f4d419a765eb4ebb5ebc9********"
}
]
\ No newline at end of file
[
{
"account": "ZainCheung@163.com",
"password": "10ca5e4c316f81c5d9b56702********",
"sckey": "SCU97783T70c13167b4daa422f4d419a765eb4ebb5ebc9********"
},
{
"account": "150********",
"password": "bfa834f7de58cb650ca01edb********",
"sckey": "SCU97783T70c13167b4daa422f4d419a765eb4ebb5ebc9********"
},
{
"account": "132********",
"password": "f391235b15781c95384cd5bb********",
"sckey": "SCU97783T70c13167b4daa422f4d419a765eb4ebb5ebc9********"
"password": "10ca5e4c316f81c5d9b5670224ff9546",
"sckey": "SCU97783T70c13167b4daa422f4d419a765eb4ebb5ebc9b4dc46d5"
}
]
\ No newline at end of file
......@@ -15,6 +15,7 @@
* * [播放次数](show/count "刷单曲播放次数")
* [项目配置](config/)
* [接口文档](document/)
* [API接口](demo/)
* [下载地址](download/)
* [查看日志](log/)
* [注意事项](attention/)
......
## 直接复制项目 {docsify-ignore-all}
或者可以直接复制一份这个API项目成为你的项目,进入开发者的api服务器: https://glitch.com/edit/#!/netease-cloud-api 选择右上角的 `Remix to Exit`,即可成为你自己的项目,你便可以对代码进行修改,自定义你的域名。
或者可以直接复制一份这个API项目成为你的项目,进入开发者的api服务器: https://glitch.com/edit/#!/netease-cloud-api-sep 选择右上角的 `Remix to Exit`,即可成为你自己的项目,你便可以对代码进行修改,自定义你的域名。
![](https://s1.ax1x.com/2020/06/29/NWTJcn.png)
......
# API接口列表
!> 本项目提供的线上 demo均来自网友捐赠,如果发现不可用时可向接口作者反映或者向项目提出Issue
| 序号 | 地址 | 作者 | 收录时间 | 是否可用 |
| :--: | :----------------------------------------: | :-----------------------------------------: | :------: | :------: |
| 1 | https://netease-cloud-api-sep.glitch.me/ | [ZainCheung](https://github.com/ZainCheung) | 2020.9.7 | √ |
| 2 | https://netease-cloud-api-boyce.glitch.me/ | [BoyceLig](https://github.com/BoyceLig) | 2020.9.7 | √ |
| 3 | https://netease-cloud-api.muir.fun/ | [BecodReyes](https://github.com/BecodReyes) | 2020.9.7 | √ |
| | https://wymusic-xx.glitch.me/ | [Me-x](https://github.com/Me-x) | 2020.9.7 | √ |
......@@ -2,7 +2,7 @@
## 调用前须知
!> 本项目不提供线上 demo,请不要轻易信任使用他人提供的公开服务,如果使用,填写密码时一定要自己加密MD5,以免发生安全问题,泄露自己的账号和密码。
!> 请不要轻易信任使用他人提供的公开服务,如果使用,填写密码时一定要自己加密MD5,以免发生安全问题,泄露自己的账号和密码。
!> 为使用方便,降低门槛, 文档示例接口直接使用了 GET 请求,本项目同时支持 GET/POST 请按实际需求使用
......
......@@ -12,9 +12,9 @@
api接口项目地址:[https://github.com/ZainCheung/netease-cloud-api](https://github.com/ZainCheung/netease-cloud-api)
api的Demo演示地址:[https://netease-cloud-api.glitch.me/](https://netease-cloud-api.glitch.me/)
api的Demo演示地址:[https://netease-cloud-api-sep.glitch.me/](https://netease-cloud-api-sep.glitch.me/)
api的Glitch在线服务器:[https://glitch.com/edit/#!/netease-cloud-api](https://glitch.com/edit/#!/netease-cloud-api)
api的Glitch在线服务器:[https://glitch.com/edit/#!/netease-cloud-api-sep](https://glitch.com/edit/#!/netease-cloud-api-sep)
......
#coding:utf-8
'''
@author: ZainCheung
@LastEditors: ZainCheung
@description:网易云音乐全自动每日打卡云函数版
@Date: 2020-06-25 14:28:48
@LastEditTime: 2020-09-01 18:20:00
'''
from configparser import ConfigParser
from threading import Timer
import requests
import random
import hashlib
import datetime
import time
import json
import logging
import math
logger = logging.getLogger()
grade = [10,40,70,130,200,400,1000,3000,8000,20000]
api = ''
class Task(object):
#coding:utf-8
'''
对象的构造函数
@author: ZainCheung
@LastEditors: ZainCheung
@description:网易云音乐全自动每日打卡云函数版
@Date: 2020-06-25 14:28:48
@LastEditTime: 2020-09-01 18:20:00
'''
def __init__(self, uin, pwd, sckey, countrycode=86):
self.uin = uin
self.pwd = pwd
self.countrycode = countrycode
self.sckey = sckey
from configparser import ConfigParser
from threading import Timer
import requests
import random
import hashlib
import datetime
import time
import json
import logging
import math
'''
带上用户的cookie去发送数据
url:完整的URL路径
postJson:要以post方式发送的数据
返回response
'''
def getResponse(self, url, postJson):
response = requests.post(url, data=postJson, headers={'Content-Type':'application/x-www-form-urlencoded'},cookies=self.cookies)
return response
logger = logging.getLogger()
grade = [10,40,70,130,200,400,1000,3000,8000,20000]
api = ''
'''
登录
'''
def login(self):
data = {"uin":self.uin,"pwd":self.pwd,"countrycode":self.countrycode,"r":random.random()}
if '@' in self.uin:
url = api + '?do=email'
else:
url = api + '?do=login'
response = requests.post(url, data=data, headers={'Content-Type':'application/x-www-form-urlencoded'})
code = json.loads(response.text)['code']
self.name = json.loads(response.text)['profile']['nickname']
self.uid = json.loads(response.text)['account']['id']
if code==200:
self.error = ''
else:
self.error = '登录失败,请检查账号'
self.cookies = response.cookies.get_dict()
self.log('登录成功')
class Task(object):
'''
对象的构造函数
'''
def __init__(self, uin, pwd, sckey, countrycode=86):
self.uin = uin
self.pwd = pwd
self.countrycode = countrycode
self.sckey = sckey
'''
每日签到
'''
def sign(self):
url = api + '?do=sign'
response = self.getResponse(url, {"r":random.random()})
data = json.loads(response.text)
if data['code'] == 200:
self.log('签到成功')
else:
self.log('重复签到')
'''
带上用户的cookie去发送数据
url:完整的URL路径
postJson:要以post方式发送的数据
返回response
'''
def getResponse(self, url, postJson):
response = requests.post(url, data=postJson, headers={'Content-Type':'application/x-www-form-urlencoded'},cookies=self.cookies)
return response
'''
每日打卡300首歌
'''
def daka(self):
url = api + '?do=daka'
response = self.getResponse(url, {"r":random.random()})
self.log(response.text)
'''
登录
'''
def login(self):
data = {"uin":self.uin,"pwd":self.pwd,"countrycode":self.countrycode,"r":random.random()}
if '@' in self.uin:
url = api + '?do=email'
else:
url = api + '?do=login'
response = requests.post(url, data=data, headers={'Content-Type':'application/x-www-form-urlencoded'})
code = json.loads(response.text)['code']
self.name = json.loads(response.text)['profile']['nickname']
self.uid = json.loads(response.text)['account']['id']
if code==200:
self.error = ''
else:
self.error = '登录失败,请检查账号'
self.cookies = response.cookies.get_dict()
self.log('登录成功')
'''
每日签到
'''
def sign(self):
url = api + '?do=sign'
response = self.getResponse(url, {"r":random.random()})
data = json.loads(response.text)
if data['code'] == 200:
self.log('签到成功')
else:
self.log('重复签到')
'''
每日打卡300首歌
'''
def daka(self):
url = api + '?do=daka'
response = self.getResponse(url, {"r":random.random()})
self.log(response.text)
'''
查询用户详情
'''
def detail(self):
url = api + '?do=detail'
data = {"uid":self.uid, "r":random.random()}
response = self.getResponse(url, data)
data = json.loads(response.text)
self.level = data['level']
self.listenSongs = data['listenSongs']
self.log('获取用户详情成功')
'''
Server推送
'''
def server(self):
if self.sckey == '':
return
url = 'https://sc.ftqq.com/' + self.sckey + '.send'
self.diyText() # 构造发送内容
response = requests.get(url,params={"text":self.title, "desp":self.content})
data = json.loads(response.text)
if data['errno'] == 0:
self.log('用户:' + self.name + ' Server酱推送成功')
else:
self.log('用户:' + self.name + ' Server酱推送失败,请检查sckey是否正确')
'''
自定义要推送到微信的内容
title:消息的标题
content:消息的内容,支持MarkDown格式
'''
def diyText(self):
# today = datetime.date.today()
# kaoyan_day = datetime.date(2020,12,21) #2021考研党的末日
# date = (kaoyan_day - today).days
one = requests.get('https://api.qinor.cn/soup/').text # 每日一句的api
for count in grade:
if self.level < 10:
if self.listenSongs < 20000:
if self.listenSongs < count:
self.tip = '还需听歌' + str(count-self.listenSongs) + '首即可升级'
break
else:
self.tip = '你已经听够20000首歌曲,如果登录天数达到800天即可满级'
else:
self.tip = '恭喜你已经满级!'
if self.error == '':
state = ("- 目前已完成签到\n"
"- 今日共打卡" + str(self.dakanum) + "次\n"
"- 今日共播放" + str(self.dakaSongs) + "首歌\n"
"- 还需要打卡" + str(self.day) +"天")
self.title = ("网易云今日打卡" + str(self.dakaSongs) + "首,已播放" + str(self.listenSongs) + "首")
else:
state = self.error
self.title = '网易云听歌任务出现问题!'
self.content = (
"------\n"
"#### 账户信息\n"
"- 用户名称:" + str(self.name) + "\n"
"- 当前等级:" + str(self.level) + "级\n"
"- 累计播放:" + str(self.listenSongs) + "首\n"
"- 升级提示:" + self.tip + "\n\n"
"------\n"
"#### 任务状态\n" + str(state) + "\n\n"
"------\n"
"#### 打卡日志\n" + self.dakaSongs_list + "\n\n"
"------\n"
"#### 今日一句\n- " + one + "\n\n")
'''
打印日志
'''
def log(self, text):
time_stamp = datetime.datetime.now()
print(time_stamp.strftime('%Y.%m.%d-%H:%M:%S') + ' ' + str(text))
self.time =time_stamp.strftime('%H:%M:%S')
self.list.append("- [" + self.time + "] " + str(text) + "\n\n")
'''
开始执行
'''
def start(self):
try:
self.list = []
self.list.append("- 初始化完成\n\n")
self.login()
self.sign()
self.detail()
counter = self.listenSongs
for i in range(1,10):
self.daka()
#self.log('用户:' + self.name + ' 第' + str(i) + '次打卡成功,即将休眠10秒')
self.log('第' + str(i) + '次打卡成功,即将休眠10秒')
time.sleep(10)
self.dakanum = i
self.detail()
self.dakaSongs = self.listenSongs - counter
self.log('今日已打卡播放' + str(self.dakaSongs) + '首')
if self.dakaSongs == 300:
break
if self.listenSongs >= 20000:
self.day = 0
else:
self.day = math.ceil((20000 - self.listenSongs)/300)
self.list.append("- 打卡结束,消息推送\n\n")
self.dakaSongs_list = ''.join(self.list)
self.server()
except:
self.log('用户任务执行中断,请检查账号密码是否正确')
else:
self.log('用户:' + self.name + ' 今日任务已完成')
'''
查询用户详情
初始化:读取配置,配置文件为init.config
返回字典类型的配置对象
'''
def detail(self):
url = api + '?do=detail'
data = {"uid":self.uid, "r":random.random()}
response = self.getResponse(url, data)
data = json.loads(response.text)
self.level = data['level']
self.listenSongs = data['listenSongs']
self.log('获取用户详情成功')
def init():
global api # 初始化时设置api
config = ConfigParser()
config.read('init.config', encoding='UTF-8-sig')
uin = config['token']['account']
pwd = config['token']['password']
countrycode = config['token']['countrycode']
api = config['setting']['api']
md5Switch = config.getboolean('setting','md5Switch')
peopleSwitch = config.getboolean('setting','peopleSwitch')
sckey = config['setting']['sckey']
logger.info('配置文件读取完毕')
conf = {
'uin': uin,
'pwd': pwd,
'countrycode': countrycode,
'api': api,
'md5Switch': md5Switch,
'peopleSwitch':peopleSwitch,
'sckey':sckey
}
return conf
'''
Server推送
MD5加密
str:待加密字符
返回加密后的字符
'''
def server(self):
if self.sckey == '':
return
url = 'https://sc.ftqq.com/' + self.sckey + '.send'
self.diyText() # 构造发送内容
response = requests.get(url,params={"text":self.title, "desp":self.content})
data = json.loads(response.text)
if data['errno'] == 0:
self.log('用户:' + self.name + ' Server酱推送成功')
else:
self.log('用户:' + self.name + ' Server酱推送失败,请检查sckey是否正确')
def md5(str):
hl = hashlib.md5()
hl.update(str.encode(encoding='utf-8'))
return hl.hexdigest()
'''
自定义要推送到微信的内容
title:消息的标题
content:消息的内容,支持MarkDown格式
加载Json文件
jsonPath:json文件的名字,例如account.json
'''
def diyText(self):
# today = datetime.date.today()
# kaoyan_day = datetime.date(2020,12,21) #2021考研党的末日
# date = (kaoyan_day - today).days
one = requests.get('https://api.qinor.cn/soup/').text # 每日一句的api
for count in grade:
if self.level < 10:
if self.listenSongs < 20000:
if self.listenSongs < count:
self.tip = '还需听歌' + str(count-self.listenSongs) + '首即可升级'
break
else:
self.tip = '你已经听够20000首歌曲,如果登录天数达到800天即可满级'
else:
self.tip = '恭喜你已经满级!'
if self.error == '':
state = ("- 目前已完成签到\n"
"- 今日共打卡" + str(self.dakanum) + "次\n"
"- 今日共播放" + str(self.dakaSongs) + "首歌\n"
"- 还需要打卡" + str(self.day) +"天")
self.title = ("网易云今日打卡" + str(self.dakaSongs) + "首,已播放" + str(self.listenSongs) + "首")
else:
state = self.error
self.title = '网易云听歌任务出现问题!'
self.content = (
"------\n"
"#### 账户信息\n"
"- 用户名称:" + str(self.name) + "\n"
"- 当前等级:" + str(self.level) + "级\n"
"- 累计播放:" + str(self.listenSongs) + "首\n"
"- 升级提示:" + self.tip + "\n\n"
"------\n"
"#### 任务状态\n" + str(state) + "\n\n"
"------\n"
"#### 打卡日志\n" + self.dakaSongs_list + "\n\n"
"------\n"
"#### 今日一句\n- " + one + "\n\n")
def loadJson(jsonPath):
with open(jsonPath,encoding='utf-8') as f:
account = json.load(f)
return account
'''
打印日志
检查api
'''
def log(self, text):
time_stamp = datetime.datetime.now()
print(time_stamp.strftime('%Y.%m.%d-%H:%M:%S') + ' ' + str(text))
self.time =time_stamp.strftime('%H:%M:%S')
self.list.append("- [" + self.time + "] " + str(text) + "\n\n")
def check():
url = api + '?do=check'
respones = requests.get(url)
if respones.status_code == 200:
logger.info('api测试正常')
else:
logger.error('api测试异常')
'''
开始执行
任务池
'''
def start(self):
try:
self.list = []
self.list.append("- 初始化完成\n\n")
self.login()
self.sign()
self.detail()
counter = self.listenSongs
for i in range(1,10):
self.daka()
#self.log('用户:' + self.name + ' 第' + str(i) + '次打卡成功,即将休眠10秒')
self.log('第' + str(i) + '次打卡成功,即将休眠10秒')
time.sleep(10)
self.dakanum = i
self.detail()
self.dakaSongs = self.listenSongs - counter
self.log('今日已打卡播放' + str(self.dakaSongs) + '首')
if self.dakaSongs == 300:
break
if self.listenSongs >= 20000:
self.day = 0
else:
self.day = math.ceil((20000 - self.listenSongs)/300)
self.list.append("- 打卡结束,消息推送\n\n")
self.dakaSongs_list = ''.join(self.list)
self.server()
except:
self.log('用户任务执行中断,请检查账号密码是否正确')
else:
self.log('用户:' + self.name + ' 今日任务已完成')
def taskPool():
'''
初始化:读取配置,配置文件为init.config
返回字典类型的配置对象
'''
def init():
global api # 初始化时设置api
config = ConfigParser()
config.read('init.config', encoding='UTF-8-sig')
uin = config['token']['account']
pwd = config['token']['password']
countrycode = config['token']['countrycode']
api = config['setting']['api']
md5Switch = config.getboolean('setting','md5Switch')
peopleSwitch = config.getboolean('setting','peopleSwitch')
sckey = config['setting']['sckey']
logger.info('配置文件读取完毕')
conf = {
'uin': uin,
'pwd': pwd,
'countrycode': countrycode,
'api': api,
'md5Switch': md5Switch,
'peopleSwitch':peopleSwitch,
'sckey':sckey
}
return conf
'''
MD5加密
str:待加密字符
返回加密后的字符
'''
def md5(str):
hl = hashlib.md5()
hl.update(str.encode(encoding='utf-8'))
return hl.hexdigest()
'''
加载Json文件
jsonPath:json文件的名字,例如account.json
'''
def loadJson(jsonPath):
with open(jsonPath,encoding='utf-8') as f:
account = json.load(f)
return account
'''
检查api
'''
def check():
url = api + '?do=check'
respones = requests.get(url)
if respones.status_code == 200:
logger.info('api测试正常')
else:
logger.error('api测试异常')
'''
任务池
'''
def taskPool():
config = init()
check() # 每天对api做一次检查
if config['peopleSwitch'] is True:
logger.info('多人开关已打开,即将执行进行多人任务')
account = loadJson("account.json")
for man in account:
logger.info('账号: ' + man['account'] + ' 开始执行\n========================================')
task = Task(man['account'], man['password'], man['sckey'])
config = init()
check() # 每天对api做一次检查
if config['peopleSwitch'] is True:
logger.info('多人开关已打开,即将执行进行多人任务')
account = loadJson("account.json")
for man in account:
logger.info('账号: ' + man['account'] + ' 开始执行\n========================================')
task = Task(man['account'], man['password'], man['sckey'])
task.start()
time.sleep(10)
logger.info('所有账号已全部完成任务,服务进入休眠中,等待明天重新启动')
else :
logger.info('账号: ' + config['uin'] + ' 开始执行\n========================================')
if config['md5Switch'] is True:
logger.info('MD5开关已打开,即将开始为你加密,密码不会上传至服务器,请知悉')
config['pwd'] = md5(config['pwd'])
task = Task(config['uin'], config['pwd'], config['sckey'], config['countrycode'])
task.start()
time.sleep(10)
logger.info('所有账号已全部完成任务,服务进入休眠中,等待明天重新启动')
else :
logger.info('账号: ' + config['uin'] + ' 开始执行\n========================================')
if config['md5Switch'] is True:
logger.info('MD5开关已打开,即将开始为你加密,密码不会上传至服务器,请知悉')
config['pwd'] = md5(config['pwd'])
task = Task(config['uin'], config['pwd'], config['sckey'], config['countrycode'])
task.start()
'''
程序的入口
'''
def main(event,content):
taskPool()
'''
程序的入口
'''
def main(event,content):
taskPool()
......@@ -16,7 +16,7 @@ countrycode = 86
[setting]
# 开关的选项只有 True 和 False
# 接口API,如果失效请自行部署,地址:https://github.com/ZainCheung/netease-cloud-api
api = https://netease-cloud-api.glitch.me/
api = https://163.music.520303.xyz/
# 密码是否需要MD5加密,如果是明文密码一定要打开
# true 需要, 则直接将你的密码(明文)填入password,程序会替你进行加密
......@@ -26,7 +26,7 @@ md5Switch = false
# 是否开启多账号功能,如果打开将会忽视配置文件里的账号而从account.json中寻找账号信息
# 如果选择使用多账号,请配置好account里的账号和密码,即account和password,而sckey不是必需的,如果为空则不会进行微信推送
# 介于账号安全着想,account.json中的密码必须填写md5加密过的,请不要向他人透露自己的明文密码
peopleSwitch = false
peopleSwitch = True
# Server酱的密匙,不需要推送就留空,密匙的免费申请参考:http://sc.ftqq.com/
sckey = SCU97783T70c13167b4daa422f4d419a765eb4ebb5ebc9********
2020-09-01 21:09:00 INFO:配置文件读取完毕
2020-09-01 21:09:05 INFO:api测试正常
2020-09-01 21:09:05 INFO:多人开关已打开,即将执行进行多人任务
2020-09-01 21:09:05 INFO:账号: ZainCheung@163.com 开始执行========================================
2020-09-01 21:09:08 ERROR:用户任务执行中断,请检查账号密码是否正确========================================
2020-09-01 21:09:18 INFO:账号: 15039723449 开始执行========================================
2020-09-01 21:09:21 ERROR:用户任务执行中断,请检查账号密码是否正确========================================
2020-09-01 21:09:31 INFO:所有账号已全部完成任务,服务进入休眠中,等待明天重新启动
2020-09-01 21:12:52 INFO:配置文件读取完毕
2020-09-01 21:12:55 INFO:api测试正常
2020-09-01 21:12:55 INFO:多人开关已打开,即将执行进行多人任务
2020-09-01 21:12:55 INFO:账号: ZainCheung@163.com 开始执行========================================
2020-09-01 21:12:58 ERROR:用户任务执行中断,请检查账号密码是否正确========================================
2020-09-01 21:13:24 INFO:配置文件读取完毕
2020-09-01 21:13:27 INFO:api测试正常
2020-09-01 21:13:27 INFO:多人开关已打开,即将执行进行多人任务
2020-09-01 21:13:27 INFO:账号: ZainCheung@163.com 开始执行========================================
2020-09-01 21:13:30 ERROR:用户任务执行中断,请检查账号密码是否正确========================================
2020-09-01 21:13:51 INFO:配置文件读取完毕
2020-09-01 21:13:54 INFO:api测试正常
2020-09-01 21:13:54 INFO:多人开关已打开,即将执行进行多人任务
2020-09-01 21:13:54 INFO:账号: ZainCheung@163.com 开始执行========================================
2020-09-01 21:16:07 INFO:配置文件读取完毕
2020-09-01 21:16:08 INFO:api测试正常
2020-09-01 21:16:08 INFO:多人开关已打开,即将执行进行多人任务
2020-09-01 21:16:08 INFO:账号: ZainCheung@163.com 开始执行========================================
2020-09-01 21:18:56 INFO:配置文件读取完毕
2020-09-01 21:18:56 INFO:api测试正常
2020-09-01 21:18:56 INFO:多人开关已打开,即将执行进行多人任务
2020-09-01 21:18:56 INFO:账号: ZainCheung@163.com 开始执行========================================
2020-09-01 21:18:57 INFO:登录成功
2020-09-01 21:18:57 INFO:登录成功
2020-09-01 21:18:57 INFO:重复签到
2020-09-01 21:18:58 INFO:获取用户详情成功
2020-09-01 21:19:11 INFO:配置文件读取完毕
2020-09-01 21:19:11 INFO:api测试正常
2020-09-01 21:19:11 INFO:多人开关已打开,即将执行进行多人任务
2020-09-01 21:19:11 INFO:账号: ZainCheung@163.com 开始执行========================================
2020-09-01 21:19:11 INFO:登录成功
2020-09-01 21:19:12 INFO:登录成功
2020-09-01 21:19:12 INFO:重复签到
2020-09-01 21:19:12 INFO:获取用户详情成功
2020-09-01 21:19:15 INFO:用户:ZainCheung 第1次打卡成功,即将休眠30秒
2020-09-01 21:19:24 INFO:配置文件读取完毕
2020-09-01 21:19:25 INFO:api测试正常
2020-09-01 21:19:25 INFO:多人开关已打开,即将执行进行多人任务
2020-09-01 21:19:25 INFO:账号: ZainCheung@163.com 开始执行========================================
2020-09-01 21:19:25 INFO:登录成功
2020-09-01 21:19:25 INFO:重复签到
2020-09-01 21:19:25 INFO:获取用户详情成功
2020-09-01 21:20:06 INFO:配置文件读取完毕
2020-09-01 21:20:06 INFO:api测试正常
2020-09-01 21:20:06 INFO:多人开关已打开,即将执行进行多人任务
2020-09-01 21:20:06 INFO:账号: ZainCheung@163.com 开始执行========================================
2020-09-01 21:20:07 INFO:登录成功
2020-09-01 21:20:07 INFO:重复签到
2020-09-01 21:20:07 INFO:获取用户详情成功
2020-09-01 21:20:10 INFO:用户:ZainCheung 第1次打卡成功,即将休眠30秒
2020-09-02 14:23:25 INFO:配置文件读取完毕
2020-09-02 14:23:27 INFO:api测试正常
2020-09-02 14:23:27 INFO:多人开关已打开,即将执行进行多人任务
2020-09-02 14:23:27 INFO:账号: ZainCheung@163.com 开始执行========================================
2020-09-02 14:23:28 INFO:登录成功
2020-09-02 14:23:28 INFO:重复签到
2020-09-02 14:23:28 INFO:获取用户详情成功
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册