xhnbzdl / feishu-doc-export

飞书文档导出服务
Apache License 2.0
348 stars 30 forks source link

feishu-doc-export

一个支持Windows、Mac、Linux系统的飞书文档一键导出服务,仅需一行命令即可将飞书知识库的全部文档同步到本地电脑。支持导出markdowndocxpdf三种格式。导出速度嘎嘎快,实测700多个文档导出只需25分钟,且程序是后台挂机运行,不影响正常工作。最新版本内容,请查看文章最后的更新日志

动机

最近也是公司办公软件从飞书切换回了企业微信,自然就产生了一些文档要迁移的问题,由于文档量过多(大概有700多个),无论是从飞书手动下载为WordPDF格式的文档,还是将内容复制到本地新建Markdown文件都是一件极为繁琐的事情。于是便找到了两个GitHub上已有的飞书文档导出工具Feishu2MDfeishu-backup,但是他们都有一些问题不太满足我的需求。

现有方案的不满足

feishu-backup:

官方地址:dicarne/feishu-backup: 用于备份飞书文档,可以将飞书文档转成markdown下载。 (github.com)

  1. 因为它是网页版,下载速度太慢。有一次使用线上版选择了其中一个飞书文档节点下的所有文档(大概200-300个),下载了1个多小时还没有好,可能是卡死了。

  2. 因为它的下载方式是把选择的全部文档打包成压缩包后才会在浏览器返回给你,如果这个等待的过程中途断网或者电脑卡顿要重启,那你就白等那么长时间了。

  3. 因为它不支持下载表格类型的文档。

feishu2md:

官方地址:Wsine/feishu2md: 一键命令下载飞书文档为 Markdown (github.com)

我虽然没用实际使用过它,但我阅读它的官方文档后发现它的核心问题是一次只能下载一个文档。

我的需求

基于以上的种种原因呢,我决定自己动手写一个满足自己需求的程序来解决这个问题。这里我使用的是支持跨平台的.net core进行开发,最终打包程序可支持在windowslinuxmac系统上运行。这里将不赘述具体的实现过程,直接展示最终的效果图吧。

如何使用

获取AppId和AppSecret

如何获取知识库ID

image image

下载程序

下载地址:(Releases)feishu-doc-export,请选择最新版本下载

下载并解压即可得到程序可执行文件,windows环境的可执行文件为feishu-doc-export.exelinuxmac环境的可执行文件为feishu-doc-export没有后缀。

命令行执行

在可执行文件的目录打开终端,命令行所有参数如下:

请填写以下所有参数:
  --appId           飞书自建应用的AppId.【必填项】
  --appSecret       飞书自建应用的AppSecret.【必填项】
  --exportPath      文档导出的目录位置.【必填项】
  --spaceId         飞书导出的知识库Id(可为空,或者不传此参数).
  --type            知识库(wiki)或个人空间云文档(cloudDoc)(可选值:cloudDoc、wiki,为空则默认为wiki).
  --saveType        文档导出的文件类型(可选值:docx、md、pdf,为空或其他非可选值则默认为docx).
  --folderToken     当type为个人空间云文档时,该项必填.

执行效果图如下:

image-20230706105636270

逐步执行

  1. 第一步,(win,mac)双击运行程序,输入飞书自建应用的配置,并输入文档要导出的目录位置。

    maclinux仍需执行命令sudo chmod +x ./feishu-doc-export来将文件设置为可执行文件。

    mac可能会出现不受信任的执行程序,需要手动覆盖“隐私与安全性”设置中的设置。linux则只能通过命令行输入.\feishu-doc-export而不带参数的方式执行

    feishuexport_1

  2. 第二步,选择知识库后自动导出

    2

  3. 第三步,对比飞书原文档的目录结构

    feishu_wiki

个人空间文档导出

操作步骤请参考更新日志feishu-doc-export-v 0.0.4

耗时测试

700多个文件导出到本地总耗时25分钟

image

更新日志

2023-7-15发布feishu-doc-export-v 0.0.3

2023-9-27发布feishu-doc-export-v 0.0.4