首页 > 编程语言 >Python在处理飞书下载二进制文件时转换的问题

Python在处理飞书下载二进制文件时转换的问题

时间:2024-02-05 16:57:16浏览次数:29  
标签:Python access 二进制 token tenant file download response 下载

最近在使用飞书,想通过接口来下载飞书文档

https://open.feishu.cn/api-explorer/cli_a5049e070838d00c?apiName=download

发现无法将二进制流转换为文件

后来发现其文档有一些谬误,文档上写的是response.text 实际写入二进制文件需要的是response.content

#发起下载请求,拿到文件的ticket_id
xlsx_token='' #excel的token,其实就是飞书文档网址的最后一长串字符串
#tenant_access_token_actual='' #tenant_access_token 这个用飞书接口都知道是啥,类似于用户秘钥

def send_download_request(xlsx_token,tenant_access_token_actual):
    import requests
    import json

    url = "https://open.feishu.cn/open-apis/drive/v1/export_tasks"
    payload = json.dumps({"file_extension": "xlsx",
                          "sub_id": "",
                          "token": xlsx_token,
                          "type": "sheet"
                         })


    headers = {'Content-Type': 'application/json',
               'Authorization': tenant_access_token_actual
              }

    response = requests.request("POST", url, headers=headers, data=payload)
    send_download_request_json=json.loads(response.text)['data']['ticket']
    return send_download_request_json

ticket_id=send_download_request(xlsx_token,tenant_access_token_actual)
print(ticket_id)



#获取下载信息,得知文件准备下载成功后,获取file_token
def get_download_status(ticket_id,xlsx_token,tenant_access_token_actual):
    import requests

    url = "https://open.feishu.cn/open-apis/drive/v1/export_tasks/"+ticket_id+"?token="+xlsx_token
    payload = ''


    headers = {
      'Authorization': tenant_access_token_actual
    }

    response = requests.request("GET", url, headers=headers, data=payload)
    
    print(response)
    file_token=json.loads(response.text)['data']['result']['file_token']
    return file_token

#xlsx_token=''
file_token=get_download_status(ticket_id,xlsx_token,tenant_access_token_actual)
print(file_token)


#进行下载
def download_file(file_token,tenant_access_token_actual,file_loc):
    import requests
    import shutil

    url = "https://open.feishu.cn/open-apis/drive/v1/export_tasks/file/"+file_token+"/download"
    payload = ''
    print(url)


    headers = {
      'Authorization': tenant_access_token_actual
    }

    response = requests.request("GET", url, headers=headers, data=payload)
    print(response)
    # 注意,要用wb来以二进制形式写入数据,其次,要用response.content来获取二进制内容
    #with open(file_loc, 'wb',encoding='utf8') as f:
    with open(file_loc, 'wb') as f:
        f.write(response.content)

    return file_loc

file_token=''
file_loc=r'E:\EXCEL抓数\file\1.xlsx'
file_loc_path=download_file(file_token,tenant_access_token_actual,file_loc)
print(file_loc_path)

 

标签:Python,access,二进制,token,tenant,file,download,response,下载
From: https://www.cnblogs.com/castlevania/p/18008421

相关文章

  • 树莓派上基于Python控制GPIO
    树莓派上基于Python控制GPIO希望做到可以自动给阳台的花儿浇水~有以下几点:控制GPIO的拉高/拉低,并保持一段时间间隔加锁,避免重复有日志记录具体情况#!/usr/bin/envpython3#-*-coding:UTF-8-*-importRPi.GPIOasGPIOimporttimeimportfcntlimportloggingcl......
  • 页面转为pdf并下载
    <!DOCTYPE><html><head><title>html2canvas</title><metahttp-equiv="Content-Type"content="text/html;charset=UTF-8"><styletype="text/css">body......
  • (python)做题记录||2024.2.4||题目是codewars的【 All Balanced Parentheses】
    题目链接:https://www.codewars.com/kata/5426d7a2c2c7784365000783/python我的解决方案:defbalanced_parens(n):#Yourcodehere!used_l=[Falseforiinrange(n)]used_r=[Falseforiinrange(n)]answers=[]defprocess(answer):iflen(a......
  • python时实检测数据库表的数据变化
     在实际的数据处理和监控应用中,有时我们需要实时监测数据库表的数据变化,以便及时发现和处理数据更新、插入或删除操作。本文将介绍如何使用Python和数据库连接库来实现对数据库表的实时监测,帮助读者了解如何利用Python编写监控程序,实时捕获数据库表的数据变化。 第一步:连接数据......
  • Python正则表达式实战:提取字符串中的数字
    在文本处理中,有时我们需要从字符串中提取数字,并去除其他非数字字符。Python中的re模块提供了强大的正则表达式功能,可以帮助我们实现这一目标。本文将介绍如何使用Python的re模块来提取字符串中的数字,以及如何应用正则表达式进行文本处理。第一步:导入所需库和模块在开始之前,我们首先......
  • python保存图片的白色区域为透明怎么设置
    在图像处理中,有时我们需要将图片中的白色区域设置为透明,以便在后续操作中能够更好地与其他图像或背景融合。Python提供了丰富的图像处理库,如PIL(Pillow)和OpenCV,可以帮助我们实现这一目标。本文将介绍如何使用Python进行图像处理,将图片中的白色区域设置为透明。第一步:导入所需库和模......
  • python对矩阵中每个元素求绝对值的方法
    在Python中,对矩阵中每个元素求绝对值是一种常见的操作,特别在数值计算和数据处理中经常会用到。本文将介绍如何使用Python中的NumPy库来对矩阵中每个元素求绝对值,帮助读者更好地理解和应用这一操作。第一步:导入NumPy库NumPy是Python中用于科学计算的一个重要库,提供了大量用于数组操......
  • Python Fire:更加灵活的命令行参数
    之前介绍过Python的Fire库,一个用来生成命令行工具的的库。请参考:PythonFire:自动生成命令行接口今天,针对命令行参数,补充两种更加灵活的设置方式。1.*args型参数*args型的参数可以接受任意长度的参数。比如,模拟一个学校发送通知的功能:importfiredefnotions(school,*name......
  • 《视频篇》java实现下载hls(m3u8+ts)实时流并进行合并mp4
    链接:https://blog.csdn.net/qq_41604890/article/details/130143355首先需要了解什么是HLS简单理解就是,m3u8文件存放着可供客户端播放TS片段简单一点说m3u8加密技术就是将原视频分割成n个.ts文件,并用一个key文件对每一个.ts文件加密,其中m3u8文件里面存储了key文件和所有的.t......
  • 再测python3.13 —— python3.13是否移除了GIL的限制(续)
    前文:python3.13是否移除了GIL的限制x86_64ubuntu22.04环境下编译版本python3.13.0alpha0源码——python3.13.0alpha0的源码编译相关资料:PEP703–MakingtheGlobalInterpreterLockOptionalinCPythonhttps://github.com/python/cpython/issues/108223......