功能:

批量上传文件夹下所有markdown文件

效果预览

在这里插入图片描述
在这里插入图片描述

项目地址

https://gitee.com/vsroom/java-utils

使用说明

要使用该程序,首先你得创建一个企业账号下的应用,已经有企业自建应用的可以跳过这个

  1. 创建一个企业账号。因为个人版飞书创建的应用不能申请权限,所以必须是企业账号创建的应用才行
  2. 在企业账号的管理后台下应用管理中创建企业自建应用
  3. 在权限管理中开启所有权限(省事)
  4. 在应用发布中创建版本并发布应用,发布后还需要手动点击申请线上发布,最后还要在应用审核中点击通过
  5. 在凭证与基础能力选项栏中找到应用的app id和app secret,调用接口的时候需要用到
  6. 调用接口添加你的企业账号为协作者。按步骤调用接口顺序
    • 首先创建一个文件夹作为根目录
    • 调用接口为你创建的目录增加协作者权限,设置为可管理角色,用户ID可在管理后台的成员与部门中找到
    • 接下来你就能在你企业账号的共享空间里找到创建的目录了,你能管理里面的文件并且接口也能操作你创建的文件

注意:

  1. resources/config.properties是配置文件,在里面配置文档相关信息,可以在应用启动后直接打印在上面,省去每次启动都重新输入
    appId=
    appSecret=
    rootFolderToken=
    
  2. 程序不会自动创建选中的根目录,所选根目录下的文件会直接在文件夹token下直接生成,有需要的话注意提前创建好文件夹
  3. 程序不会考虑云空间是否已有文件和文件夹,因此建议在空目录下导入
  4. 飞书链接可能会请求失败,因此会不可避免的对失败的请求重复请求,并且由于飞书导入速度本身就不快的问题,再加上飞书不支持并发调用,
    因此程序运行时长可能会有些长
  5. 删除接口也可能会报错,因此可能会有少数几个云文件不会被删除,依旧在云空间

特点:

解决飞书不能识别本地链接的问题

  1. 该应用上传的markdown文件之间相互引用会被记录下来,上传为文档后依旧保持引用关系
  2. 解决文档的上传无法处理markdown对本地图片引用的问题

代码逻辑:

  1. 记录所选文件夹下markdown文件中本地链接的依赖关系,将原有文件拷贝一份后将原链接替换为伪造链接
  2. 本地图片的引用则先上传图片到图床获取链接后在markdown中将其替换
  3. 在云空间中递归创建文件夹和上传文件
  4. 导入上传的文件
  5. 查询所有导入任务结果并记录文档token
  6. 遍历所有文件的块对存在伪造链接的块进行更新,替换伪造链接为云文档token
  7. 删除上传的文件和电脑上拷贝的临时文件

难题:

  1. 飞书导入云文档对链接的处理有特点,本地链接会被认为为纯文本,不会视为链接,需要先生成伪造链接在上传并导入。
    本地图片的链接虽然会生成一个空状态图片,但是不会保留原图片的任何信息,无法找到与本地图片的对应关系,只好先将本地图片上传至图床,导入过程会自动将图片下载到飞书上
  2. 文档的块类型丰富,返回的JSON数据往往类型较多并且多层嵌套,需要判断是哪种类型并且有没有url,要做多层判断并针对性处理
  3. 接口可能会不可控因素报错,原因可能有连接超时、触发接口频控、飞书内部可重试错误等其他问题,需要对接口多次测试并对每种问题针对处理
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐