flomo和Logseq终于牵手成功啦

清明节放假三天不知道各位小伙伴过得怎么样,这三天虽然少了工作上面的琐事烦扰,可我还真没闲着。在这里首先要真诚的感谢一下老婆大人,长时间以来她承担了家庭99%以上的家务,从洗菜、做饭、洗衣服、打扫卫生、照顾并辅导娃的作业……,我则只是为自己的工作和学习操心,对家务几乎没有顾及,真的是辛苦她了。放假我折腾了三天代码,在昨天晚上终于憋出了100来行代码,最终的成果还是比较令人满意的,我成功地实现了将flomo笔记自动导入到logseq笔记当中。可以下面可以先来欣赏一下我的小作品。

首先需要声明,我只是一名Python初级选手,并非专业的程序员,为了解决自己日常生活学习工作当中的一些小问题,所以我自学了编程,所以如果阅读这篇文章当中有专业的程序员的话,敬请口下留情。我之前连续写了两篇文章,分享了我在使用flomo笔记过程当中的一些思考,以及所走过的一些误区。从那两篇文章发布之后,我就在一直在思考一个问题,如何将这两个系统有效打通,而不是用手工的方式毕竟那样的效率太过于低下了。

如果你想使用这个小程序的话,需要满足以下几个小条件:

1.你需要有Python相关基础,比如对于字符串的处理、简单的循环、判断结构等知识,这样至少你拿到源码之后,可以在我的基础之上进行改造,以适配你自己真实的情况。

2.你需要懂得一些网络的基础知识,比如程序抓包这样你才能够在浏览器当中找到flomo笔记的cookie信息,如果这一步你没法做到的话,那么从源头就断掉了无法继续。

3.你需要学习一些关于卢曼卡片的相关知识,我在本公众号中也发布过多篇,你不妨看一下上面的“写作”话题。

当然更好的方式是在logseq笔记当中开发一个小插件,这样当你在使用logseq的时候,点击一个按钮就可以执行上面的过程,但是由于我对于logseq如何开发插件还没学习过,如果有时间的话可能列入到后续的计划当中吧。

小程序开发背后的故事

架构为先
在编写程序的时候,核心的是进行程序的设计,有这样一个说法:

一般的程序员和高级程序员的差别在哪里?在同样接到一份任务的时候,高级程序员会先进行分析设计最后再进行编码实现,而一般的程序员拿到之后,并手忙脚乱的开始编码,很少考虑到架构及整体设计。如果从度量的角度来看,一开始前者的速度也会慢一些,然而随着时间的流逝,我们就会发现。后者可能出现更多的返工,更多低效率的代码。

就像本程序一样,刚开始看来是很简单的一个小需求,可是当我进行需求分析之后,发现里面有不少的关键点,比如如何将数据存储下来,采用什么样的存储结构,关键的字段有哪些,而且需要考虑到第一次初次执行、以及第二次及后续的数据更新。因此我花了比较多的时间在程序的总体设计上,为此还专门画了一个脑图,完成这一部分设计后也基本理清了思路,但真正的挑战就转到接下来的编码环节。

正则的海洋
程序当中有个比较麻烦的地方就在于字符串的处理,这里要用到正则的相关知识,虽然我以前有所接触,却一直没有去深入的理解它,而这次不得不从开头一点点地去摸索。正所谓“一入正则深似海”,正则对于计算机专业的程序员来说,它的强大功能会让专业的程序员望而生畏,更何况我这个业余程序员,所以我在编程的过程当中,花了大量的时间在网络上查询用法从而去解决特定的问题。

充分发挥flomo和logseq的特长
这个程序还解决了一个打标签的难题,我将卡片的相关标签都打到了页属性上而不是块属性上,这样在后续的处理上就会更加的方便。卡片笔记需要按特定的格式:三段(主题+内容+标签)以回车进行分隔。程序也支持了多个标签的处理,如本文中的截图是所有有关笔记的卡片,这一点则是充分利用了logseq的数据库特性,当我们在flomo中对卡片打了相关的标签之后,在logseq中做一个简单的查询就方便地展现出来了。

数据同源
这个小程序还有一个小亮点:数据同源,flomo的卡片导入到logseq中之后,可以在logseq中方便地进行卡片式引用,但是当我们发现这个卡片需要修改的时候则不建议在logseq中直接修改,我做的这个小功能通过快速的点击可直接跳转到flomo的网页端,在修改了之后再点一次同步就可以实现了,这样就避免了在两处同时修改导致的数据不一致。

这个程序目前只是完成了一个雏形,从实现效果来说基本可以满足我的需要。当然从长远的角度看开发成logseq的一个插件会更加易用,或者做一个简单的网页版本来取代flomo当前的卡片回顾(我也在思考当中)这些构想可能要花更长的时间来进行设计了。

最后,如果你对上述功能感兴趣,关注本公众号并留言关键字flomo2logseq就可以得到源码了,希望对你有所帮助。

Comments
Write a Comment