小工具-同步 Workflowy 大纲到印象笔记 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
locktionc
V2EX    分享创造

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

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

    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     Solana     1660 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 16:22 PVG 00:22 LAX 09:22 JFK 12:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86