diff --git "a/account - \345\211\257\346\234\254.json" "b/account - \345\211\257\346\234\254.json" new file mode 100644 index 0000000000000000000000000000000000000000..6610e82cb53eac848c4898d8bc384ddd34b2eccd --- /dev/null +++ "b/account - \345\211\257\346\234\254.json" @@ -0,0 +1,17 @@ +[ + { + "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 diff --git a/account.json b/account.json index e241895948304bd90aca9e2c043e821111f1c19a..21bf2c62d62fdb9b0fd816b234799ade73e0a637 100644 --- a/account.json +++ b/account.json @@ -1,17 +1,7 @@ [ { "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 diff --git a/docs/_sidebar.md b/docs/_sidebar.md index 2cc6b80bd849d65ea298ce6d3ccd945e50f7e59e..ce2801c27012e1a6ad75c3ac68324ef5bc79c632 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -15,6 +15,7 @@ * * [播放次数](show/count "刷单曲播放次数") * [项目配置](config/) * [接口文档](document/) +* [API接口](demo/) * [下载地址](download/) * [查看日志](log/) * [注意事项](attention/) diff --git a/docs/api/remix.md b/docs/api/remix.md index c2e16a52fd7a01f1ee70c3d99af7fb19f8e68ef8..6e40b0475d59a76ba49187107dea5d942b452832 100644 --- a/docs/api/remix.md +++ b/docs/api/remix.md @@ -1,6 +1,6 @@ ## 直接复制项目 {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) diff --git a/docs/demo/README.md b/docs/demo/README.md new file mode 100644 index 0000000000000000000000000000000000000000..1fe2479502bf202217474fe845f4438465138e4d --- /dev/null +++ b/docs/demo/README.md @@ -0,0 +1,11 @@ +# 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 | √ | + diff --git a/docs/document/README.md b/docs/document/README.md index 6958c4c4fd8df25b17cb0397f0bdaa99124ee600..a75381020ad71607f50ed96a67fe23fee91a003f 100644 --- a/docs/document/README.md +++ b/docs/document/README.md @@ -2,7 +2,7 @@ ## 调用前须知 -!> 本项目不提供线上 demo,请不要轻易信任使用他人提供的公开服务,如果使用,填写密码时一定要自己加密MD5,以免发生安全问题,泄露自己的账号和密码。 +!> 请不要轻易信任使用他人提供的公开服务,如果使用,填写密码时一定要自己加密MD5,以免发生安全问题,泄露自己的账号和密码。 !> 为使用方便,降低门槛, 文档示例接口直接使用了 GET 请求,本项目同时支持 GET/POST 请按实际需求使用 diff --git a/docs/download/README.md b/docs/download/README.md index 96f5cc6adaf31067c6067efc346e1fee53b0a9c3..0f9efb2f09d69944491488bd3cc61a2482a55a6a 100644 --- a/docs/download/README.md +++ b/docs/download/README.md @@ -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) diff --git a/index.py b/index.py index 8ae4ee40e11daa121284287d4cdd3b2d87e3aca0..6b38aae2d0a855f99cf8c96073e10e05fa903c88 100644 --- a/index.py +++ b/index.py @@ -1,284 +1,284 @@ -#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() diff --git a/init.config b/init.config index 8cb700f1d6409e2689c5449cf7328916998bcf84..da29277ef6988f56b324d94678040e11c0d33595 100644 --- a/init.config +++ b/init.config @@ -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******** diff --git a/run.log b/run.log index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fe447b75c3b9d22651d2bcd97d49c021ecd90a1a 100644 --- a/run.log +++ b/run.log @@ -0,0 +1,65 @@ +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:获取用户详情成功