我正在尝试使用
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
代码,但我无法轻松看出它是否具有下载附件功能。
问题是令牌必须在标头中发送。文件名也必须从 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