Browse Source

table_id动态传入

jihuaqiang 1 week ago
parent
commit
c547658452
2 changed files with 62 additions and 14 deletions
  1. 29 6
      xhs/README.md
  2. 33 8
      xhs/content_identify.py

+ 29 - 6
xhs/README.md

@@ -10,7 +10,7 @@
 
 ## 环境配置
 
-### 必需的环境变量
+### 环境变量配置
 
 在 `.env` 文件中设置以下环境变量:
 
@@ -19,15 +19,17 @@
 FEISHU_APP_ID=your_app_id
 FEISHU_APP_SECRET=your_app_secret
 FEISHU_FILE_TOKEN=your_file_token
-FEISHU_TABLE_ID=your_table_id
+FEISHU_TABLE_ID=your_table_id    # 可选,也可在运行时传入
 
 # 可选:自定义字段名称
 FEISHU_INPUT_FIELD=抓取结果      # 输入内容字段名
 FEISHU_OUTPUT_FIELD=识别结果     # 输出结果字段名
-FEISHU_TITLE_FIELD=标题          # 标题字段名
-FEISHU_IMAGE_FIELD=图片链接      # 图片链接字段名
 ```
 
+**注意**:`FEISHU_TABLE_ID` 可以通过以下方式设置(优先级从高到低):
+1. 命令行参数:`python content_identify.py tblNdje7z6Cf3hax`
+2. 环境变量:`FEISHU_TABLE_ID=your_table_id`
+
 ### 飞书表格结构
 
 飞书表格应包含以下字段:
@@ -40,20 +42,41 @@ FEISHU_IMAGE_FIELD=图片链接      # 图片链接字段名
 
 ### 1. 直接运行脚本
 
+#### 使用环境变量中的表格ID
 ```bash
 cd xhs
 python content_identify.py
 ```
 
+#### 运行时动态传入表格ID
+```bash
+cd xhs
+python content_identify.py tblNdje7z6Cf3hax
+```
+
+#### 其他命令行选项
+```bash
+# 试运行模式(只显示会处理的记录,不实际调用API)
+python content_identify.py tblNdje7z6Cf3hax --dry-run
+
+# 从指定分页token开始处理
+python content_identify.py tblNdje7z6Cf3hax --page-token VEBsbCfaWa3gF3slQILc6Rybnde
+
+# 查看帮助信息
+python content_identify.py --help
+```
+
 ### 2. 在代码中调用
 
 ```python
 from xhs.content_identify import ContentIdentifier
 
-# 创建实例
+# 使用环境变量中的表格ID
 identifier = ContentIdentifier()
+identifier.process_all_records()
 
-# 处理所有记录
+# 或者动态传入表格ID
+identifier = ContentIdentifier(table_id='tblNdje7z6Cf3hax')
 identifier.process_all_records()
 ```
 

+ 33 - 8
xhs/content_identify.py

@@ -1,12 +1,12 @@
 import os
 import json
 import time
+import sys
+import argparse
 from typing import Dict, Any, List, Optional
 from dotenv import load_dotenv
 
 # 导入自定义模块
-import sys
-import os
 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
 
 from utils.fei_shu import FeiShu
@@ -14,7 +14,7 @@ from coze.coze_hook import CozeHook
 
 
 class ContentIdentifier:
-    def __init__(self):
+    def __init__(self, table_id: Optional[str] = None):
         # 加载环境变量
         load_dotenv()
         
@@ -24,10 +24,10 @@ class ContentIdentifier:
         # 初始化Coze客户端
         self.coze = CozeHook()
         
-        # 从环境变量获取配置
-        self.table_id = os.getenv('FEISHU_TABLE_ID')
+        # 获取表格ID:优先使用传入的参数,其次使用环境变量
+        self.table_id = table_id or os.getenv('FEISHU_TABLE_ID')
         if not self.table_id:
-            raise ValueError("请设置环境变量 FEISHU_TABLE_ID")
+            raise ValueError("请设置环境变量 FEISHU_TABLE_ID 或在运行时传入 table_id 参数")
         
         # 字段名称配置
         self.input_field = os.getenv('FEISHU_INPUT_FIELD', '抓取结果')
@@ -250,11 +250,36 @@ class ContentIdentifier:
 
 def main():
     """主函数"""
+    # 创建命令行参数解析器
+    parser = argparse.ArgumentParser(description='内容识别脚本 - 处理飞书表格数据')
+    parser.add_argument('table_id', nargs='?', help='飞书表格ID (可选,也可通过环境变量 FEISHU_TABLE_ID 设置)')
+    parser.add_argument('--page-token', help='分页token,用于从指定位置开始处理')
+    parser.add_argument('--dry-run', action='store_true', help='试运行模式,只显示会处理哪些记录,不实际调用API')
+    
+    args = parser.parse_args()
+    
     try:
-        identifier = ContentIdentifier()
-        identifier.process_all_records()
+        # 创建内容识别器实例
+        identifier = ContentIdentifier(table_id=args.table_id)
+        
+        print(f"使用表格ID: {identifier.table_id}")
+        
+        if args.dry_run:
+            print("试运行模式:只显示会处理的记录,不实际调用API")
+            # TODO: 实现试运行模式
+            identifier.process_all_records()
+        else:
+            # 正常处理模式
+            if args.page_token:
+                print(f"从分页token开始处理: {args.page_token}")
+                # TODO: 支持从指定分页token开始处理
+                identifier.process_all_records()
+            else:
+                identifier.process_all_records()
+                
     except Exception as e:
         print(f"程序执行失败: {e}")
+        sys.exit(1)
 
 
 if __name__ == "__main__":