(self)
| 2647 | return deleted |
| 2648 | |
| 2649 | def clean_duplicate_files_cloud(self): |
| 2650 | token = getattr(self.cloudDisk, 'userToken', '') |
| 2651 | if not token: |
| 2652 | return |
| 2653 | self.log("云盘任务: 开始清理云盘重复文件") |
| 2654 | cloud_headers = { |
| 2655 | 'User-Agent': "Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) LianTongYunPan/5.1.0 (iPhone; iOS 16.6)", |
| 2656 | 'Accept': 'application/json, text/plain, */*', |
| 2657 | 'Content-Type': 'application/json', |
| 2658 | 'Accept-Encoding': 'br;q=1.0, gzip;q=0.9, deflate;q=0.8', |
| 2659 | 'Access-Token': token, 'X-YP-Access-Token': token, |
| 2660 | 'Client-Id': '1001000035', 'X-YP-Client-Id': '1001000035', |
| 2661 | 'App-Version': 'yp-app/5.1.0', 'app-type': 'liantongyunpanapp', |
| 2662 | 'Sys-Version': 'iOS/16.6', |
| 2663 | } |
| 2664 | uploaded_count = int(getattr(self.cloudDisk, 'uploadedFileCount', 0) or 0) |
| 2665 | retry_count = 6 if uploaded_count > 0 else 1 |
| 2666 | task_id = "" |
| 2667 | file_ids = [] |
| 2668 | for attempt in range(1, retry_count + 1): |
| 2669 | try: |
| 2670 | res = self.session.post( |
| 2671 | self.cloudDiskUrls['getScanState'], json={ |
| 2672 | "pathLevelList": [{"levelType": "space", "levelName": "个人云", "busId": "0"}] |
| 2673 | }, headers=cloud_headers, timeout=10, |
| 2674 | ).json() |
| 2675 | except Exception as e: |
| 2676 | self.log(f"云盘任务: 获取扫描状态失败: {e}") |
| 2677 | return |
| 2678 | if res.get('meta', {}).get('code') != '200': |
| 2679 | self.log("云盘任务: 获取扫描状态失败") |
| 2680 | return |
| 2681 | task_id = "" |
| 2682 | for item in res.get('result', {}).get('subTaskList', []): |
| 2683 | if item.get('taskId'): |
| 2684 | task_id = item['taskId'] |
| 2685 | break |
| 2686 | if task_id: |
| 2687 | file_ids = [] |
| 2688 | page = max_page = 1 |
| 2689 | while page <= max_page: |
| 2690 | try: |
| 2691 | page_res = self.session.post( |
| 2692 | self.cloudDiskUrls['getCleanData'], json={ |
| 2693 | "pageNum": page, "taskId": task_id, "type": 3, "pageSize": 50, |
| 2694 | }, headers=cloud_headers, timeout=10, |
| 2695 | ).json() |
| 2696 | except Exception as e: |
| 2697 | self.log(f"云盘任务: 获取第{page}页清理数据失败: {e}") |
| 2698 | return |
| 2699 | if page_res.get('meta', {}).get('code') != '200': |
| 2700 | break |
| 2701 | max_page = page_res.get('result', {}).get('maxPageNum', 1) |
| 2702 | for group in page_res.get('result', {}).get('fileGroupList', []): |
| 2703 | for fi, file_item in enumerate(group.get('fileList', [])): |
| 2704 | if fi <= 0 or not file_item.get('fileId'): |
| 2705 | continue |
| 2706 | file_ids.append({"fileId": file_item['fileId'], "spaceType": file_item.get('spaceType', '0')}) |
no test coverage detected