zoco

聊聊读书笔记

2020-05-21


此篇暴露了我的程序员身份,可以看看一个普通程序员是怎么做读书笔记的……

首先读书笔记是跟着阅读形式走的。

阅读形式换过4种:

  1. 纸质书阅读

最早没有电子设备辅助,看书的时候都是在书上标记,最后都要通过手写誊到本儿上或者打字到电脑上,很费时间。

后来有了OCR,拍一张照可以识别其中的文字,省了很多时间,现在我读纸质书大部分读书笔记都是这样做的,有一款app一直在用「滴墨书摘」,已经满足我的需求了。

  1. Kindle

用过半年的Kindle,但是因为Kindle体积太大,自己不在家看书的时间大多在路途上,或者一些零散的时间,出行的时候不想带那么大的设备,所以很快舍弃了。

Kindle做笔记会落到Kindle里的txt文件上,把Kindle连到电脑上就可以复制读书笔记。

  1. 手机&iPad

好了,重点来了。

用过掌阅,用过微信阅读,现在用的是网易蜗牛阅读。

拿微信阅读和网易蜗牛阅读来说,微信阅读的书更多,社区更活跃,玩儿法更多,所以我看了几本书放弃了。对于我来说那个社区太喧嚣了,不适合看书。所以换到了网易蜗牛阅读。

网易蜗牛用了几年功能基本没更新,每天都有新书上架,一般想看的书也都能查到,也有社区,但是存在感不强。

最理想的方案应该是让网易蜗牛阅读加个需求:

  1. 网易蜗牛手机app软件上在批注页面有个按钮为一键导出批注,最好是可以分享到bear,但这个不现实,所以可以发送到邮箱或者复制到剪贴板。
  2. 能够在电脑版查看批注,微信读书有电脑版,只可以单个复制,但是通过chrome插件可以将所有批注导出来。

理想情况需要网易蜗牛来完成,暂时没有办法。和客服聊过好多次,无果,所以你们等着吧,等我有钱了我就去把网易蜗牛收购了,目的就是让他们把这个需求加上……

所以作为一个现实主义和理想主义间不停摇摆的人,还是得解决现实的问题:

为了将书摘从读书app整理到其他的方式有: 【方案一】 从手机app复制到手机bear上,需要频繁的打开两个app,而且需要格式化(网易蜗牛阅读的批注复制出来没有trim,所以会存在回车的问题)

【方案二】复制到微信文件传输助手,然后在电脑上复制到bear上:

【方案三】依靠ios设备之间的「Handoff」功能,在手机上复制一段批注,在mac上直接粘贴到bear上,这个方案是不是看上去很美好?

官网上对于「Handoff」的要求如下

经过测试,正常情况下跨设备剪贴板共享的生效时间一般是1-3s。但要注意的是,我说的是正常情况,不正常的情况就太多了,可能1分钟后Handoff才生效,也可能今天就生效不了了。重启,重新登录appid等方式我都试过,收效不大,至今没搞明白为什么有时候功能会不好用。

即便如此,「方案三」一直是我采用的功能,我还买了「paste」做加持。注意,paste不能使Handoff的成功率提高,它在这里的作用是能把剪贴板可视化,知道我复制成功了。

其他考虑过的方案,比如iOS上的shortcuts,但是shortcuts只能单次执行,没法后台常驻,除非我复制一次去操作一次shortcuts,shortcuts也只能调起bear再复制,所以这个方案不行。

或者利用paste的剪贴板历史功能,我不关心网络问题,直接从手机app都复制一下。测试结果不行,0-9十个数快速复制的话只会成功复制其中的几个数字。猜测paste的原理是循环拿剪贴板数据,因为ios后台没法拿到剪贴板的回调,快速复制可能导致数据被覆盖掉。而且mac版本的paste不能多选,只能在手机端多选然后share,又复杂了。

所以在目前条件下退而求其次的方案有两个:

方案一:写一个手机app端的软件,自动获取手机端复制的批注,格式化好,然后批量复制或者发送到其他软件上。相当于我又实现了一个paste,好了,能每年省78块钱了。

问题:软件需要后台常驻。无法感知到是否复制成功。

用flutter做了demo:

核心代码是

clipboardTriggerTime = Timer.periodic(
  const Duration(seconds: 5),
  (timer) {
    Clipboard.getData('text/plain').then((clipboarContent) {
      if (clipboarContent.text != null) {
        setState(() {
          this._str = clipboarContent.text;
          addItemToList();
        });
      }
    });
  },
);

Flutter,RN和Weex体验下来还是Flutter用起来更舒服。

方案二:mac端监听剪贴板,自动获取并格式化。 问题:手机端和mac端数据自动复制不稳定。

用electron做了个demo:

核心代码是

    index = 1;  
    textArr = [];
    const clipboardWatcher = require('electron-clipboard-watcher')
    clipboardWatcher({
      watchDelay: 1000,  
      onTextChange: function (text) { 
        textArr[index] = index + ". " + text;
        console.log(textArr[index]);
        index++;
      }
    })

我贴这11行代码只是为了表达很多事情不一定要花多少精力就能将生产力提高很多,磨刀不误砍柴工的道理就在这里。

electron用来做一些小工具非常的舒服,比如这个我都不关心界面长什么样,直接复用现有的组件,11行代码就能完成我一个人工处理比较麻烦的问题。

所以现在我的读书笔记进化成了:在mac上打开我写的工具软件,然后在手机上复制,mac上terminal就会显示一条新的书摘,同时帮我编好号,格式化好,在我所有的都复制完后在mac上全选粘贴到bear上,较之前能节省我很多时间。

还是得花一些时间在上面,好吧,等我去收购网易蜗牛。

多说一个

还有一些东西都能通过一些技术手段提高生产效率。

比如之前听梁文道的读书节目,一些片段忍不住想做摘抄,但是总不能像听电报的一边听一边写吧。所以在mac上通过Podcasts可以把音频下载下来,图省事的话可以直接调一些AI厂商的语音转文字接口,异步翻译。不过下载下来的音频一般都比较大,厂商的接口对音频大小有要求,但是我们有ffmpeg啊。

Podcasts的音频也可以自动下载,所以这一切就成了一个完全自动化的事情。

Podcasts音频自动下载 -> 程序监听下载文件夹更改 -> 拿到最新的mp3 -> ffmpeg进行切分,分成多个分片(这里有个问题是会把一段话拆开,语音识别在断点会不准,当然有一些其他的方式,比如在服务端进行merge,不赘述了) -> 调用AI厂商API,拿到taskid -> 循环查询taskid结果 -> 拿到结果后拼成一篇文章 -> 从文章中找到自己想要的文字。

这一切都建立在音频节目没有完整的文字版,其实这些工作都是应该由平台完成的,不过计算机的一部分魅力也正因这些不完美,个人掌握了计算机语言,也就像孙悟空悟道习得七十二变一样,挺有意思的。