V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
locktionc
V2EX  ›  分享创造

小工具-同步 Workflowy 大纲到印象笔记

  •  
  •   locktionc · 2018-03-17 14:02:10 +08:00 · 2538 次点击
    这是一个创建于 2203 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Workflowy 是一个极简风格的大纲写作工具,使用它提供的无限层级缩进和各种快捷键,可以非常方便的理清思路,写出一个好看而实用的大纲。如下图所示。

    印象笔记更是家喻户晓,无人不知的跨平台笔记应用。虽然有很多竞争产品在和印象笔记争抢市场,但是印象笔记强大的搜索功能还是牢牢抓住了不少用户。

    如果能够把用 Workflowy 写大纲的便利性,与印象笔记强大的搜索功能结合起来,那岂不是如虎添翼?如下图所示。

    EverFlowy 就是这样一个小工具。它可以自动把 Workflowy 上面的条目拉下来再同步到印象笔记中。如果 Workflowy 有更新,再运行一下这个小工具,它就会同步更新印象笔记上面的内容。Workflowy 负责写,印象笔记负责存,各尽其能,各得其所。

    介绍

    Everflowy 基于 Python 3 开发,代码托管在 Github 中,地址为:https://github.com/kingname/EverFlowy这个小工具在持续开发中,目前可以实现 Workflowy 单向同步到印象笔记和差异更新。由于印象笔记的 Oauth 验证方式需要申请才能对正式的账号使用,但它又不会通过这种个人小工具的申请,所以目前暂时使用开发者 Token。关于如何申请开通正式账号的开发者 Token,在后文会有详细的说明。

    安装

    首先需要保证电脑中安装了 Python 3,否则无法运行这个小工具。代码的依赖关系使用 Pipenv 来管理,所以需要首先使用 pip 安装 pipenv:

    python3 -m pip install pipenv
    

    有了 Pipenv 以后,使用 Git 把代码拉到本地再安装依赖:

    git clone https://github.com/kingname/EverFlowy.git
    cd EverFlowy
    pipenv install
    pipenv shell
    

    运行了上面的 4 条命令以后,你的终端窗口应该如下图类似。

    Pipenv 会自动创建一个基于 Virtualenv 的虚拟环境,然后把 EverFlowy 依赖的第三方库自动安装到这个虚拟环境中,再自动激活这个虚拟环境。

    配置

    在代码的根目录,有一个 config.json 文件,打开以后如下图所示。

    你需要修改三个地方,分别是usernamepassworddev_token。其中usernamepassword分别对应了 Workflowy 的用户名和密码,而dev_token是印象笔记的开发者 Token。

    这里需要说明一下印象笔记的开发者 Token。印象笔记的开发者 Token 有两套,分别是沙盒环境的开发者 Token 和生产环境的开发者 Token。所谓沙盒环境,就是一个测试开发环境,这个环境是专门为了快速开发印象笔记 App 而设计的,它的地址为:https://sandbox.evernote.com。打开这个网址,可以看到页面上弹出了警告,如下图所示。

    无论你之前是否有印象笔记的账号,要使用沙盒环境,都必需重新注册。注册完成以后,通过访问https://sandbox.evernote.com/api/DeveloperToken.action获取沙盒环境的开发者 Token。

    关于印象笔记的沙盒环境,我将另外开一篇文章来说明。本文主要介绍如何申请生产环境的开发者 Token,从而可以使用正式的印象笔记账号。

    在 2017 年 6 月以后,印象笔记关闭了生产环境开发者 Token 的申请通道,如果打开申请网址:https://app.yinxiang.com/api/DeveloperToken.action,你会发现申请的按钮是灰色的且无法点击。要解决这个问题,就需要让印象笔记的客服帮忙。

    登录自己的印象笔记正式账号,打开印象笔记首页,把页面拉到最下面,可以看到有一个“联系我们”,如下图所示。

    进入“联系我们”,点击“联系客服”,如下图所示。

    在联系客服的页面填写如下信息,最后一项“简要描述问题”填写“我需要基于印象笔记 API 开发,请帮我开通生产环境开发者 Token ”并提交。

    大约 24 小时内,就可以受到客服回复的邮件,如下图所示。

    此时再次打开https://app.yinxiang.com/api/DeveloperToken.action就可以申请开发者 Token 了,如下图所示。

    需要注意的是,开发者 Token 只会显示一次,所以你需要立刻把它记录下来。

    运行

    有了生产环境的开发者 Token 以后,把它填写到 config.json 中,配置就算完成了。在终端输入命令:

    python3 EverFlowy.py
    

    程序就可以开始同步 Workflowy 的数据到印象笔记了。

    同步完成以后,你会发现程序的根目录出现了一个 history.db 文件。这是一个 sqllite 的文件,里面就是你在 Workflowy 中的所有大纲内容和对应的印象笔记 GUID 和 enml 格式的内容。这是为了实现数据的差异更新而生成的。你可以使用各种能够浏览 sqllite 的工具来查看里面的内容。

    已知问题

    • 如果删除了 history.db ,那么再次运行 Everflowy,Workflowy 中的所有内容都会再次写入印象笔记。
    • 如果单独删除了 EverFlowy 写入印象笔记中的某一条目,却不删除 history.db 中的对应条目,WorkFlowy 会因为找不到 GUID 而抛出异常。
    • 没有测试国际版印象笔记账号是否可用。
    • 如过你想测试沙盒环境的开发者账号,请修改evernote_util/EverNoteUtil.py第 98 行,把
    client = EvernoteClient(token=self.dev_token, sandbox=False, service_host='app.yinxiang.com')
    

    修改为:

    client = EvernoteClient(token=self.dev_token)
    
    12 条回复    2018-03-18 21:58:25 +08:00
    MacGG
        1
    MacGG  
       2018-03-17 14:10:17 +08:00
    我就一直希望有这功能。nb 了
    MacGG
        2
    MacGG  
       2018-03-17 14:20:22 +08:00
    我目前使用的方法是 workflowy 每日会邮件给我,然后邮箱每日自动转发到 evernote 邮箱。。。。
    ioven
        3
    ioven  
       2018-03-17 16:58:50 +08:00
    建议增加功能 同步到指定笔记本

    workflowy 中的 notes 不能同步,加粗、斜体、下划线格式直接显示代码
    locktionc
        4
    locktionc  
    OP
       2018-03-17 17:15:14 +08:00   ❤️ 1
    @ioven 这个功能是要做的。
    locktionc
        5
    locktionc  
    OP
       2018-03-17 17:15:33 +08:00
    @MacGG 那你试一试看好不好用。
    wandero
        6
    wandero  
       2018-03-17 18:52:59 +08:00
    赞,一直在考虑怎么衔接 Workflowy 和 Evernote,非常感谢
    locktionc
        7
    locktionc  
    OP
       2018-03-17 18:57:36 +08:00
    @wandero 这个还算是 0.1 版,还有很多功能不完善,比如删除线。欢迎提 PR
    wubei7231
        8
    wubei7231  
       2018-03-17 23:53:38 +08:00
    给力的功能。
    能否出个单独的安装包?或者绿软。
    locktionc
        9
    locktionc  
    OP
       2018-03-17 23:58:56 +08:00 via iPhone
    @wubei7231 这个是计划内的,等功能再完善一些就会编译成可执行文件。其实我准备做在线的服务,但是由于涉及到账号,所以最后还是没有做成网站的样子。
    ioven
        10
    ioven  
       2018-03-18 08:13:18 +08:00
    @locktionc 可以考虑出 go 版吗
    locktionc
        11
    locktionc  
    OP
       2018-03-18 08:23:50 +08:00 via iPhone
    @ioven 如果能有 golang 的话,那就方便多了。关键问题在于印象笔记没有 golang 的 SDK,而它又不提供 rest api 所以有点麻烦。
    ioven
        12
    ioven  
       2018-03-18 21:58:25 +08:00
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   959 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 21:38 · PVG 05:38 · LAX 14:38 · JFK 17:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.