1414
1515
1616class DuplicatesPipeline :
17- """去重Pipeline,支持跨天去重检查(最近15天)"""
17+ """去重Pipeline,支持跨天去重检查(最近15天),从AI增强文件中加载已有论文ID """
1818
1919 def __init__ (self ):
2020 self .seen_ids = set ()
@@ -28,7 +28,7 @@ def open_spider(self, spider):
2828 self .load_recent_ids ()
2929
3030 def get_recent_date_files (self ):
31- """获取最近15天的数据文件路径 """
31+ """获取最近15天的AI增强数据文件路径 """
3232 current_dir = os .path .dirname (os .path .abspath (__file__ ))
3333 data_path = os .path .join (current_dir , self .data_dir )
3434
@@ -44,27 +44,47 @@ def get_recent_date_files(self):
4444 date = today - timedelta (days = i )
4545 recent_dates .append (date .strftime ("%Y-%m-%d" ))
4646
47- # 查找对应日期的.jsonl文件
47+ # 查找对应日期的AI增强文件,支持多种语言
4848 recent_files = []
4949 for date_str in recent_dates :
50- file_pattern = os .path .join (data_path , f"{ date_str } .jsonl" )
51- if os .path .exists (file_pattern ):
52- recent_files .append (file_pattern )
50+ # 查找所有可能的AI增强文件模式
51+ ai_enhanced_patterns = [
52+ f"{ date_str } _AI_enhanced_Chinese.jsonl" ,
53+ f"{ date_str } _AI_enhanced_English.jsonl" ,
54+ f"{ date_str } _AI_enhanced_*.jsonl"
55+ ]
56+
57+ for pattern in ai_enhanced_patterns :
58+ if '*' in pattern :
59+ # 使用glob匹配通配符模式
60+ file_pattern = os .path .join (data_path , pattern )
61+ matching_files = glob .glob (file_pattern )
62+ recent_files .extend (matching_files )
63+ else :
64+ # 直接检查文件是否存在
65+ file_path = os .path .join (data_path , pattern )
66+ if os .path .exists (file_path ):
67+ recent_files .append (file_path )
68+
69+ # 去重(因为可能有重复的文件路径)
70+ recent_files = list (set (recent_files ))
5371
5472 return recent_files
5573
5674 def load_recent_ids (self ):
57- """加载最近15天数据中的所有论文ID """
75+ """加载最近15天AI增强数据中的所有论文ID """
5876 try :
5977 recent_files = self .get_recent_date_files ()
6078
6179 if not recent_files :
6280 if self .logger :
63- self .logger .info ("未找到最近15天的历史数据文件 ,将进行首次运行去重检查" )
81+ self .logger .info ("未找到最近15天的AI增强历史数据文件 ,将进行首次运行去重检查" )
6482 return
6583
6684 if self .logger :
67- self .logger .info (f"找到 { len (recent_files )} 个最近15天的数据文件" )
85+ self .logger .info (f"找到 { len (recent_files )} 个最近15天的AI增强数据文件" )
86+ for file_path in recent_files :
87+ self .logger .debug (f"加载文件: { os .path .basename (file_path )} " )
6888
6989 for file_path in recent_files :
7090 try :
@@ -84,11 +104,11 @@ def load_recent_ids(self):
84104 self .logger .error (f"读取文件错误 { os .path .basename (file_path )} : { e } " )
85105
86106 if self .logger :
87- self .logger .info (f"已加载 { len (self .seen_ids )} 个论文ID用于去重检查" )
107+ self .logger .info (f"已从AI增强文件中加载 { len (self .seen_ids )} 个论文ID用于去重检查" )
88108
89109 except Exception as e :
90110 if self .logger :
91- self .logger .error (f"加载最近15天ID时出错 : { e } " )
111+ self .logger .error (f"加载最近15天AI增强数据ID时出错 : { e } " )
92112
93113 def process_item (self , item , spider ):
94114 """检查论文ID是否重复"""
0 commit comments