#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ 生成软著申请所需的源代码材料 将项目主要源代码合并为一个超过6000行的文件 """ import os from pathlib import Path # 项目根目录 ROOT = Path(__file__).resolve().parent.parent OUTPUT = ROOT / "docs" / "软著申请-源代码材料.txt" # 软著申请文件头 HEADER = """=============================================================================== 智媒通 - 计算机软件著作权申请 源代码材料(前60页+后60页) =============================================================================== 软件全称:智媒通 V1.0 软件简称:智媒通 版本号:V1.0 开发完成日期:2025年 首次发表日期:2025年 权利取得方式:原始取得 权利范围:全部权利 著作权人:(请填写单位或个人名称) =============================================================================== 代码说明 =============================================================================== 本软件为多平台自媒体账号管理系统,支持抖音、快手、视频号、小红书、百家号等 主流平台,具备视频自动发布、评论统一管理、数据分析等功能。采用 Electron + Vue3 桌面客户端 + Express 后端 + Python 发布服务的架构。以下为系统核心源代码。 =============================================================================== 第一部分:平台发布基类 =============================================================================== """ # 要包含的源文件(按顺序) SOURCE_FILES = [ ROOT / "server" / "python" / "platforms" / "base.py", ROOT / "server" / "python" / "app.py", ROOT / "server" / "python" / "platforms" / "weixin.py", ROOT / "server" / "python" / "platforms" / "xiaohongshu.py", ROOT / "server" / "python" / "platforms" / "baijiahao.py", ROOT / "server" / "python" / "platforms" / "douyin.py", ROOT / "server" / "python" / "platforms" / "kuaishou.py", ] def add_section_header(content: str, title: str) -> str: """在内容前添加章节标题""" return f"\n\n{'='*80}\n {title}\n{'='*80}\n\n{content}" def main(): lines = [] # 添加文件头 lines.extend(HEADER.splitlines()) for i, filepath in enumerate(SOURCE_FILES): if not filepath.exists(): print(f"跳过不存在的文件: {filepath}") continue with open(filepath, "r", encoding="utf-8", errors="replace") as f: content = f.read() # 添加文件路径说明 rel_path = filepath.relative_to(ROOT) section_title = f"文件: {rel_path}" content_with_header = add_section_header(content, section_title) lines.extend(content_with_header.splitlines()) print(f"已添加: {rel_path} ({len(content.splitlines())} 行)") full_content = "\n".join(lines) line_count = len(lines) # 确保超过6000行 if line_count < 6000: # 添加补充说明 supplement = f""" {'='*80} 补充说明 {'='*80} 本系统还包括以下模块的源代码: - 客户端:Electron + Vue3 前端界面(client/) - 服务端:Node.js Express API 和 TypeORM 数据模型(server/src/) - 共享库:TypeScript 类型定义和常量(shared/) - 数据库:MySQL 表结构定义(database/) 总代码量超过 20000 行,以上为系统核心业务逻辑的代表性代码。 """ lines.extend(supplement.splitlines()) full_content = "\n".join(lines) line_count = len(lines) # 写入输出文件 OUTPUT.parent.mkdir(parents=True, exist_ok=True) with open(OUTPUT, "w", encoding="utf-8") as f: f.write(full_content) print(f"\n[OK] 生成完成: {OUTPUT}") print(f" 总行数: {line_count} 行") if line_count >= 6000: print(f" [OK] 已满足软著申请6000行以上要求") else: print(f" [WARN] 未达到6000行,当前为 {line_count} 行") if __name__ == "__main__": main()