首页 > 编程语言 >思源笔记用Python+quicker实现自动添加标题编号

思源笔记用Python+quicker实现自动添加标题编号

时间:2023-02-07 17:34:54浏览次数:83  
标签:index quicker 思源 temp Python header dict path Children

实现原理: 通过 Python 访问笔记的源文件, 将标题前面增加编号+tab 键, 在写回源文件
为防止重复写入, 每次编号前会清理之前编号清除, 清理原理为将标题行用 tab 键分割, 只保留最后一个 tab 后的内容, 因此标题中除了标号后面的 tab 键之外, 不能有其他 tab 键
源代码如下:

#清理标题代码
import json
import pyperclip
class ClearHeader:
    def run(self,file_path):
        with open(file_path,'r',encoding='utf-8') as f:
            result = f.read()
        temp_dict = json.loads(result)
        for i in range(len(temp_dict['Children'])):
            if(temp_dict['Children'][i]["Type"] == "NodeHeading"):
                ss = temp_dict['Children'][i]["Children"][0]["Data"]
                temp_list = ss.split('\t')
                temp_dict['Children'][i]["Children"][0]["Data"] = temp_list[-1]
        text_str = json.dumps(temp_dict,sort_keys=False,  indent=4, separators=(',', ': '), ensure_ascii=False)
        with open(file_path, 'w',encoding='utf-8') as f:
            f.write(text_str)
if __name__ == "__main__":
    file_path  = pyperclip.paste().replace('\"','')
    s = ClearHeader()
    s.run(file_path)

添加标题代码:

import json
from clear_header import ClearHeader
import pyperclip

file_path  = pyperclip.paste().replace('\"','')
s = ClearHeader()
s.run(file_path)

header_index = [0,0,0,0,0]
with open(file_path,'r',encoding='utf-8') as f:
    result = f.read()
temp_dict = json.loads(result)
# print(temp_dict['Children'])
for i in range(len(temp_dict['Children'])):
    # print(each['Children'],type(each['Children']))
    if(temp_dict['Children'][i]["Type"] == "NodeHeading"):
        if(temp_dict['Children'][i]["HeadingLevel"]==1):
            header_index[1] += 1
            header_index[2] = 0
            header_index[3] = 0
            header_index[4] = 0
            temp_header = str(header_index[1]) + '\t'
        elif(temp_dict['Children'][i]["HeadingLevel"]==2):
            header_index[2] += 1
            header_index[3] = 0
            header_index[4] = 0
            temp_header = str(header_index[1])+'.'+str(header_index[2]) + '\t'
        elif(temp_dict['Children'][i]["HeadingLevel"]==3):
            header_index[3] += 1
            header_index[4] = 0
            temp_header = f'{header_index[1]}.{header_index[2]}.{header_index[3]}\t'
        elif(temp_dict['Children'][i]["HeadingLevel"]==4):
            header_index[4] += 1
            temp_header = f'{header_index[1]}.{header_index[2]}.{header_index[3]}.{header_index[4]}\t'
        temp_dict['Children'][i]["Children"][0]["Data"] =temp_header + temp_dict['Children'][i]["Children"][0]["Data"]
        print(temp_dict['Children'][i]["Children"][0]["Data"],)
text_str = json.dumps(temp_dict,sort_keys=False,  indent=4, separators=(',', ': '), ensure_ascii=False)
with open(file_path, 'w',encoding='utf-8') as f:
    f.write(text_str)


使用时只需要复制当前笔记文件的绝对路径, 然后执行响应的 Python 文件即可
如果安装了 quicker, 可以更加方便的启动
最终效果为:
https://liuboyan-mynote-markdown.oss-cn-guangzhou.aliyuncs.com/img/2023-02-07_16-43-40.mp4

注意, 执行完程序后 F5 刷新, 思源才会更新显示
如果没有 Python 和 quicker , 也可以把 Python 发布成 exe 文件, 复制地址后, 双击运行对应 exe 即可
image
注意:此程序没有经过长时间测试,可能有bug,使用前源文件做好备份,
Python发布exe文件较大,故未上传,有需要可以发邮件给我liuxingyyue@qq.com

标签:index,quicker,思源,temp,Python,header,dict,path,Children
From: https://www.cnblogs.com/liuboyan/p/17099227.html

相关文章

  • python之jwt实现
    https://www.jianshu.com/p/03ad32c1586cimportjwtimporttimeheaders={"alg":"HS256","typ":"JWT"}#设置headers,即加密算法的配置salt="asgfdgerher......
  • python学习之 logging包
    1,logging包python的一个包,专门用来写日志的。官方一共划分了6个等级的log类型,分别对应重要性等级50,40,30,20,10,0:级别排序:CRITICAL>ERROR>WARNING>INFO>DEBUG>NOT......
  • centos7+nginx+uwsgi+python3.7.4+django部署实践
    yuminstallpython3yuminstallpython3-develyum-yinstallgccgcc-c++pip3installuwsgipython3​​manage.py​​runserver10.5.1.65:82uwsgi--iniuwsgi.i......
  • 如何检查文件是否有Python的符号链接
    1、对于python3.4及更高版本,可以使用Path类。frompathlibimportPath#rpdisasymboliclink>>>Path('rdp').is_symlink()True>>>Path('README').is_symlink()False2......
  • 数据采集技术之在Python中Libxml模块安装与使用XPath
    为了使用XPath技术,对爬虫抓取的网页数据进行抽取(如标题、正文等等),之后在Windows下安装libxml2模块(安装后使用的是Libxml模块),该模块含有xpath。准备需要的软件包:Python2.7......
  • python静态web服务器如何实现
    1、编写TCP服务器程序。2、获取浏览器发送的http请求消息数据。3、读取固定的页面数据,将页面数据组装成HTTP响应消息数据并发送给浏览器。4、HTTP响应报文数据发送完成后,关......
  • python教学之类
    面向对象(pro)C++PYjavarubygo面向过程C直接操作内存对象=包含了很多不同的“元素”的一个物体性质集合体封装性每一个对象封装了不同的对象面向对象的思......
  • Python中Gevent的使用
    1、可以通过gevent轻松实现并发同步或异步编程。gevent中使用的主要模式是Greenlet,它是以C扩展模块的形式访问Python的轻量级协程。2、Greenlet全部运行在主程序操作系统的......
  • Python使用协程的缺点
    1、多核资源不能使用:协程的本质是单线程,它不能同时使用单个CPU的多核、协程。2、在多CPU上运行程需要与过程配合。当然,每天编写的大多数应用程序都没有必要。除非是cpu密集......
  • Python生成文件md5校验值函数
    linux有个命令叫做md5sum,能生成文件的md5值,一般情况下都会将结果记录到一个文件中用于校验使用,比如会这样使用:[crazyant@localhostPythonMd5]$moresample_filewww......