用 Python API 来下载一个表中的文件和图片

SeaTable 提供了 API get_file_download_link(path) 来下载表中的文件和图片。这里的主要问题是怎么从文件单元格和图片单元格中的内容来获取 path 值。下面来具体说明

一个文件单元格的格式如下

[ {'name': 'orders-2020.9-2.pdf',
   'size': 7745408,
   'type': 'file',
   'url': 'https://cloud.seatable.cn/workspace/24193/asset/65ed2248-9134-4500-8848-ad430ec70bed/files/2020-09/%E5%BA%9F%E6%B0%94%E6%A3%80%E6%B5%8B2020.9-2.pdf'} ]

对文件单元格,我们可以用以下的方式来取的 path 列表:

from urllib import parse
files = row.get('文件列名'), [])
urls = [file.get('url') for file in files]
paths = []
for url in urls:
  path = parse.unquote(url[url.find('/files/'):])
  paths.append(path)

一个图片单元格的格式如下

['https://cloud.seatable.cn/workspace/24193/asset/65ed2248-9134-4500-8848-ad430ec70bed/images/2020-09/image%20(9).png', 'https://cloud.seatable.cn/workspace/24193/asset/65ed2248-9134-4500-8848-ad430ec70bed/images/2020-09/image%20(10).png']

对图片单元格,我们可以用以下的方式来取的 path 列表:

from urllib import parse
images = row.get('图片列名'), [])
urls = [image.get('url') for image in images]
paths = []
for url in urls:
  path = parse.unquote(url[url.find('/images/'):])
  paths.append(path)

有了路径,我们就可以调用 get_file_download_link(path) 来下载文件和图片了:

file_url = base.get_file_download_link(path)
file_name = parse.unquote(file_url.split('/')[-1])
response = requests.get(file_url)
with open(os.path.join(dir_name, file_name), 'wb') as f:
        f.write(response.content)

完整的例子可以参考:

有没有具体教程和文档例子
不会用 Python API ,筛选后如何批量的下载列里面的文件和图片

上面这个文件 (file_download.py) 中的代码具体是哪行看不懂呢?

都看不懂
直接视频教程可以吗?
筛选之后XLS,保存到本地,然后让图片显示出来的完整视频教程

不会用这个 Python API 有没有其他简单的方法解决 下载表格到本地
能看到图片缩略图。

不灵了,下载的是一个提示没有权限的网页,是不是还要登录?

用 api_token 是不需要登录的。检查下你的代码。

使用的是 api_token
把github上的代码完全复制过来,只改了网址和api_token

token需要将access_token:“ ”,里面的所有内容都替换api_token = ’ ’ 中

我比较好奇的是,是不是base.auth()之后,程序就一直在运行着?直到强行终止?

用 Python API 来下载一个表中的图片遇到问题 - 未分类 - SeaTable 论坛

解决了吗?

版主您好,今天我尝试了这套Python代码,可以下载通过dtable网页上传的文件、图片,但是无法下载通过Seafile资料库选择的文件(我现在使用seafile专业版和seatable开发者版,Seatable已经连通了Seafile资料库)。请问目前有没有解决方法呢?或者说需要在代码需要先得到Seafile的类似Access Token的东西,另写个get_file_download_link的函数?