import sys
import csv

def compare_files(file_a, file_b):
    """
    比较两个文件，并输出差异

    Args:
        file_a (str): 文件 A 的路径
        file_b (str): 文件 B 的路径
    """

    try:
        # 创建输出文件
        with open('need_update.txt', 'w', newline='') as f_update, \
             open('old_only.txt', 'w', newline='') as f_b_only:
            writer_update = csv.writer(f_update, delimiter='\t')
            writer_b_only = csv.writer(f_b_only, delimiter='\t')

            # 读取文件 A
            data_a = {}  # 使用字典存储，key为开始链接编码，value为整行数据
            with open(file_a, 'r') as f:
                reader = csv.reader(f, delimiter='\t')
                for row in reader:
                    data_a[row[6]] = row

            # 读取文件 B
            data_b = {}
            with open(file_b, 'r') as f:
                reader = csv.reader(f, delimiter='\t')
                for row in reader:
                    data_b[row[6]] = row

            # 比较并输出
            for key, value in data_a.items():
                if key not in data_b:
                    writer_update.writerow(value)
                else:
                    if abs(int(value[8]) - int(data_b[key][8])) > 100:
                        writer_update.writerow(value)

            for key, value in data_b.items():
                if key not in data_a:
                    writer_b_only.writerow(value)

    except FileNotFoundError:
        print(f"文件不存在: {file_a} 或 {file_b}")
    except csv.Error as e:
        print(f"CSV文件读取错误: {e}")
    except Exception as e:
        print(f"发生未知错误: {e}")

if __name__ == '__main__':
    if len(sys.argv) != 3:
        print("Usage: python script.py file_a file_b")
        print("file_a : 新下载的列表，通常按照更新时间排序")
        print("file_b : 以前下载的列表")
        print("输出 need_update.txt : 需要更新的列表")
        print("输出 old_only.txt : 仅在较早下载列表中的行，通常不应该有")
        sys.exit(1)

    file_a = sys.argv[1]
    file_b = sys.argv[2]
    compare_files(file_a, file_b)