基于.Net Core实现的飞书所有文档一键导出服务(支持多系统)

这篇具有很好参考价值的文章主要介绍了基于.Net Core实现的飞书所有文档一键导出服务(支持多系统)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

feishu-doc-export

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

动机

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

现有方案的不满足

feishu-backup:

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

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

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

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

feishu2md:

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

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

我的需求

  • 一次导出知识库下的所有文档,包含文档和表格
  • 导出的文档目录结构保持和原飞书文档一致
  • 导出速度不要太慢
  • 对于文档导出的格式没有要求,docxxlsx即可

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

如何使用

获取AppId和AppSecret

  • 进入飞书开发者后台,创建企业自建应用,信息随意填写。进入应用的后台管理页
  • (重要)打开权限管理,开通需要的权限:云文档>开通以下权限(注意有分页)
    • 查看新版文档
    • 查看、评论和下载云空间中所有文件
    • 查看、评论和导出文档
    • 查看、评论、编辑和管理云空间中所有文件
    • 查看、评论、编辑和管理多维表格
    • 查看、编辑和管理知识库
    • 查看、评论、编辑和管理电子表格
    • 导出云文档
  • 打开添加应用能力,添加机器人
  • 版本管理与发布中创建一个版本,并申请发布上线
    • 等待企业管理员审核通过
    • 如果只是为了测试,可以选择测试企业和人员,创建测试企业,绑定应用,切换至测试版本
      • 进入测试企业创建知识库和文档
  • 为机器人添加知识库的访问权限,具体步骤如下:
    • 在飞书桌面客户端中创建一个新的群组或直接使用已有的群组
    • 为群组添加群机器人,选择上面步骤中自己创建的应用作为群机器人
    • 打开知识库,如果你是知识库管理员,则可以看见知识空间设置。打开知识空间设置>成员管理>添加管理员,选择刚刚建立的群组
  • 回到开发者平台,打开凭证与基础信息,获取 App IDApp Secret

下载程序

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

  • windows-x64系统,下载feishu-doc-export-win-x64.zip

  • mac-osx-x64系统,下载feishu-doc-export-mac-osx-x64.zip

  • linux-x64系统,下载feishu-doc-export-linux-x64.zip

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

命令行执行

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

请填写以下所有参数:
  --appId           飞书自建应用的AppId.
  --appSecret       飞书自建应用的AppSecret.
  --spaceId         飞书导出的知识库Id(可为空,或者不传此参数).
  --exportPath      文档导出的目录位置.
  • win环境

    # 指定知识库导出
    ./feishu-doc-export.exe --appId=111111 --appSecret=2222222  --spaceId=333333 --exportPath=E:\temp\测试飞书文档
    # 不指定知识库导出
    ./feishu-doc-export.exe --appId=111111 --appSecret=222222 --exportPath=E:\temp\测试飞书文档
    
  • linux环境和mac环境

    注意!!!首次使用时需要将文件授权为可执行文件

    # 将文件授权为可执行文件
    sudo chmod +x ./feishu-doc-export
    

    执行时最好使用sudo,否则可能出现权限不足,导致在保存文档时无法创建文件目录

    # 执行不指定知识库的导出
    sudo ./feishu-doc-export --appId=111111 --appSecret=222222 --exportPath=/home/ubuntu/feishu-document
    

执行效果图如下:

基于.Net Core实现的飞书所有文档一键导出服务(支持多系统)

逐步执行

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

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

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

    基于.Net Core实现的飞书所有文档一键导出服务(支持多系统)

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

    基于.Net Core实现的飞书所有文档一键导出服务(支持多系统)

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

    基于.Net Core实现的飞书所有文档一键导出服务(支持多系统)

耗时测试

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

基于.Net Core实现的飞书所有文档一键导出服务(支持多系统)

总结

自己动手,丰衣足食,有趣且实用。不过目前我的方案不支持的功能有以下几点,以后有空了再增强

  • 不支持将文档导出为Markdown格式
  • 不支持单独导出一个文档
  • 不支持单独导出某个子节点下的所有文档

所以呢,目前我写的这个程序只适用于不要求将文档导出为Markdown的群体使用。

开源地址

https://github.com/xhnbzdl/feishu-doc-export

更新日志

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

  • 这个版本新增了两种格式的导出,可支持将飞书文档导出为markdownpdf,加上原有支持的docx一共是三种格式。

  • 新增了命令行参数--saveType,文档保存的格式类型,可选值有mdpdfdocx,如果参数不传,或值为空,或值为不存在的格式,则默认导出为docx。使用方式如下:

    # win 不指定知识库 将文档保存为markdown文档
    ./feishu-doc-export.exe --appId=xxx --appSecret=xxx --saveType=md --exportPath=E:\temp\test
    
    # mac 不指定知识库 将文档保存为pdf
    sudo ./feishu-doc-export --appId=xxx --appSecret=xxx  --exportPath=/home/feishu-document --saveType=pdf
    
    # linux 不指定知识库 将文档保存为docx
    sudo ./feishu-doc-export --appId=xxx --appSecret=xxx  --exportPath=/home/feishu-document 
    sudo ./feishu-doc-export --appId=xxx --appSecret=xxx  --exportPath=/home/feishu-document --saveType=
    sudo ./feishu-doc-export --appId=xxx --appSecret=xxx  --exportPath=/home/feishu-document --saveType=docx
    sudo ./feishu-doc-export --appId=xxx --appSecret=xxx  --exportPath=/home/feishu-document --saveType=abcdefg
    
  • 耗时测试

    • 导出为docx最快
    • 导出为markdowndocx的速度差不多
    • 导出为pdf速度最慢,因为pdf的图片是内嵌的
    • 实际速度与网速和飞书服务器响应,电脑磁盘写入速度都有关系
  • 注意事项:

    1. 文档导出为markdown时,存在文档格式丢失的问题,原因是因为我的实现方式是利用飞书自提供的接口先将文档下载为docx,然后再将docx转为markdown,文档下载为docx后就已经存在格式丢失的问题了,所以不能很好的转换为markdown。而上面提到的两个开源库都是自己做的处理,它们都是直接将飞书原始数据转换为markdown语法的。feishu-backup是作者自己对飞书原始数据做的转换(牛逼),feishu2md则是用了一个针对飞书数据转换的库。

    2. feishu-doc-export目前已发现docx转为markdown丢失的格式有:引用语法、表格、行内代码块

    3. 对于飞书文档中引用的其他文档,如果引用的文档是当前知识库的文档,则该文档下载到本地后会以相对路径引用另一个文档,因为另一个文档也会下载到本地。

      如果引用的文档是其他知识库或者是外链,则当前文档下载后还是以原文方式引用。

  • 导出的效果图展示

    基于.Net Core实现的飞书所有文档一键导出服务(支持多系统)文章来源地址https://www.toymoban.com/news/detail-526555.html

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

  • 支持下载知识库中的文件,如:pdf、图片等
  • 优化程序异常情况,保证下载过程中不中断

到了这里,关于基于.Net Core实现的飞书所有文档一键导出服务(支持多系统)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ASP.NET Core Razor官方文档踩坑

    环境:ASP.NET Core 3.1 工具:VS2019 官方文档的起始页地址:教程:使用 ASP.NET Core 创建 Razor Pages Wb 应用 | Microsoft Learn 添加基架生成CRUD类时,提示报错 To scaffold controllers and views using models please install Entity Framework core packages and try again: Microsoft.EntityFrameworkCore.Design 解决方法: 安装

    2024年02月05日
    浏览(45)
  • ASP.NET Core Web API下基于Keycloak的多租户用户授权的实现

    在上文《Keycloak中授权的实现》中,以一个实际案例介绍了Keycloak中用户授权的设置方法。现在回顾一下这个案例: 服务供应商(Service Provider)发布/WeatherForecast API供外部访问 在企业应用(Client)里有三个用户:super,daxnet,nobody 在企业应用里有两个用户组:administrators,u

    2024年04月22日
    浏览(52)
  • 【.net core】获取或排除指定控制器的 Swagger 文档配置

    在api接口开发完成后,我们经常会使用swagger文档配置来查看相关接口信息,有时候也会查看指定某个控制器来生成swagger文档,或是排除某些控制器等操作,如下为示例

    2024年02月12日
    浏览(44)
  • Asp.net Core使用Microsoft.Office.Interop.Word转换文档

    源代码网络上有很多,但是使用过程中发现问题还是有的,尤其是在文档属性配置不同的时候,出现的问题就是不能转换。在开发端没有问题,但在不同于开发端电脑的配置情况下,会出现意向不到的问题。此处对解决方案进行记录。 using Word = Microsoft.Office.Interop.Word;   pub

    2024年02月05日
    浏览(62)
  • 福利来袭,.NET Core开发5大案例,30w字PDF文档大放送!!!

    千里之行,始于足下,若想提高软件编程能力,最最重要的是实践,所谓纸上得来终觉浅,绝知此事要躬行。根据相关【艾宾浩斯遗忘曲线】研究表明,如果不动手实践,记住的东西会很快忘记。 为了便于大家查找,特将之前开发的.Net Core相关的五大案例整理成文,共计44

    2024年02月03日
    浏览(44)
  • 基于.NET实现的家电维修保养信息系统[含文档+PPT+源码等]精品

    1 项目简介 Hi,各位同学好呀,这里是卡莫! 基于.NET实现的家电维修保养信息系统[含文档+PPT+源码等]精品  该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具: 开发软件:VS 2017 (版本2017以上即可,不能低于2017) 数据库

    2024年02月04日
    浏览(54)
  • 『EasyNotice』.NET开源消息通知组件——快速实现邮件/钉钉/飞书/企业微信告警通知

    📣读完这篇文章里你能收获到 了解博主开源的告警通知项目——EasyNotice 傻瓜式扩展方法直接使用 如何通过EasyNotice快速实现邮件/钉钉/飞书/企业微信的通知发送 感谢点赞+收藏,避免下次找不到~ 这是博主开源的一个基于.NET开源的消息通知组件,它包含了邮件、钉钉、飞书

    2023年04月08日
    浏览(50)
  • 从0到1手把手教你ASP.NET Core Web API项目配置接口文档Swagger(一)

    1、双击打开VS2022。 2、单击“创建新项目”,如下图。 3、选择“ASP.NET Core Web API”类型,然后单击“下一步”,如下图。 4、“项目名称”此处填写为“AllTestDemo”;“位置”此处放在E盘根目录;“解决方案名称”此处默认与“项目名称”保持一致;不勾选“将解决方案和项

    2023年04月11日
    浏览(63)
  • 从0到1手把手教你ASP.NET Core Web API项目配置接口文档Swagger(二)

    传送门:从0到1手把手教你ASP.NET Core Web API项目配置接口文档Swagger(一) 我们虽然可以在输入 /swagger 后顺利的访问 Swagger UI 页面,但是我们发现每次运行项目都会默认访问 /weatherforecast 这个接口,想要将启动页设为 /swagger (或者其他页面)就需要用到配置文件 launchSettings.

    2023年04月12日
    浏览(48)
  • 【飞书】飞书导出md文档 | 飞书markdown文档导出 | 解决飞书只能导出pdf word

    github地址:https://github.com/Wsine/feishu2md 这是一个下载飞书文档为 Markdown 文件的工具,使用 Go 语言实现。 请看这里:招募有需求和有兴趣的开发者,共同探讨开发维护,有兴趣请联系。 《一日一技 | 我开发的这款小工具,轻松助你将飞书文档转为 Markdown》 配置文件需要填写

    2024年02月15日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包