Как отправить фото vk api
Перейти к содержимому

Как отправить фото vk api

  • автор:

Как отправить фото с ПК в беседу VK_API

Всем привет! Мне надо, чтобы бот отправлял фотку C ПК в беседу ВКонтакте. Вот моя часть кода:

import vk_api from bs4 import BeautifulSoup import time import requests vk_session = vk_api.VkApi(token=TOKEN1) # Вход по токену. vk = vk_session.get_api() slovo = 'изменения' or 'изменение' or 'расписание' url = 'https://vk.com/' + doc if slovo in text: if ts > old_ts: print('-----------------') print('отправил сообщение') print('-----------------\n') arg = 'wall-'+new_owner+'_'+ts_id # получаем данный на последний пост webbrowser.open_new_tab(url) time.sleep(1) screen = pyautogui.screenshot('screenshot.png') pyautogui.screenshot('screenshot.png', region=(814, 300, 100, 200)) template = pyautogui.locateOnScreen('screenshot.png') #vk.messages.send(chat_id='2',random_id = '',attachment = arg,message = '.') # отправляем от лица группы в ЛС time.sleep(8) os.remove('C:\\Users\\weil\\Desktop\\vk\\screenshot.png') print('successful') 

Отслеживать

3,175 3 3 золотых знака 11 11 серебряных знаков 36 36 бронзовых знаков

Как отправить фото в Вк ботом с помощью Python?

Я новичок и только начал разбираться в pythone. Посмотрел много решений не помогло. Я хочу отправить фото с компьютера в личное сообщение с пользователем от имени сообщества. Помогите пожалуйста и пожалуйста можно очень подробно.
Заранее спасибо.

  • Вопрос задан более трёх лет назад
  • 16733 просмотра

Комментировать
Решения вопроса 0
Ответы на вопрос 3

EvgenyCherny

EvgenyCherny @EvgenyCherny
I’m don’t want you say I love you.
Привет, ты можешь воспользоваться комментариями выше, но я отвечу на твой вопрос

«Я хочу отправить фото с компьютера»

так вот чтобы отправить фото с компьютера нужно его загрузить и отправить методом messages.send
Ниже приведен код:

a = vk.method("photos.getMessagesUploadServer") b = requests.post(a['upload_url'], files=).json() c = vk.method('photos.saveMessagesPhoto', )[0] d = "photo<>_<>".format(c["owner_id"], c["id"]) vk.method("messages.send", )

Также не забудьте прописать import requests

Ответ написан более трёх лет назад
Нравится 1 1 комментарий
Знаю, что поздно пишу, но у меня ошибка

File "E:\Projects\Bots\Telegram Bot to Vk posting\vk2.py", line 10, in b = requests.post(vk.method("photos.getMessagesUploadServer")['upload_url'], files=).json() TypeError: VkApiMethod.__call__() takes 1 positional argument but 2 were given

Bloodie_lie

Роман @Bloodie_lie
В vk_api встроена нужная вам функция VkUpload
Пример:

upload = vk_api.VkUpload(vk) photo = upload.photo_messages('вашфайл') owner_id = photo[0]['owner_id'] photo_id = photo[0]['id'] access_key = photo[0]['access_key'] attachment = f'photo__' vk.messages.send(peer_id=event.object.peer_id, random_id=0, attachment=attachment)

Ответ написан более трёх лет назад
Нравится 1 2 комментария
wenzeslaus @wenzeslaus

знаю поздно пишу , но у меня он жалуется на последнюю строчку vk.messages.send(peer_id=event.object.peer_id, random_id=0, attachment=attachment)
Traceback (most recent call last):
File «C:/Users/slava/PycharmProjects/pythonProject1/venv/test.py», line 24, in
vk.messages.send(peer_id=event.object.peer_id, random_id=0, attachment=attachment)
NameError: name ‘event’ is not defined

Я в этом деле новичок, но хотелось бы узнать почему это могло произойти. В качестве фотографии я использую скриншот

pg.screenshot("screenshotacran.png") upload = vk_api.VkUpload(vk) photo = upload.photo_messages('screenshotacran.png') owner_id = photo[0]['owner_id'] photo_id = photo[0]['id'] access_key = photo[0]['access_key'] attachment = f'photo__' vk.messages.send(peer_id=event.object.peer_id, random_id=0, attachment=attachment)

Как загрузить фото на стену сообщества с vk api Python?

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

import vk_api from vk_api import VkUpload from vk_api.longpoll import VkLongPoll, VkEventType from vk_api.utils import get_random_id import requests import csv import json #Процесс авторизации token = #Тут мой токен authorize = vk_api.VkApi(token = token) longpoll = VkLongPoll(authorize) photo = 'photo/2.jpg' # Сюда помещаю фото из папки image = photo upload = VkUpload(authorize) upload_image = upload.photo_messages(photos = image)[0] attachments = 'photo<>_<>'.format(upload_image['owner_id'], upload_image['id']) href = "'" + attachments + "'" #Проверял, на выходе получается результат по шаблону 'photo100172_166443618' # Функция отправки на стену def send_content( href): authorize.method('wall.post', )
  • Вопрос задан более трёх лет назад
  • 720 просмотров

Комментировать
Решения вопроса 1

SoreMix

soremix @SoreMix Куратор тега Python

1. Зачем нужны кавычки в href = «‘» + attachments + «‘» ?
2. Загружаете фото на сервер для отправки в ЛС, а сами пытаетесь загрузить фото на стену. Используйте метод для загрузки на стену, как ни странно.

Ответ написан более трёх лет назад

idontgetit

Дмитрий @idontgetit Автор вопроса

Хах. Точно
Большое спасибо за помощь.

Я новичок и данный код собран кусками с разных уроков, а то что загружает фото в других назначениях не учёл, отчасти из-за внимательности, отчасти из-за частичного непонимания принципов работы

Ответы на вопрос 0
Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python

Pandas, может ли он задавать ширину столбца при записи в excel таблицу?

  • 1 подписчик
  • 9 часов назад
  • 28 просмотров

Исходник Гайд Как отправить фото в VK

Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно.
Вам необходимо обновить браузер или попробовать использовать другой.

Yondime
кавайчик

Автор темы
Проверенный

Всем привет, был заказ с отправкой фотки в ВК, поискал инфу на бластхаке и не нашел, решил заставить сделать @th3egdvach ​

Первым делом нам нужно подключить необходимые либы и ввести токен с айди юзера + рандомное число для ВК АПИ

Вводим константы + либы:

local requests = require("requests") -- самая крутая либа local USER_ID = 010101010110 -- айди пользователя local GROUP_TOKEN = "ПРИВАТКА" -- токен группы

Нужная функция для ВК АПИ, получаем рандомное число:

function randomInt() -- выдает рандомное число, чтобы сообщение отправилось ( требует вк апи ) math.randomseed(os.time() + os.clock()) return math.random(-2147483648, 2147483648) end

Чтобы отправить фото, мы сделаем функцию для простого использования
Вызываем функцию отправления фотографии:

sendPhoto(getGameDirectory()..'/1.png') function sendPhoto(path) -- содержимое функции распишу ниже end

Для отправки фотки, следуя методам по апи вк, нужно залить ее на сервер
Загрузка фотки на сервер:

local upResponse = requests.post(("https://api.vk.com/method/photos.getMessagesUploadServer?user_id=%d&access_token=%s&v=5.131"):format(USER_ID, GROUP_TOKEN)).json() -- отправляем запрос на метод вк, в котором получаем ссылочку для загрузки local uploadedResponse = uploadPhoto(path, upResponse.response.upload_url) -- загружаем фото на ссылку

Функция загрузки фотки по ссылке:
Загружаем фотографию по полученной ссылке:

function uploadPhoto(filename, uploadUrl) local fileHandle = io.open(filename,"rb") if (fileHandle) then local fileContent = fileHandle:read( "*a" ) fileHandle:close() local boundary = 'abcd' local header_b = 'Content-Disposition: form-data; name="file"; filename="' .. filename .. '"\r\nContent-Type: image/png\r\n' local fileContent = '--' ..boundary .. '\r\n' ..header_b ..'\r\n'.. fileContent .. '\r\n--' .. boundary ..'--\r\n' local resp = requests.post(uploadUrl, < headers = < ["Content-Length"] = fileContent:len(), ['Content-Type'] = 'multipart/form-data; boundary=' .. boundary >, data = fileContent >) return resp.json() end end

Дальше мы сохраняем нашу фоточку по методу в вк апи чтобы получить нужные нам данные для прикрепления ее к сообщению

Получаем данные для прикрепления фотографии к сообщению:

local saveResponse = requests.post(("https://api.vk.com/method/photos.saveMessagesPhoto?server=%d&photo=%s&hash=%s&access_token=%s&v=5.131"):format(uploadedResponse.server,uploadedResponse.photo,uploadedResponse.hash, GROUP_TOKEN)).json() local image = saveResponse.response[1] local att_image = ("photo%d_%d_%s"):format(image.owner_id, image.id, image.access_key)

Ну и в конце мы просто отправляем стандартное сообщение вк обычным методом
Отправляем сообщение с прикрепленной Фотографией:

return requests.post(("https://api.vk.com/method/messages.send?user_id=%d&attachment=%s&access_token=%s&random_id=%d&v=5.131"):format(USER_ID, att_image, GROUP_TOKEN, randomInt())) -- обычный способ отправки вк

В итоге так будет выглядеть функция в сборе:
Готовая функция sendPhoto:

function sendPhoto(path) local upResponse = requests.post(("https://api.vk.com/method/photos.getMessagesUploadServer?user_id=%d&access_token=%s&v=5.131"):format(USER_ID, GROUP_TOKEN)).json() local uploadedResponse = uploadPhoto(path, upResponse.response.upload_url) local saveResponse = requests.post(("https://api.vk.com/method/photos.saveMessagesPhoto?server=%d&photo=%s&hash=%s&access_token=%s&v=5.131"):format(uploadedResponse.server,uploadedResponse.photo,uploadedResponse.hash, GROUP_TOKEN)).json() local image = saveResponse.response[1] local att_image = ("photo%d_%d_%s"):format(image.owner_id, image.id, image.access_key) return requests.post(("https://api.vk.com/method/messages.send?user_id=%d&attachment=%s&access_token=%s&random_id=%d&v=5.131"):format(USER_ID, att_image, GROUP_TOKEN, randomInt())) end

Готовый код прикреплю в файлике ниже ��
Если есть вопросы, готов ответить на них в теме или лс группы вк ​

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *