В статье рассмотрим способ хранения наших изображений на серверах бесплатного сервиса от Telegram. Многие наверняка с ним работали. Я говорю о бесплатном и удобном (как в прочем и все остальные их продукты) редакторе статей telegra.ph.
Во время блокировки телеги на территории России этот сайт также был недоступен (если для кого-то это было проблемой). Однако, сейчас его можно использовать на все 100.
Если кому-то интересно, как это работает, то просто вводим заголовок статьи и саму статью. Нажимаем PUBLISH и всё. Копируем ссылку из адресной строки и даём её кому хотим. Статьи и прикреплённые изображения хранятся на сервере без ограничений.
Кстати, с помощью telegra.ph можно удобно оформлять документации для своих проектов и отправлять заказчикам. Статья привязывается к устройству с помощью кук, а для дальнейшего её редактирования на любом устройстве необходимо заранее использовать специального бота.
Суть метода загрузки изображений
Копируем в буфер обмена любое изображение и переходим в редактор. Открываем консоль браузера с помощью F12, выбираем Сеть и вставляем изображение в Your story... на сайте.
Видим, что сайт отправляет POST-запрос с нашим изображением, а в ответе возвращает ссылку на уже загруженное изображение в формате Json.
Наша задача повторить тоже самое, но только через консоль Python. Всё, что нам для этого понадобится, это библиотеки requests и стандартная библиотека json для преобразования ответа в словарь.
import requests
import json
with open('image.jpg', 'rb') as read_file:
files = {'file': read_file.read()}
request = requests.post('https://telegra.ph/upload', files=files)
response = json.loads(request.text)
image_url = 'https://telegra.ph' + response[0]['src']
print(image_url)
В ответе получаем список словарей с endpoint'ами на изображения, а в переменной image_url добавляем адрес сайта, запускаем скрипт и получаем ссылку на изображение.
Один главный минус - все изображения преобразуются в jpg. Но для простых проектов, я думаю, это не проблема.
Ещё один вопрос, которым Вы скорее всего задались. Какие ограничения? Я сделал цикл и проверил, когда сайт перестанет возвращать ссылки. Примерно на 500 запросе возвращается ошибка, но через полчаса всё продолжает работать.