Python vk api как получить картинку от пользователя и затем ему же ее отправить

Начал разбираться в питоне, пробую различные функции vk-api. Сейчас бот принимает любое сообщение и отправляет только определенную картинку. Необходимо чтобы он сразу получил картинку от пользователя и отправил ее ему же. Заранее спасибо.

import vk_api from vk_api.longpoll import VkLongPoll, VkEventType from activ_token import VK_TOKEN vk_session = vk_api.VkApi(token=VK_TOKEN) session_api = vk_session.get_api() longpoll = VkLongPoll(vk_session) def sender(text): vk_session.method(‘messages.send’, ) def send_photo(url): vk_session.method(‘messages.send’, ) for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW: if event.to_me: msg = event.text.lower() sender(msg) send_photo(‘url картинки’)
Отслеживать
задан 2 июл 2020 в 12:00
19 3 3 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию
def send_photo(peer_id, attachments, random_id=0): vk_session.method(‘messages.send’, ) for item in event.object[‘attachments’]: if item[‘type’] == ‘photo’: send_photo(event.user_id, ‘photo<>_<>’.format(item[‘owner_id’], item[‘id’]))
Отслеживать
ответ дан 2 июл 2020 в 16:40
Overlordix Overlordix
372 1 1 серебряный знак 10 10 бронзовых знаков

  • python
  • vkontakte-api
    Важное на Мете

Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

отправляем картинку с помощью вк бота(на python)

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник: ru.stackoverflow.com

Как получить картинку от пользователя и отправить эту же картинку этому же пользователю. vk_api python?

Мне нужно, чтобы, когда пользователь отправлял картинку боту, бот отправлял эту картинку ему же, а точнее сохранить её URL в переменную, чтобы в дальнейшем работать с картинкой. Перекопал весь интернет, но не нашёл ничего нормального и работающего. Я знаю как отправить картинку, зная только url, поэтому мне самое главное получить url присланной картинки.
Это я что-то пытался сделать:

import vk_api from vk_api.longpoll import VkLongPoll, VkEventType token= ‘. ‘ vk_session = vk_api.VkApi(token=token) session_api = vk_session.get_api() longpoll = VkLongPoll(vk_session) def sender(text): vk_session.method(‘messages.send’, ) def send_photo(url): vk_session.method(«messages.send», ) for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW: if event.to_me: msg = event.text.lower() sender(msg) elif event.type == ‘photo’: if event.to_me: send_photo(‘photo-<>_<>’.format(event[‘user_id’], event[‘id’]))

Python API VKontakte!! Как скачать фотографии из ВК через API?


Это как отправить картинку с помощью её url:

import vk_api from vk_api.longpoll import VkLongPoll, VkEventType vk_session = vk_api.VkApi(token=’. ‘) session_api = vk_session.get_api() longpoll = VkLongPoll(vk_session) def sender(text): vk_session.method(‘messages.send’, ) def send_photo(url): vk_session.method(«messages.send», ) for event in longpoll.listen(): if event.type == VkEventType.MESSAGE_NEW: if event.to_me: msg = event.text.lower() sender(msg) send_photo(‘photo-126879742_457245742’)

  • Вопрос задан более года назад
  • 820 просмотров
Еще по теме:  Как подписать группу в ВК с друзьями

Источник: qna.habr.com

Делаем запросы к API с помощью Python

API (Application Programming Interface – интерфейс прикладного программирования) – это сервер, который позволяет извлекать и отправлять данные с помощью кода. В основном мы используем API для получения данных. Именно эта тема и будет в фокусе нашего руководства для начинающих. Итак, приступим!

Схема работы API

Запросы API работают точно так же. Вы запрашиваете данные у сервера API, и он отвечает на ваш запрос. Сервер может вам вернуть какие-то данные или код, который будет в дальнейшем интерпретирован вашей машиной.

Например, когда возвращается HTML-код страницы, для пользователя она преображается именно в страницу с различными надписями, картинками и т.д., а не остается просто в виде кода. Конечно, всегда может что-то пойти не по плану ?, но в остальных случаях это должно работать именно так.

Различные методы HTTP и коды ответов

Для REST API есть различные HTTP-методы. Они сообщают API, какие операции необходимо выполнить с данными. Хотя HTTP-методов довольно много, с REST API чаще всего используются следующие пять:

HTTP-методОписание
GET Получить существующие данные
POST Добавить новые данные
PUT Обновить существующие данные
PATCH Частично обновить существующие данные
DELETE Удалить данные

Как только REST API получает и обрабатывает HTTP-запрос, он возвращает ответ с кодом состояния HTTP. Этот код состояния предоставляет информацию об ответе и помогает клиентскому приложению узнать, что это за ответ.

Коды ответов или коды состояния нумеруются в зависимости от категории результата:

КодКатегория результата
1хх Информационный ответ
2хх Успешная операция
3хх Перенаправление
4хх Ошибка на стороне клиента
5хх Ошибка на стороне сервера

Вы можете узнать больше о кодах состояния HTTP в веб-документации MDN.

Конечные точки API

Конечные точки API – это общедоступные URL-адреса, предоставляемые сервером, которые клиентское приложение использует для доступа к различным ресурсам и данным.

В этом руководстве мы будем использовать REST API Fake Store. В частности, мы воспользуемся следующими конечными точками:

HTTP-метоКонечная точка APIОписание
GET /products Получить список продуктов
GET /products?limit=x Получить только х товаров (к примеру, только 5 товаров)
GET /products/ Получить один конкретный продукт
POST /products Создать новый продукт
PUT /products/ Обновить товар
PATCH /products/ Частично обновить товар
DELETE /products/ Удалить товар

Каждая из вышеперечисленных конечных точек выполняет разные действия в зависимости от метода HTTP. Для каждого URL-адреса API базовый URL-адрес это: https://fakestoreapi.com. Мы будем исследовать запросы по очереди.

Однако сначала нам нужно установить внешнюю библиотеку для использования этих API. Большинство разработчиков Python для взаимодействия с веб-сервисами используют библиотеку запросов requests. Вы можете установить эту библиотеку с помощью команды pip следующим образом:

$ pip install requests

Как только библиотека установлена, все готово и можно приступать!

Как сделать запрос GET

Это один из наиболее распространенных методов HTTP-запросов, с которыми вы столкнетесь. Это операция только для чтения, позволяющая получать данные из API.

Еще по теме:  Как установить приложение vk music

Давайте попробуем использовать запрос GET на первой конечной точке из упомянутых выше. Она должна вернуть список продуктов.

import requests BASE_URL = ‘https://fakestoreapi.com’ response = requests.get(f»/products») print(response.json())

В приведенном выше сценарии используется метод requests.get() для отправки запроса GET в конечную точку API /products. Данный запрос возвращает нам список всех продуктов. Затем мы вызываем метод .json() , чтобы просмотреть полученный ответ JSON. Выглядит он так:

Если вы присмотритесь, ответ в виде JSON выглядит как список словарей в Python. JSON – это очень популярный формат обмена данными для REST API.

Вы также можете получить и другие атрибуты, связанные с ответом, например код состояния. Это будет выглядеть следующим образом:

print(response.status_code) # OUTPUT >>> 200

Как известно, код состояния 200 означает, что нам пришел успешный ответ и всё сработало отлично.

Поскольку конечная точка /products возвращает много данных, давайте ограничим эти данные только тремя продуктами.

Для этого у нас есть конечная точка /products?limit=x, где x – это положительное целое число. limit (лимит, ограничение) — параметр запроса. Давайте посмотрим, как мы можем добавить этот параметр в наш запрос:

import requests BASE_URL = ‘https://fakestoreapi.com’ query_params = < «limit»: 3 >response = requests.get(f»/products», params=query_params) print(response.json())

Метод requests.get() принимает параметр с именем params , в котором мы можем указать параметры нашего запроса в формате словаря Python. Таким образом, мы создаем словарь с именем query_params и передаем limit в качестве ключа и 3 в качестве значения. Затем мы передаем этот словарь query_params в request.get() . Теперь наш код выглядит следующим образом:

Таким образом, у нас есть данные об ответах, ограниченные всего тремя продуктами. Попробуем получить только один товар, id которого равен 18.

import requests BASE_URL = ‘https://fakestoreapi.com’ response = requests.get(f»/products/18″) print(response)

Поскольку у нас есть конечная точка /products/, мы можем передать идентификатор 18 в URL-адресе API и сделать для него запрос GET. Ответ будет выглядеть следующим образом:

Как сделать POST-запрос

Мы используем запрос POST для добавления новых данных в REST API. Данные отправляются на сервер в формате JSON, который выглядит как словарь Python. Согласно документации Fake Store API, у продукта есть следующие атрибуты: title (название), price (цена), description (описание), image (изображение) и category (категория). Итак, наша новинка выглядит так:

new_product = < «title»: ‘test product’, «price»: 13.5, «description»: ‘lorem ipsum set’, «image»: ‘https://i.pravatar.cc’, «category»: ‘electronic’ >

Мы можем отправить запрос POST с помощью метода requests.post() следующим образом:

import requests BASE_URL = ‘https://fakestoreapi.com’ new_product = < «title»: ‘test product’, «price»: 13.5, «description»: ‘lorem ipsum set’, «image»: ‘https://i.pravatar.cc’, «category»: ‘electronic’ >response = requests.post(f»/products», json=new_product) print(response.json())

В методе request.post() мы можем передавать данные JSON с помощью аргумента json . Использование аргумента json автоматически устанавливает в Content-Type значение Application/JSON в заголовке запроса.

Еще по теме:  Как добавить еще один аккаунт в ВК на телефоне

Как только мы сделаем запрос POST в конечной точке /products, мы получим объект продукта с идентификатором в ответе. Этот ответ выглядит так:

Если мы не используем аргумент json , мы должны сделать запрос POST следующим образом:

import requests import json BASE_URL = ‘https://fakestoreapi.com’ new_product = < «title»: ‘test product’, «price»: 13.5, «description»: ‘lorem ipsum set’, «image»: ‘https://i.pravatar.cc’, «category»: ‘electronic’ >headers = < «Content-Type»: «application/json» >response = requests.post(f»/products», data=json.dumps(new_product), headers=headers) print(response.json())

В этом случае, когда мы используем аргумент data вместо json , нам нужно явно установить Content-Type на application/json в заголовке. Когда мы используем аргумент json , нам не нужно сериализовать данные, но в данном случае это необходимо и делается с помощью json.dumps() .

Как сделать запрос PUT

Нам часто требуется обновить существующие данные в API. Используя запрос PUT, мы можем обновить данные полностью. Это означает, что, когда мы делаем запрос PUT, он заменяет все старые данные новыми.

В запросе POST мы создали новый продукт с идентификатором 21. Давайте обновим старый продукт на новый, сделав запрос PUT к конечной точке products/. Напишем следующий код:

import requests BASE_URL = ‘https://fakestoreapi.com’ updated_product = < «title»: ‘updated_product’, «category»: ‘clothing’ >response = requests.put(f»/products/21″, json=updated_product) print(response.json())

Когда мы делаем запрос PUT с updated_product с помощью метода requests.put() , он возвращает нам следующие данные JSON:

Обратите внимание, что старый продукт был полностью заменен обновленным продуктом.

Как сделать PATCH-запрос

Иногда нам не нужно полностью заменять старые данные. Скорее мы хотим изменить только определенные поля. В этом случае мы используем запрос PATCH.

Давайте обновим категорию ( category ) продукта обратно с clothing (одежды) на electronic (электронику), сделав запрос PATCH к конечной точке products/. Наш код будет выглядеть так:

import requests BASE_URL = ‘https://fakestoreapi.com’ updated_product = < «category»: ‘electronic’ >response = requests.patch(f»/products/21″, json=updated_product) print(response.json())

В этом случае мы используем метод requests.patch() , который возвращает такой ответ:

Обратите внимание, что на этот раз все данные не изменились – обновилось только поле category (категория).

Как сделать запрос DELETE

Как следует из названия, если вы хотите удалить ресурс из API, вы можете использовать запрос DELETE. Удалим товар с идентификатором, равным 21:

import requests BASE_URL = ‘https://fakestoreapi.com’ response = requests.delete(f»/products/21″) print(response.json())

Метод requests.delete() помогает нам сделать запрос DELETE к конечной точке /products/.

Заключение

В этом руководстве мы рассмотрели, как взаимодействовать с веб-сервисами с помощью Python. Мы рассказали о пяти разных запросах: GET, POST, PUT, PATCH и DELETE. Более того, мы разобрали на примерах их синтаксис и принцип работы. Также мы обсудили, какие есть коды ответов или коды состояния и что они значат.

Надеемся, вам понравилось данное руководство – спасибо, что прочитали! Успехов в написании кода!

Источник: pythonist.ru

Рейтинг
( Пока оценок нет )
Загрузка ...