我正在尝试使用 Http 请求将图形发送到 slack 通道,但我只能看到一个空白 png。 如果我使用 slack WebClient 发送相同的图表,它会成功,但不使用 http 请求。
data_anomalies_trend_pd = data_anomalies_trend.toPandas()
plt.figure(figsize=(10, 6))
plt.plot(data_anomalies_trend_pd['date'], data_anomalies_trend_pd['visitors'], marker='o', linestyle='-', color='b')
plt.title('Visitor Trend Over Time')
plt.xlabel('Date')
plt.ylabel('Visitors')
plt.xticks(rotation=45) # Rotate x-axis labels for better readability
plt.tight_layout()
plt.show()
plt.savefig("visitor_trend.png")
with open("visitor_trend.png", "rb") as image_file:
payload = {
'channels': channel_id,
'filetype': 'png',
'filename': 'visitor_trend.png',
'title': 'visitor trend'
}
headers = {
'Authorization': f'Bearer {slack_bot_token}'
}
response = requests.post(
url='https://slack.com/api/files.upload',
data=payload,
headers=headers,
files={'file': image_file}
)
我需要使用http请求而不是WebClient,因为我对安装slack有要求。
我只是将 png 改为 jpg 就可以了。
由于某种原因,WebClient 似乎可以使用 png,而 http 请求可以很好地使用 jpg
data_anomalies_trend_pd = data_anomalies_trend.toPandas()
plt.figure(figsize=(10, 6))
plt.plot(data_anomalies_trend_pd['date'], data_anomalies_trend_pd['visitors'], marker='o', linestyle='-', color='b')
plt.title('Visitor Trend Over Time')
plt.xlabel('Date')
plt.ylabel('Visitors')
plt.xticks(rotation=45) # Rotate x-axis labels for better readability
plt.tight_layout()
plt.show()
plt.savefig("visitor_trend.jpg")
with open("visitor_trend.jpg", "rb") as image_file:
payload = {
'channels': channel_id,
'filetype': 'jpg',
'filename': 'visitor_trend.jpg',
'title': 'visitor trend'
}
headers = {
'Authorization': f'Bearer {slack_bot_token}'
}
response = requests.post(
url='https://slack.com/api/files.upload',
data=payload,
headers=headers,
files={'file': image_file}
)