'How to send image by URL with telegram API using python?
I have the following code to send image, but I can send only local images, how can I send image by specifying just URL?
from PIL import Image
import requests
img = open("https://images.unsplash.com/photo-1498050108023-c5249f4df085?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1172&q=80")
TOKEN = "token"
CHAT_ID = "@channel_id"
url = f'https://api.telegram.org/bot{TOKEN}/sendPhoto?chat_id={CHAT_ID}'
print(requests.get(url, files={'photo': img}))
How can I send image by link?
Thank you in advance.
Solution 1:[1]
You could do something like this:
import io
from PIL import Image
import requests
TOKEN = "token"
CHAT_ID = "@channel_id"
url = f"https://api.telegram.org/bot{TOKEN}/sendPhoto?chat_id={CHAT_ID}"
img_url = "https://images.unsplash.com/photo-1498050108023-c5249f4df085?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=1172&q=80"
response = requests.get(img_url)
img = Image.open(response.content)
# save image in memory
img_bytes = io.BytesIO()
img.save(img_bytes, format="PNG")
img_bytes.seek(0)
files = {"photo": img_bytes}
requests.post(url, files=files)
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 |
