Windows下自动云备份思源笔记到Gitee

前言

思源笔记是一款本地笔记为主的软件,其目前提供了148元/year的付费同步功能,但对于21世纪中国难民而言还是太贵啦。

条件允许的同学还是使用官方的同步,支持下作者。

Windows下自动云备份思源笔记到Gitee

所以,就在思考有没有白嫖的一种方法,能同步且不要付费呢。

网上有些使用云盘自动同步,但可能导致数据丢失。

这里提供方法:

笔记通过小软件的方式进行自动同步到git。

这个[siyuansyntogit]小软件基于python开发,我只在win10上进行过测试,下方有源码及exe提供,诸君自取。

https://gitee.com/kingstacker/siyuansyntogit

Windows下自动云备份思源笔记到Gitee

笔者对python语言并不熟悉,这是第一个demo,当前对于我已然够用,当然你可以自行进行更改。

软件及环境:

win10、思源笔记v2.4.7、siyuansyntogit、git、gitee网站

流程

(1)软件支持功能:

目录正确性判断

网络连接线判断,打开软件后,检测到电脑联网后会自动拉取远程文件同步

打开思源笔记软件同步后会自动最大化思源笔记窗口并自动重建索引(仅测试1080p,根据主题的不同,缩放的不同需要进行更改)

检测思源笔记开关状态

思源笔记软件关闭则自动提交git同步

小软件运行后默认最小化 窗口运行

Windows下自动云备份思源笔记到Gitee

(2)确保你使用过Git,Git使用不再此文说明。软件放置路径跟思源笔记的data路径在同一层级。git工程也在这一层级。

Windows下自动云备份思源笔记到Gitee

.gitignore文件内容参考:避免其他文件夹同步,这里只会同步data文件夹。思源笔记的笔记内容是存放在data文件夹中的。

conf/
history/
temp/
*exe

(3)确保已经进行了初次git提交,确保环境一切正常。enjoy it。

(4)你也可以把小软件开机自启:

参考:https://zhuanlan.zhihu.com/p/446167633

(4.1)创建小软件的快捷方式。

Windows下自动云备份思源笔记到Gitee
(4.2)快捷方式拖入:win+R打开打开对话框输入shell:startup,进入启动文件夹

Windows下自动云备份思源笔记到Gitee

(5)小软件运行界面图示:小软件打开默认最小化运行。

Windows下自动云备份思源笔记到Gitee
检测到思源笔记软件关闭,则自动提交同步。
Windows下自动云备份思源笔记到Gitee

这里使用gitee作为远程仓库,可以看到版本已经提交。

Windows下自动云备份思源笔记到Gitee

(7)源码参考:你可以进行任意更改,希望我的工作对你有所帮助。

import os
import sys
import ctypes
import time
import psutil
import pyautogui

from subprocess import call

home_dir = os.getcwd()               #获得当前路径

choice_list = ['上传','下载']

def git_update():
    os.chdir(home_dir)
    git_add_cmd    = "git add ."
    git_commit_cmd = "git commit -m {}".format(gitdate)
    git_push_cmd   = "git push origin master"
    call(
       git_add_cmd + "&&" +
       git_commit_cmd + "&&" +
       git_push_cmd,
       shell=True
    )

def git_get():
    os.chdir(home_dir)
    git_pull_cmd = "git pull origin master"
    call(
        git_pull_cmd,
        shell=True
    )

def is_process_running(process_name):
    pl = psutil.pids()
    for pid in pl:
        if psutil.Process(pid).name() == process_name:
            return True
    else:
        return False

if __name__ == "__main__":

    ctypes.windll.user32.ShowWindow(ctypes.windll.kernel32.GetConsoleWindow(), 6)
    print("---------------------------------------------------")
    print("欢迎使用 SiYuan Auto Backup,poweredBy kingstacker!")
    print("---------------------------------------------------")
    print("程序当前运行路径:")
    print(home_dir)
    time.sleep(0.5)
    print("----------------")
    print("检查程序执行路径是否正确中...")
    dir_status = int(os.path.exists(home_dir+'\data'))
    if dir_status == 1:
        print("程序执行路径正确.")
        pass
    else:
        print("未发现当前路径存在data文件夹,请确认!")
        os.system("pause")
        sys.exit()
    eth_exit_code = 1
    print("----------------")
    print('检查网络连接状态中,请等待...')
    status_befor = 0;
    auto_pull_status = 0;
    while True:
        if eth_exit_code == 1:
            # eth_exit_code = int(os.system('ping www.baidu.com > /dev/null'))
            eth_exit_code = int(os.system('ping www.baidu.com'))
        else:
            pass
        if eth_exit_code == 1:
            print('没联网,确认你的网络连接状态.')
        time.sleep(2)
        while True:
            gitdate = time.strftime("%Y-%m-%d/%H-%M-%S/%A", time.localtime())
            if eth_exit_code:
                break
            if auto_pull_status == 0:
                print("----------------")
                print("拉取远程文件中...")
                git_get()
                print("拉取远程文件完成!")
                print("----------------")
            time.sleep(2)

            try:
                siyuan_program_status = int(is_process_running("SiYuan.exe"))  # 查看思源软件是否打开
            except:
                pass
            else:
                pass
            if status_befor == 0 and siyuan_program_status == 1:
                print("----------------")
                print("发现思源软件已打开,等待软件关闭...")
                time.sleep(4)
                user32 = ctypes.WinDLL('user32')
                SW_MAXIMISE = 3
                hWnd = user32.GetForegroundWindow()
                user32.ShowWindow(hWnd, SW_MAXIMISE)

                time.sleep(1)
                print("自动重建索引中...")
                pyautogui.click(255, 43, button='left')
                time.sleep(0.5)
                pyautogui.click(309, 84, button='left')
                time.sleep(0.2)
                print("索引重建完成!")
            if status_befor == 1 and siyuan_program_status == 0:
                print("----------------")
                print("发现思源软件已关闭,备份笔记到云端中...")
                print("请等待...")
                print("拉取远程文件更新确认中...")
                git_get()
                print("正在提交笔记...")
                git_update()
                print("提交备份已完成!")
                print("当前备份时间点:",gitdate)
                print("----------------")
            status_befor = int(siyuan_program_status)
            auto_pull_status = 1;

以上。

Original: https://www.cnblogs.com/kingstacker/p/16842012.html
Author: 小翁同学
Title: Windows下自动云备份思源笔记到Gitee

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/799801/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Python如何读取Excel表内容

    用python读取excel表中的数据 假如说有如下一张存储了数据的excel表,其中x1-x6是特征,y_label是特征对应的类别标签。我们想要使用python对以下数据进行数…

    Python 2023年8月1日
    053
  • Pytest入门(一)

    今天来学习一下自动化测试中pytest框架,pyTest框架是基于UnitTest的一个升级,集成度高,灵活性高,是一个基指令来运行的测试框架。 第一步:环境部署 pip inst…

    Python 2023年9月12日
    050
  • 比较赋值、浅拷贝、深拷贝

    1、无论是浅拷贝还是深拷贝,拷贝对象后是否会开辟新内存,取决于被拷贝对象的数据类型是否可变,一般来讲,可变的数据类型会开辟新内存,不可变数据类型反之不会开辟新内存,进行内存地址的引…

    Python 2023年10月31日
    044
  • 自适应且不可删除的水印蒙层

    canvas自适应文字长度,旋转角度生成水印背景图 设置canvas字体大小后,通过 ctx.measureText(text).width获取两行文字的宽度text1,text2…

    Python 2023年10月13日
    033
  • 今年,我只赚了一点点

    大家好,我是 Jack。 之前一直有小伙伴问我,有没有免费的股票信息查询的 API 接口? 我看了一圈,很多免费的 API 接口都年久失修,失效了。 那好吧, 咱自己写一个。 想要…

    Python 2023年9月26日
    033
  • python基础-列表、元组常用方法

    元组是不可变数据类型,可用方法较少,所以可以直接和列表一同对比记忆; 1.len() 方法在列表、元组中的使用 求列表、元组的长度; len() 方法可以统计除了数字外的任意数据类…

    Python 2023年10月31日
    046
  • 在图片不被裁剪时opencv绕图片中任意点旋转任意角度

    opencv绕图片中任意角度旋转任意角度 最近在做项目需要把把图片绕图片中任意点旋转任意角度,考虑到自己旋转需要编写插值算法,所以想到了用opencv,但是网上都是围绕图片中点旋转…

    Python 2023年10月20日
    047
  • 有趣的控制台玩法:一行代码绘制控制台图像!

    【阅读全文】 经常接触 Linux 操作系统的人应该知道它里面自带的控制台命令cowsay是可以直接打印出很多好玩的东西的。 python 中也集成了这样的模块cowsay,只需要…

    Python 2023年11月9日
    048
  • 视频中转服务源码 原创

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    Python 2023年5月23日
    080
  • python 嵌套列表的列表的字符长度排序

    1.简述 标题是不是有点歪曲了?没关系,只要根据每个列表中的字符长度对下面的列表进行排序即可。 [En] Isn’t the title a little twiste…

    Python 2023年5月24日
    071
  • [Python] 散点图(二维散点图、三维散点图、散点图矩阵)

    目录 1 两主特征:二维散点图 1.1 二维散点图 1.2 二维分类散点图 1.3 气泡图 2 三主特征:三维散点图 2.1 三维散点图 2.2 三维分类散点图 3 多主特征:二维…

    Python 2023年8月2日
    054
  • 一文读懂内存管理

    1 野指针 野猫 野狗 野孩子 熊孩子 NULL地址-狗链子 野孩子:没人要,没人管的孩子;行为动作不守规矩,调皮捣蛋的孩子。 野狗:没有主人的狗,没有链子锁着的狗,喜欢四处咬人。…

    Python 2023年9月30日
    045
  • python画拓扑图权值是线条粗细_bokeh中的Networkx绘图:如何根据图边权重设置边宽度…

    对于给定的networkx图G,我想调整边界线宽度作为Bokeh中图权重的函数。简化示例:import networkx as nx import pandas as pd fro…

    Python 2023年8月21日
    062
  • 安装anaconda3并使用jupyter notebook

    一、安装与使用 下载地址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.1.0-Windows…

    Python 2023年8月22日
    090
  • 用python去除SQL中的注释

    我的博客在看到这个标题时候肯定有人会想,我写SQL直接在数据库工具上执行就行了啊,工具会自动识别注释的,就是不用工具,把SQL写到存储过程里,数据库也会识别注释不执行的,干嘛非要去…

    Python 2023年11月1日
    044
  • 基于【MUI+Flask+MongoDB+HBuilderX】登录模块完善篇

    ### 回答1: MUI Echarts是一个基于Vue.js和ECharts的移动端图表组件库。 MUI Echarts提供了丰富的图表类型,包括折线图、柱状图、饼图、雷达图等。…

    Python 2023年8月12日
    091
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球