🚀 优质资源分享 🚀
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|
🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
💛Python量化交易实战💛 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
前言
思源笔记是一款本地笔记为主的软件,其目前提供了148元/year的付费同步功能,但对于21世纪中国难民而言还是太贵啦。
条件允许的同学还是使用官方的同步,支持下作者。
![image](https://img-blog.csdnimg.cn/img_convert/4cbc512084c44661ad4930af71ed2159.png)
所以,就在思考有没有白嫖的一种方法,能同步且不要付费呢。
网上有些使用云盘自动同步,但可能导致数据丢失。
这里提供方法:
笔记通过小软件的方式进行自动同步到git。
这个[siyuansyntogit]小软件基于python开发,我只在win10上进行过测试,下方有源码及exe提供,诸君自取。
https://gitee.com/kingstacker/siyuansyntogit
![image](https://img-blog.csdnimg.cn/img_convert/ca9341c703c3eb4adc88ad3545f00b93.png)
笔者对python语言并不熟悉,这是第一个demo,当前对于我已然够用,当然你可以自行进行更改。
软件及环境:
win10、思源笔记v2.4.7、siyuansyntogit、git、gitee网站
流程
(1)软件支持功能:
目录正确性判断
网络连接线判断,打开软件后,检测到电脑联网后会自动拉取远程文件同步
检测思源笔记开关状态
思源笔记软件关闭则自动提交git同步
小软件运行后默认最小化 窗口运行
![image](https://img-blog.csdnimg.cn/img_convert/a40f33ad1b3dce3c19e3f760b55c7ba5.png)
(2)确保你使用过Git,Git使用不再此文说明。软件放置路径跟思源笔记的data路径在同一层级。git工程也在这一层级。
![image](https://img-blog.csdnimg.cn/img_convert/27cb716eced30d8d984edfbd60f92204.png)
.gitignore文件内容参考:避免其他文件夹同步,这里只会同步data文件夹。思源笔记的笔记内容是存放在data文件夹中的。
conf/
history/
temp/
*exe
(3)确保已经进行了初次git提交,确保环境一切正常。enjoy it。
(4)你也可以把小软件开机自启:
参考:https://zhuanlan.zhihu.com/p/446167633
(4.1)创建小软件的快捷方式。
![image](https://img-blog.csdnimg.cn/img_convert/c5550c8b7d966a1058c02b2a9ca106b3.png)
(4.2)快捷方式拖入:win+R打开打开对话框输入shell:startup,进入启动文件夹
![image](https://img-blog.csdnimg.cn/img_convert/d2edcf9b16a6a1dff1a5ef583ec14c06.png)
(5)小软件运行界面图示:小软件打开默认最小化运行。
![image](https://img-blog.csdnimg.cn/img_convert/83a46fa836f694e711d6923cff94f09d.png)
检测到思源笔记软件关闭,则自动提交同步。
![image](https://img-blog.csdnimg.cn/img_convert/6ecb8d6b5ec055758933d7170deff062.png)
这里使用gitee作为远程仓库,可以看到版本已经提交。
![image](https://img-blog.csdnimg.cn/img_convert/9aef8ad9cbfdf8551f5f3d70cc36b91a.png)
(6)源码参考:你可以进行任意更改,希望我的工作对你有所帮助。
import os
import sys
import ctypes
import time
import psutil
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("发现思源软件已打开,等待软件关闭...")
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;
以上。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)