Skip to content

tate233/todolist

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

322 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

智能笔记管理系统

Python Version License

一个功能强大的智能笔记管理系统,支持Markdown编辑、全文搜索、知识图谱可视化等高级功能。

项目简介

智能笔记管理系统是一个基于Python开发的桌面应用程序,专为知识工作者设计。它提供了完整的笔记管理功能,包括Markdown编辑、分类管理、标签系统、全文搜索和知识图谱等,帮助用户高效地组织和管理个人知识库。

核心特性

  • 📝 Markdown编辑器 - 完整支持Markdown语法,实时预览
  • 🔍 智能搜索 - 基于TF-IDF的全文搜索引擎
  • 🏷️ 标签系统 - 灵活的标签管理,支持多标签
  • 📁 分类管理 - 按分类组织笔记,支持自定义分类
  • 🕸️ 知识图谱 - 可视化笔记之间的关联关系
  • ⭐ 收藏功能 - 快速标记重要笔记
  • 📊 统计分析 - 字数统计、阅读时间估算
  • 💾 自动保存 - 防止数据丢失
  • 📤 导入导出 - 支持Markdown和文本格式

技术栈

  • 编程语言: Python 3.12+
  • GUI框架: Tkinter
  • Markdown解析: markdown, pygments
  • 搜索引擎: 自实现TF-IDF算法
  • 知识图谱: networkx
  • 打包工具: PyInstaller

系统要求

  • Python 3.12 或更高版本
  • Windows 7/10/11、macOS 10.14+、Linux (Ubuntu 18.04+)
  • 至少 100MB 可用磁盘空间
  • 至少 512MB 可用内存

安装步骤

方法一:使用可执行文件(推荐)

  1. 下载对应平台的可执行文件
  2. 双击运行即可(无需安装Python环境)

方法二:从源码运行

  1. 克隆或下载项目
git clone https://github.com/yourusername/smart-notes.git
cd smart-notes
  1. 安装依赖
pip install -r requirements.txt
  1. 运行程序
python gui.py

使用说明

1. 创建笔记

  • 点击左上角的 "+" 按钮或使用快捷键 Ctrl+N
  • 输入笔记标题
  • 在编辑器中编写内容(支持Markdown语法)
  • 选择分类和添加标签
  • 点击"保存"按钮或使用 Ctrl+S 保存

2. Markdown语法支持

# 一级标题
## 二级标题

**粗体** *斜体* ~~删除线~~

- 无序列表
1. 有序列表

[链接](https://example.com)
![图片](image.png)

`代码` 或

```python
def hello():
    print("Hello World")
```

| 表格 | 列 |
|------|-----|
| 内容 | 内容 |

3. 搜索笔记

  • 在左侧搜索框输入关键词
  • 按回车或点击"搜索"按钮
  • 系统会根据相关度排序显示结果

搜索范围:

  • 笔记标题
  • 笔记内容
  • 标签

4. 分类管理

  • 使用分类下拉框选择分类
  • 可以在配置中添加自定义分类
  • 支持按分类筛选笔记

5. 标签系统

  • 在标签输入框中输入标签,用逗号分隔
  • 例如: Python, 编程, 学习
  • 标签可用于搜索和关联笔记

6. 收藏功能

  • 勾选"收藏"复选框标记重要笔记
  • 在分类下拉框选择"收藏"查看所有收藏的笔记

7. 导入导出

导入笔记:

  • 文件 → 导入笔记
  • 支持 .md 和 .txt 格式

导出笔记:

  • 选择要导出的笔记
  • 文件 → 导出笔记
  • 选择保存位置和格式

8. 知识图谱

  • 工具 → 知识图谱
  • 查看笔记之间的关联关系
  • 显示孤立笔记和社区结构

9. 统计信息

  • 工具 → 统计信息
  • 查看笔记总数、字数统计
  • 分类和标签分布

快捷键

功能 快捷键
新建笔记 Ctrl+N
保存笔记 Ctrl+S
搜索 Ctrl+F
撤销 Ctrl+Z
重做 Ctrl+Y

项目结构

project1/
├── config.py              # 配置管理模块
├── note_model.py          # 笔记数据模型和管理
├── markdown_parser.py     # Markdown解析器
├── search_engine.py       # 搜索引擎和知识图谱
├── gui.py                 # 图形用户界面
├── build.py               # 打包脚本
├── count_lines.py         # 代码统计工具
├── requirements.txt       # 项目依赖
├── README.md             # 项目说明
└── LICENSE               # MIT许可证

核心功能实现

1. 笔记管理 (note_model.py)

  • Note类: 笔记数据模型,包含标题、内容、分类、标签等属性
  • NoteManager类: 笔记管理器,实现CRUD操作
  • 支持笔记链接和反向链接
  • 提供统计分析功能

关键方法:

create_note()      # 创建笔记
update_note()      # 更新笔记
delete_note()      # 删除笔记
search_notes()     # 搜索笔记
get_statistics()   # 获取统计信息

2. Markdown解析 (markdown_parser.py)

  • 基于markdown库实现
  • 支持代码高亮(pygments)
  • 提取标题、链接、图片等元素
  • 字数统计和阅读时间估算

关键功能:

parse_to_html()         # 转换为HTML
extract_headings()      # 提取标题
extract_links()         # 提取链接
get_word_count()        # 字数统计
create_toc()            # 生成目录

3. 搜索引擎 (search_engine.py)

  • 倒排索引: 高效的全文搜索
  • TF-IDF算法: 计算文档相关度
  • 相关笔记推荐: 基于内容相似度

搜索流程:

  1. 分词和标准化
  2. 构建倒排索引
  3. 计算TF-IDF分数
  4. 按相关度排序

4. 知识图谱 (search_engine.py)

  • 节点: 每篇笔记是一个节点
  • : 笔记之间的链接关系
  • 社区发现: 识别相关笔记群组
  • 中心性分析: 找出核心笔记

图谱功能:

build_graph()           # 构建图谱
get_connected_notes()   # 获取关联笔记
get_central_notes()     # 获取中心笔记
get_communities()       # 社区发现

代码规范

本项目遵循以下编码规范:

  • PEP 8: Python代码风格指南
  • 类型提示: 使用typing模块进行类型标注
  • 文档字符串: 清晰的函数和类说明
  • 异常处理: 妥善处理可能的异常
  • 模块化设计: 功能模块相互独立

构建可执行文件

使用PyInstaller将应用程序打包为可执行文件:

python build.py

生成的可执行文件位于 dist 目录中。

手动打包命令

pyinstaller --name=SmartNotes --windowed --onefile gui.py

数据存储

程序会在用户目录下创建 .smart_notes 文件夹:

.smart_notes/
├── notes.db              # 笔记数据库(JSON格式)
├── notes/                # 笔记文件目录
│   ├── xxx.md           # 单个笔记文件
│   └── ...
├── attachments/          # 附件目录
├── exports/              # 导出文件目录
├── config.json          # 配置文件
└── search_index.json    # 搜索索引

位置:

  • Windows: C:\Users\用户名\.smart_notes
  • macOS: /Users/用户名/.smart_notes
  • Linux: /home/用户名/.smart_notes

常见问题

Q: 如何备份笔记?

A: 笔记数据存储在 .smart_notes 目录中,直接复制该文件夹即可备份。

Q: 支持哪些Markdown语法?

A: 支持标准Markdown语法,包括标题、列表、链接、图片、代码块、表格等。

Q: 搜索不到笔记怎么办?

A: 尝试使用"工具 → 重建索引"功能重建搜索索引。

Q: 如何导入大量笔记?

A: 可以将Markdown文件放入 .smart_notes/notes 目录,然后重启程序。

Q: 支持同步到云端吗?

A: 当前版本不支持,但可以手动将 .smart_notes 文件夹同步到云盘。

贡献指南

欢迎贡献代码、报告问题或提出建议!

  1. Fork 本项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

开发路线图

  • 基础笔记管理功能
  • Markdown编辑和预览
  • 全文搜索引擎
  • 知识图谱
  • 图表可视化
  • 云端同步
  • 移动端应用
  • 插件系统
  • 多语言支持
  • 协作编辑

许可证

本项目采用 MIT 许可证。详见 LICENSE 文件。

致谢

感谢以下开源项目:

更新日志

v1.0.0 (2026-01-01)

  • 初始版本发布
  • 实现基础笔记管理功能
  • 支持Markdown编辑和预览
  • 实现全文搜索引擎
  • 添加知识图谱功能
  • 提供图形用户界面

数据迁移到 SQLite

应用支持将旧的 JSON(notes.db) + 逐文件 .md 数据迁移到 SQLite 后端:

python migrate.py            # 迁移默认 ~/.smart_notes 数据(迁移前自动备份)
python migrate.py --no-backup

迁移幂等(已迁移的笔记不会重复导入);当 .md 与 JSON 内容不一致时以 .md 为准并在报告中计数。迁移后可设置 SMARTNOTES_BACKEND=sqliteconfig.storage_backend="sqlite" 启用 SQLite 后端。

依赖锁定与升级策略

  • pyproject.toml / requirements.txt 中的运行时依赖采用区间约束(下限保证所需特性、上限防止破坏性大版本),钉死到补丁号。
  • 精确、可复现的版本由 uv.lock 负责锁定。安装时用 uv sync 即可获得与锁文件一致的环境。
  • 升级流程:
    1. 调整 pyproject.toml 中的区间(如有必要);
    2. 运行 uv lock --upgrade(或 uv lock --upgrade-package <name>)刷新锁文件;
    3. pytestruff check . 验证后提交更新后的 uv.lock

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages