从 Trello 卡片下载附件

问题描述 投票:0回答:1

我正在尝试使用

py-trello
从 Trello 板上的卡片下载所有附件。

这是示例代码(已删除私人信息):

from trello import TrelloClient
import requests

personal_token = ''
account_token = ''

client = TrelloClient(api_key=personal_token, api_secret=account_token)

board = client.get_board('')

cards = board.all_cards()
for card in cards:
    for attachment in card.get_attachments():
        response = requests.get(attachment.url)

        if response.status_code == 200:
               with open(attachment.name, 'wb') as file:
                   file.write(response.content)
        else:
            print(response.status_code, response.text)
    
        break
    break

问题是,当我尝试使用

401 Unauthorised
获取 URL 时,出现
requests
错误。我尝试添加基本身份验证,如下所示:

basic = HTTPBasicAuth(personal_token, account_token)

同样的问题。我也尝试过将其添加到 URL,如下所示:

url = f'{url}?key={personal_token}&token={account_token}'

但它也失败了。我查看了

py-trello
代码,但我无法轻松看出它是否具有下载附件功能。

python python-3.x python-requests trello
1个回答
0
投票

问题是令牌必须在标头中发送。文件名也必须从 url 中获取。

这是更新后的代码:

from trello import TrelloClient
import requests

personal_token = ''
account_token = ''

client = TrelloClient(api_key=personal_token, api_secret=account_token)

board = client.get_board('')

headers = {
    "Authorization": f'OAuth oauth_consumer_key="{personal_token}", oauth_token="{account_token}"'
}

cards = board.all_cards()
for card in cards:
    for attachment in card.get_attachments():
        response = requests.get(attachment.url)
        file_name = attachment.url.split('/')[-1]

        if response.status_code == 200:
               with open(file_name, 'wb') as file:
                   file.write(response.content)
        else:
            print(response.status_code, response.text)
    
        break
    break
© www.soinside.com 2019 - 2024. All rights reserved.