Exemplo n.º 1
0
 def __init__(self):
     Tool.cls()
     if settings.user_token != "0" and settings.user_token != "":
         _logger.i("尝试复用token")
         res = requests.get(
             url=
             'https://gateway.vocabgo.com/Student/Main?timestamp={}&versions={}'
             .format(Tool.time(), CDR_VERSION),
             headers=settings.header)
         code = res.json()["code"]
         res.close()
         if code == 1:
             _logger.i("授权成功")
             _logger.i("user_token:" + settings.user_token, is_show=False)
             return
         else:
             _logger.i("曾用token已失效,重新执行授权流程!")
     Login._generate_qr_code()
     res = requests.get(
         url=
         'https://gateway.vocabgo.com/Student/Main?timestamp={}&versions={}'
         .format(Tool.time(), CDR_VERSION),
         headers=settings.header)
     code = res.json()["code"]
     res.close()
     count = 0
     while code != 1:
         _logger.i("等待授权中......")
         count = count + 1
         time.sleep(5)
         if count == 6:
             count = 0
             _logger.v("1. 继续等待\n2. 重新生成二维码\n\n0. 返回上一级")
             code_type = input("请输入指令:")
             if code_type == "1":
                 continue
             elif code_type == "2":
                 Login._generate_qr_code()
                 continue
             elif code_type == "0":
                 return
             else:
                 sys.exit(0)
         res = requests.get(
             url=
             'https://gateway.vocabgo.com/Student/Main?timestamp={}&versions={}'
             .format(Tool.time(), CDR_VERSION),
             headers=settings.header)
         code = res.json()["code"]
         res.close()
     _logger.i("授权成功")
     os.remove(f"{CONFIG_DIR_PATH}授权二维码.jpg")
     settings.save()
     return
Exemplo n.º 2
0
 async def run(self):
     course_id = self.__course_id
     task_list, json_data = await MyselfTask.get_task_list(course_id)
     Tool.cls()
     while True:
         _logger.v("请输入序号去选择要做的任务:\n")
         _logger.v(f"{json_data['course_name']}\n当前进度:{json_data['progress']}%\n"
                   + f"累计用时:{Tool.convert_time(json_data['time_spent'])}")
         for i, task in enumerate(task_list):
             _logger.v(f"{i + 1:2d}. {task['task_name']:20s} [{task['progress']}%]({task['score']:2.1f}分)")
         _logger.v("\n#.  以空格分割可一次性选择多个任务")
         _logger.v(f"#.  你可以在“main{CONFIG_DIR_PATH[1:]}config.txt文件”中修改配置项以控分/修改做题时间间隔等")
         _logger.v("\n\n0.  选择全部任务\n\n请输入序号:", end="")
         choose = ' '.join(input("").split()).split(" ")
         _logger.v(choose, is_show=False)
         task_choose_list = []
         tem_flag = True
         if CDRTask.check_input_data(choose[0], 0):
             task_choose_list = task_list
         else:
             for c in choose:
                 if not CDRTask.check_input_data(c, len(task_list)):
                     tem_flag = False
                     Tool.cls()
                     _logger.i("输入格式有误!\n")
                     break
                 task_choose_list.append(task_list[int(c) - 1])
         if tem_flag:
             break
     # 课程单词预处理加载
     self._courses_set.add(course_id)
     course_map = await self.course_pretreatment()
     Tool.cls()
     for task in task_choose_list:
         self._tasks.add_task([
             self.do_task(task, course_id, course_map[course_id])
             for _ in range(settings.multiple_task)
         ])
     await self.start_task()
     _logger.i("本次全部任务已完成!")
     input("按回车键返回上一级")
Exemplo n.º 3
0
def do_homework():
    Login()
    URL.load_main()
    #   模拟加载流程
    requests.options("https://app.vocabgo.com/student/",
                     headers=settings.header).close()
    res = requests.get(
        "https://gateway.vocabgo.com/Student/Main?timestamp="
        f"{Tool.time()}&versions={CDR_VERSION}",
        headers=settings.header)
    json = res.json()["data"]
    res.close()
    #   模拟加载流程
    requests.get(
        "https://gateway.vocabgo.com/Student/Contest/List?timestamp="
        f"{Tool.time()}&versions={CDR_VERSION}",
        headers=settings.header).close()
    timestamp = Tool.time()
    sign = Tool.md5(
        f'return_url=https%3A%2F%2Fapp.vocabgo.com%2Foverall%2F&timestamp={timestamp}'
        f'&versions={CDR_VERSION}ajfajfamsnfaflfasakljdlalkflak')
    data = {
        "return_url": "https%3A%2F%2Fapp.vocabgo.com%2Foverall%2F",
        "timestamp": timestamp,
        "versions": CDR_VERSION,
        "sign": sign
    }
    res = requests.post(url='https://gateway.vocabgo.com/Auth/Wechat/Config',
                        headers=settings.header,
                        json=data)
    _logger.i("WechatConfig:")
    _logger.i(res.content.decode("utf8"))
    res.close()
    time.sleep(1)
    #   信息显示
    Tool.cls()
    loop = asyncio.get_event_loop()
    while True:
        if json['user_info'].get('class_name') is None:
            _logger.v(f"\n{json['user_info']['student_name']}(未加入班级)\n")
        else:
            _logger.v(
                f"\n{json['user_info']['student_name']}({json['user_info']['class_name']})\n"
            )
        _logger.v("1.班级任务\n2.自选任务\n3.删除本地授权信息(可更换账号刷题)"
                  "\n4.打开配置文件(关闭后将自动重载配置文件,记得保存)"
                  "\n\n#.加群1085739587免费获取最新版,更少的BUG、更高的准确率\n\n0.退出\n")
        settings.save()
        choose = input("请输入序号:")
        if choose == "1":
            _logger.i("正在加载任务列表中,请稍等......")
            loop.run_until_complete(ClassTask().run())
            Tool.cls()
        elif choose == "2":
            _logger.i("正在加载任务列表中,请稍等......")
            URL.load_myself_task_list()
            loop.run_until_complete(
                MyselfTask(json['user_info']['course_id']).run())
            Tool.cls()
        elif choose == "3":
            settings.user_token = ""
            settings.save()
            Login()
            Tool.cls()
        elif choose == "4":
            os.system(f'notepad {CONFIG_DIR_PATH + "config.txt"}')
            settings.reload()
            Tool.cls()
        elif choose == "0":
            aiorequset.close_session()
            sys.exit(0)
        else:
            Tool.cls()
            _logger.i("输入格式有误!\n")
        res = requests.get(
            "https://gateway.vocabgo.com/Student/Main?timestamp="
            f"{Tool.time()}&versions={CDR_VERSION}",
            headers=settings.header)
        json = res.json()["data"]
        res.close()
Exemplo n.º 4
0
 async def run(self):
     task_type_list = ["未知", "学习", "测试"]
     over_status_list = ["未知", "未开始", "进行中", "已过期"]
     time_type_list = ["未知", "开始", "截止", "截止"]
     task_list = await ClassTask.get_task_list()
     #   任务选择
     if len(task_list) == 0:
         _logger.i("全部任务已完成,无可做任务")
         input("按回车键返回上一级")
         return
     Tool.cls()
     while True:
         _logger.v("请输入序号去选择要做的任务:\n")
         for i, task in enumerate(task_list):
             time_stamp = task['start_time']
             if task['over_status'] != 1:
                 time_stamp += task['over_time']
             time_stamp /= 1000
             _logger.i(time_stamp, is_show=False)
             import time
             format_time = time.strftime("%m{m}%d{d} %H:%M:%S", time.localtime(time_stamp)).format(m="月", d="号")
             _logger.i(format_time, is_show=False)
             _logger.v(f"{i + 1:2d}. [{task_type_list[task['task_type']]}]"
                       + f"[{over_status_list[task['over_status']]}] {task['task_name']:20s}"
                       + f"({task['score']:2.1f}分) {format_time}{time_type_list[task['over_status']]}")
         _logger.v("\n#.  以空格分割可一次性选择多个任务")
         _logger.v(f"#.  你可以在“main{CONFIG_DIR_PATH[1:]}config.txt文件”中修改配置项以控分/修改做题时间间隔等")
         _logger.v("\n\n0.  选择全部任务\n\n请输入序号:", end="")
         choose = ' '.join(input("").split()).split(" ")
         _logger.v(choose, is_show=False)
         task_choose_list = []
         tem_flag = True
         if CDRTask.check_input_data(choose[0], 0):
             task_choose_list = task_list
         else:
             for c in choose:
                 if not CDRTask.check_input_data(c, len(task_list)):
                     tem_flag = False
                     Tool.cls()
                     _logger.i("输入格式有误!\n")
                     break
                 task_choose_list.append(task_list[int(c) - 1])
         if tem_flag:
             break
     # 课程单词预处理加载
     for task in task_choose_list:
         course_id = task.get("course_id") or re.match(r'.*/(.*)\.jpg', task["course_img_url"]).group(1)
         self._courses_set.add(course_id)
     course_map = await self.course_pretreatment()
     Tool.cls()
     for task in task_choose_list:
         # 未过期任务
         #   over_status为任务标识,1:未开始 2:进行中 3:已过期
         #   task_id仅作为辅助标识,若任务是多单元混合,其为-1,若是单独,则其为对应课程号
         #   task_type为任务类型标识(未证实) 1:学习任务 2:测试任务
         course_id = task.get("course_id") or re.match(r'.*/(.*)\.jpg', task["course_img_url"]).group(1)
         self._tasks.add_task([
             self.do_task(task, course_id, course_map[course_id])
             for _ in range(settings.multiple_task)
         ])
     await self.start_task()
     # 防止线程数量不足而独立于主线程完成任务
     # self._progress.clear()
     _logger.i("本次全部任务已完成!")
     input("按回车键返回上一级")