获取任务列表
(self)
| 643 | self.http.headers['platform'] = original_platform |
| 644 | |
| 645 | def get_task_list(self) -> List[Dict]: |
| 646 | """获取任务列表""" |
| 647 | url = 'https://mcs-mimp-web.sf-express.com/mcs-mimp/commonPost/~memberNonactivity~integralTaskStrategyService~queryPointTaskAndSignFromES' |
| 648 | |
| 649 | all_tasks = [] |
| 650 | task_codes_seen = set() |
| 651 | |
| 652 | for channel_type in ['1', '2', '3', '4','01','02','03','04']: |
| 653 | data = { |
| 654 | 'channelType': channel_type, |
| 655 | 'deviceId': self.generate_device_id(), |
| 656 | } |
| 657 | |
| 658 | response = self.http.request(url, data=data) |
| 659 | |
| 660 | if response and response.get('success') and response.get('obj'): |
| 661 | # 只在第一次请求时获取总积分 |
| 662 | if channel_type == '1': |
| 663 | self.total_points = response['obj'].get('totalPoint', 0) |
| 664 | |
| 665 | tasks = response['obj'].get('taskTitleLevels', []) |
| 666 | |
| 667 | # 去重添加任务 |
| 668 | for task in tasks: |
| 669 | task_code = task.get('taskCode') |
| 670 | task_title = task.get('title', '未知任务') |
| 671 | |
| 672 | # 尝试提取taskId |
| 673 | if 'buttonRedirect' in task: |
| 674 | extracted_id = self._extract_task_id_from_url(task['buttonRedirect']) |
| 675 | if extracted_id and not task_code: |
| 676 | task_code = extracted_id |
| 677 | task['taskCode'] = extracted_id |
| 678 | |
| 679 | # 如果taskCode为空,但能从buttonRedirect中提取到taskId,则使用提取的taskId |
| 680 | if not task_code and 'buttonRedirect' in task: |
| 681 | extracted_id = self._extract_task_id_from_url(task['buttonRedirect']) |
| 682 | if extracted_id: |
| 683 | task['taskCode'] = extracted_id |
| 684 | task_code = extracted_id |
| 685 | |
| 686 | # 如果taskCode仍然为空,则跳过 |
| 687 | if not task_code: |
| 688 | continue |
| 689 | |
| 690 | # 检查是否已存在相同taskCode的任务 |
| 691 | if task_code not in task_codes_seen: |
| 692 | task_codes_seen.add(task_code) |
| 693 | all_tasks.append(task) |
| 694 | else: |
| 695 | error_msg = response.get('errorMessage', '未知错误') if response else '请求失败' |
| 696 | self.logger.warning(f'获取 channelType={channel_type} 的任务失败: {error_msg}') |
| 697 | |
| 698 | return all_tasks |
| 699 | |
| 700 | def execute_task(self) -> bool: |
| 701 | """执行单个任务""" |
no test coverage detected