admin管理员组

文章数量:1529446

运行效果如下:

源码如下,可根据需求做进一步调整和改进:

import os
import openai   #pip install openai==0.28.0
import random
#代理网址
openai.api_base = "https://api.openai-proxy/v1"

# 将你的多个 API 密钥放在这个列表中,2024.3.2更新5$key
api_keys = [
"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",

]

used_api_keys = []

def write_novel_chapter(api_key, message):
    """使用OpenAI的API模型来总结文件"""
    try:
        openai.api_key = api_key  # 设置当前使用的 API 密钥
        response = openai.ChatCompletion.create(
            model="gpt-3.5-turbo-1106",
            temperature=0.1,
            messages=[
                {
                    "role": "system",
                    "content": f"你的任务是使用中文提取关键信息为json格式,并给出一段总结:"
                },
                {"role": "user", "content": message},
            ],
            max_tokens=1000,
        )
        generated_text = response['choices'][0]['message']['content']
        return generated_text
    except Exception as e:
        pass

def process_and_save_summaries(input_folder, output_folder):
    """处理每个txt文件并将总结保存到目标文件夹"""
    global used_api_keys
    try:
        total_folders = len(os.listdir(input_folder))
        current_folder_count = 0

        for folder_name in os.listdir(input_folder):
            current_folder_count += 1
            folder_path = os.path.join(input_folder, folder_name)
            if os.path.isdir(folder_path):
                output_folder_path = os.path.join(output_folder, folder_name)
                os.makedirs(output_folder_path, exist_ok=True)

                total_files = sum(file.endswith(".txt") for file in os.listdir(folder_path))
                current_file_count = 0

                for file_name in os.listdir(folder_path):
                    if file_name.endswith(".txt"):
                        current_file_count += 1
                        input_file_path = os.path.join(folder_path, file_name)
                        output_file_path = os.path.join(output_folder_path, file_name)

                        with open(input_file_path, 'r', encoding='utf-8') as file:
                            content = file.read()

                        available_keys = [key for key in api_keys if key not in used_api_keys]

                        if not available_keys:
                            # 所有密钥已使用过,重新开始循环
                            used_api_keys = []
                            available_keys = api_keys[:]

                        selected_api_key = random.choice(available_keys)
                        used_api_keys.append(selected_api_key)
                        print(f"正在处理第{current_folder_count}个文件夹 {folder_name} 的第{current_file_count}个文件:  {file_name},使用的 API 密钥:{selected_api_key}")

                        summary = write_novel_chapter(selected_api_key, content)
                        if summary is not None:
                            with open(output_file_path, 'w', encoding='utf-8') as file:
                                file.write(summary)

                        # 打印进度信息
                        print(f"第{current_folder_count}个文件夹 {folder_name} 的第{current_file_count}个文件: {file_name} 处理完毕,当前完成进度:{current_file_count}/{total_files}")
                        print("---------------------------------------------------------------------")
                # 打印文件夹处理完毕的信息
                print(f"第{current_folder_count}个文件夹: {folder_name} 处理完毕,当前完成进度:{current_folder_count}/{total_folders}")
                print("------------------------------------------------------------------------------------------------------------------------")

    except Exception as e:
        pass

import os

if __name__ == "__main__":
    try:
        input_folder_path = r"C:\Users\c\Desktop\novel"
        output_folder_path = r"C:\Users\c\Desktop\summuary"

        # 检查输出文件夹是否存在,如果不存在就创建它
        if not os.path.exists(output_folder_path):
            os.makedirs(output_folder_path)

        process_and_save_summaries(input_folder_path, output_folder_path)

    except Exception as e:
        print(f"程序执行时出现错误: {e}")
    finally:
        print("程序执行完毕。")

感谢朋友们阅读,下期再见!!!

本文标签: 批量源码关键文件最新