Форум программистов, компьютерный форум, киберфорум
Python: Web
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/30: Рейтинг темы: голосов - 30, средняя оценка - 4.60
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133

Отправить фотографию в вк через Heroku

02.10.2019, 11:35. Показов 6610. Ответов 42

Студворк — интернет-сервис помощи студентам
Нужно загрузить фотографию на сервер из интернета и отправить в вк. Думаю, мне хватит в качестве ответа где будет хранится эта фотография после ее загрузки через requests. Информацию найти не смог.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.10.2019, 11:35
Ответы с готовыми решениями:

не могу отправить фотографию
Помогите пожалуйста чайнику!:( При отправке фотографий другим пользователям на мыло или при попытке загрузить их на сайт, например...

как отправить фотографию с сайта на почту
Здравствуйте! Подскажите пожалуйста скрипт для отправки картинки с сайта с текстом http://100.goldbazaar.ru/ клиент заполняет в поле текст...

Как из альбома в ВК, использую VK api, отправить фотографию в сообщения?
Я столкнулся с такой проблемой, что не знаю, как в сообщении отправить фотографию из альбома. Читал документацию от разработчиков, там...

42
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
03.10.2019, 07:50
Студворк — интернет-сервис помощи студентам
Кирилл12321, какие? ты мне не показал вызов где ты получаешь свое b
и давай переменным нормальные имена
b запрос прошел? ты получил жсон? выведи его в консоль и выложи сюда
0
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
03.10.2019, 07:51  [ТС]
Дааа. Фото пустое -
Python
1
{'server': 853524, 'photo': '[]', 'hash': 'd54740631893ff45af5effa09e5b7cc3'}
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
03.10.2019, 07:53
Кирилл12321, весь код давай до получения b и вывода его в консоль
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
03.10.2019, 07:54  [ТС]
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import requests
import vk_api, random
from vk_api import VkUpload
import io
import json
 
token = "*********"
 
vk = vk_api.VkApi(token=token)
 
vk._auth_token()
 
content = requests.get('https://twoplayers.info/wp-content/uploads/2017/12/Air-Missions-HIND_0.jpg').content
br = io.BufferedReader(io.BytesIO(content))
a1 = vk.method("photos.getMessagesUploadServer")
b = requests.post(a1['upload_url'], files={'photo': br}).json()
print(b)
c = vk.method('photos.saveMessagesPhoto', {'photo': b['photo'], 'server': b['server'], 'hash': b['hash']})[0]
vk.method("messages.send", {"peer_id": 490933633, "message": "Фотка", "attachment": f'photo{c["owner_id"]}_{c["id"]}', "random_id": random.randint(1, 2147483647)})
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
03.10.2019, 08:01
Цитата Сообщение от Кирилл12321 Посмотреть сообщение
One of the parameters specified was missing or invalid: photos_list is invalid
а про это читал? я не знаю что это значит, может ты забыл параметр добавить

с виду все правильно, но у меня нет токена вк, да и лень этим заниматься.
Хочешь -сохраняй на диск

вот ссылка где я твою картинку закинул на сайт
https://waifu2x.booru.pics/Hom... 8c3d_s1_n1

а вот как я это сделал, причем просто в консоли, без всяких сохранений
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul  8 2019, 19:29:22) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> a = requests.get('https://twoplayers.info/wp-content/uploads/2017/12/Air-Missions-HIND_0.jpg')
>>> len(a.content)
105912
>>> con = a.content
>>> import io
>>> br = io.BufferedReader(io.BytesIO(con))
>>> url =  "https://waifu2x.booru.pics/Home/upload"
>>> HEADERS = {
...     'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65",
... }
>>> DATA = {
...     'denoise': '1',
...     'scale': '1',
... }
>>> FILES = {'img':br}
>>> rs = requests.post(url, files=FILES, data=DATA)
>>> rs.reason
'OK'
>>> rs.status_code
200
>>> rs.url
'https://waifu2x.booru.pics/Home/status?handle=H%3Awaifu%3A73924&hash=b5fc8ab89aadd7abe5d4527fa67cbcfcad088c3d_s1_n1'
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
03.10.2019, 08:03  [ТС]
Да, многие писали что можно на сервер закинуть. Как тогда загрузить?
Цитата Сообщение от Welemir1 Посмотреть сообщение
а про это читал? я не знаю что это значит, может ты забыл параметр добавить
Дак тут фото не приходит в json-e. Понятно, что ругаться будет. То есть не отправляется фотография, ответ так же пустой
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
03.10.2019, 08:10
Кирилл12321, короче, разбирайся что ты делаешь не так или сохраняй файлы во временную папку - пайтон умеет ее создавать на лету, и хероку не помешает в этом. Читаем доки в обоих случаях
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
03.10.2019, 17:01  [ТС]
Попробовал в Хероку все закинуть. Сработало, когда картинка была в 1 папке с исполняемым файлом. Однако перезаписать этот файл Хероку не смогла

Добавлено через 1 минуту
С временными файлами какие-то трудности. Нет ни одного нормального примера. Создание временной папки, но как загрузить файл в эту временную папку?

Добавлено через 28 секунд
Документация без примеров ничего не дает так же

Добавлено через 1 час 11 минут
Python
1
2
3
4
5
6
7
8
9
10
from PIL import Image
content = requests.get('https://twoplayers.info/wp-content/uploads/2017/12/Terraria_0.jpeg').content
 
image_data = content # byte values of the image
image = Image.open(io.BytesIO(image_data))
 
a1 = vk.method("photos.getWallUploadServer")
b = requests.post(a1['upload_url'], files={'photo': image}).json()
c = vk.method('photos.saveWallPhoto', {'photo': b['photo'], 'server': b['server'], 'hash': b['hash']})[0]
vk.method("wall.post", {"owner_id": -185546199, 'access_token': token, "attachment": f'photo{c["owner_id"]}_{c["id"]}', "message": "Фотка"})
Я близок к решению. Pil преобразует байты в фотографию обратно, однако ошибка все равно выходит
Python
1
2
    body.write(data)
TypeError: a bytes-like object is required, not 'JpegImageFile'
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
03.10.2019, 17:05
Лучший ответ Сообщение было отмечено Кирилл12321 как решение

Решение

Кирилл12321, а попробуй ка вот так
Python
1
2
image_data = content # byte values of the image
image = io.BytesIO(image_data)
и далее по тексту...
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
03.10.2019, 17:12  [ТС]
Python
1
2
3
4
5
6
7
8
content = requests.get('https://twoplayers.info/wp-content/uploads/2017/12/Terraria_0.jpeg').content
 
image_data = content # byte values of the image
 
a1 = vk.method("photos.getWallUploadServer")
b = requests.post(a1['upload_url'], files={'photo': open(image)}).json()
c = vk.method('photos.saveWallPhoto', {'photo': b['photo'], 'server': b['server'], 'hash': b['hash']})[0]
vk.method("wall.post", {"owner_id": -185546199, 'access_token': token, "attachment": f'photo{c["owner_id"]}_{c["id"]}', "message": "Фотка"})
Вот так немного другая ошибка -

Python
1
2
b = requests.post(a1['upload_url'], files={'photo': open(image)}).json()
TypeError: expected str, bytes or os.PathLike object, not JpegImageFile
Добавлено через 36 секунд
Сейчас попробую

Добавлено через 1 минуту
Цитата Сообщение от Welemir1 Посмотреть сообщение
image_data = content # byte values of the image
image = io.BytesIO(image_data)
Ошибка -

Python
1
vk_api.exceptions.ApiError: [100] One of the parameters specified was missing or invalid: photos_list is invalid
Добавлено через 1 минуту
Может ошибка говорит о том, что файл должен быть в jpeg расширении? Это как-нибудь сделать можно?
Цитата Сообщение от Кирилл12321 Посмотреть сообщение
TypeError: a bytes-like object is required, not 'JpegImageFile'
Добавлено через 2 минуты
Цитата Сообщение от Кирилл12321 Посмотреть сообщение
open(image)
Команда открывает же картинку по пути, а тут сразу ей картинку дают без названия и всего. Не в этом дело?
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
03.10.2019, 17:16
Цитата Сообщение от Кирилл12321 Посмотреть сообщение
One of the parameters specified was missing or invalid: photos_list is invalid
а ты это гуглил? пытался найти? там полно тем в инете что неверный запрос почти во всех случая, то груп_ид указывали то еще что-то, но не с картинкой.
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
03.10.2019, 17:38  [ТС]
Да. В картинке дело

Добавлено через 10 минут
Других предложений нет?
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
03.10.2019, 18:22
Кирилл12321, эта функция список возвращает, что ли?
Python
1
c = vk.method('photos.saveWallPhoto', {'photo': b['photo'], 'server': b['server'], 'hash': b['hash']})[0]
Покажи, что у тебя в b
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
03.10.2019, 18:26  [ТС]
Даааа. Мы отправляем в вк картинку и он должен дать к ней ссылку по типу photo131313_131414. Но массив пустой приходит.
Python
1
{'server': 858036, 'photo': '[]', 'hash': '5a3c289f7dd96a29e278c4494a3ddf31'}
Добавлено через 1 минуту
Python
1
2
3
4
content = requests.get('https://twoplayers.info/wp-content/uploads/2017/12/Terraria_0.jpeg').content
image_data = content # byte values of the image
image = io.BytesIO(image_data)
b = requests.post(a1['upload_url'], files={'photo': image}).json()
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
03.10.2019, 18:29
Кирилл12321, что в c?
попробуй не вызывать json() в пост запросе.
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
03.10.2019, 18:30  [ТС]
Welemir1,
Цитата Сообщение от Welemir1 Посмотреть сообщение
а ты это гуглил? пытался найти? там полно тем в инете что неверный запрос почти во всех случая, то груп_ид указывали то еще что-то, но не с картинкой.
Это он ругается, что ссылка не пришла. А так да, запрос уходит...
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
03.10.2019, 18:31
Цитата Сообщение от Кирилл12321 Посмотреть сообщение
Это он ругается, что ссылка не пришла.
точно, ты гуглил? просто я посмотрел по темам и там всегда была проблема с самим запросом например ид группы.
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
03.10.2019, 18:33  [ТС]
Python
1
2
3
4
5
a1 = vk.method("photos.getWallUploadServer")
b = requests.post(a1['upload_url'], files={'photo': image})
print(b)
c = vk.method('photos.saveWallPhoto', {'photo': b['photo'], 'server': b['server'], 'hash': b['hash']})[0]
vk.method("wall.post", {"owner_id": -185546199, 'access_token': token, "attachment": f'photo{c["owner_id"]}_{c["id"]}', "message": "Фотка"})
.json не вызывал, пришел ожидаемый ответ - response 200. Картинка то отправляется. Но вк ее не принимает и не дает ссылку

Добавлено через 31 секунду
Цитата Сообщение от Welemir1 Посмотреть сообщение
точно, ты гуглил? просто я посмотрел по темам и там всегда была проблема с самим запросом например ид группы.
Я все уже прогуглил

Добавлено через 57 секунд
Ид группы тоже может быть, но проверял загрузкой jpeg файла. Все работало. Значит из-за того, что ссылка на фотку от сервера не пришла
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7392 / 4819 / 1246
Регистрация: 30.03.2015
Сообщений: 13,696
Записей в блоге: 29
03.10.2019, 18:34
Кирилл12321, что-то не так делаешь. Используй тогда временную папку. Я тебе показал что способ с байтами работает, в чем твоя проблема не знаю.
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
03.10.2019, 18:50  [ТС]
Да я знаю, что работает. Просто какие-то отличия между open и io.BytesIO(image_data) есть и вк их видит...

Добавлено через 3 минуты
С временной папкой тоже проблемы... Писал уже. Как в нее что сохранить - так и не понял. Библиотека tempfile же?
Цитата Сообщение от Кирилл12321 Посмотреть сообщение
С временными файлами какие-то трудности. Нет ни одного нормального примера. Создание временной папки, но как загрузить файл в эту временную папку?
Документация без примеров ничего не дает так же
Добавлено через 5 минут
Я ошибся. При загрузке jpeg файла ответ приходит такой -
Python
1
{'server': 857532, 'photo': '[{"photo":"cfbbf69d15:w","sizes":[["s",857532186,"8ea21","mCXRTL4bQ9w",58,75],["m",857532186,"8ea22","886D6FGMHX8",101,130],["x",857532186,"8ea23","cwnZKbTDEHg",468,604],["y",857532186,"8ea24","eNaCSnYxL4c",625,807],["z",857532186,"8ea25","5zEJlkiH8eY",836,1080],["w",857532186,"8ea26","nIZHXsnOMgA",874,1129],["o",857532186,"8ea27","R1KIJyIbCps",130,168],["p",857532186,"8ea28","qW2dFT09eLs",200,258],["q",857532186,"8ea29","PSD0uXSyI8c",320,413],["r",857532186,"8ea2a","gyi8bIIoiQE",510,659]],"latitude":0,"longitude":0,"kid":"951d44c2955ef5a5adf8ee6fab127598"}]', 'hash': '6439b8509d96d573531596643c298407'}
Добавлено через 1 минуту
В любом случае, можете подсказать как реализовать временной файл?

Добавлено через 3 минуты
Welemir1, Есть хоть какой-нибудь пример?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.10.2019, 18:50
Помогаю со студенческими работами здесь

Открыть фотографию через Paint
Подскажите как открыть фотографию в Paint? Process.Start откроет в программе которая стоит по умолчанию на данный формат...а нужно в PAINT

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

Деплой проекта на heroku через docker
Добрый вечер! Использую бесплатную версию Heroku. Хочу yii2 basic полностью свежий проект задеплоить на хероку используя docker. ...

Не работает программа в Heroku, на телефоне работает, в heroku deploy дела, но при запуске крашится. Ошибки не понятные
Скачал у человека с Ютуба прогу, которая в телеге пишет комментарии к сообщениям на канале. В pydrone3 работает нормально, но постоянно в...

Не удается отправить запрос. Через браузер все ок, а через PHP не совсем
Привет! Пытаюсь отправить запрос, но что то не получается.. Вот исходник $token =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru