9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
1

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

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

Author24 — интернет-сервис помощи студентам
Нужно загрузить фотографию на сервер из интернета и отправить в вк. Думаю, мне хватит в качестве ответа где будет хранится эта фотография после ее загрузки через requests. Информацию найти не смог.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.10.2019, 11:35
Ответы с готовыми решениями:

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

как отправить фотографию с сайта на почту
Здравствуйте! Подскажите пожалуйста скрипт для отправки картинки с сайта с текстом...

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

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

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

42
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
02.10.2019, 11:39 2
Цитата Сообщение от Кирилл12321 Посмотреть сообщение
где будет хранится эта фотография после ее загрузки через requests
там, где ты ее сохранишь, твой Кэп!
Она же байтами приходит -можно прямо из памяти и кинуть в ВК (если я верно понимаю, что ты ее и в ВК будешь отправлять средствами пайтон).
Но можешь сохранить на диск и уже как готовый файл отправлять.

Цитата Сообщение от Кирилл12321 Посмотреть сообщение
Информацию найти не смог.
в доках requests нет про скачивание и загрузку файлов? да ладно! а если найду?
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
02.10.2019, 12:27  [ТС] 3
Я имею ввиду нет информации о том, куда сохраняются файлы на Heroku с requests. Можно любой пример? То есть сохраняем фотографию, даем ей имя и загружаем в сообщение вк по тому же имени? Она будет в одной директории с исполняемым файлом. Так?

Добавлено через 1 минуту
Просто деплоил на хероку несколько файлов. Исполняемый файл по какой-то причине не видел другой файл (картинку) и не работал. На компьютере, конечно, все работало

Добавлено через 12 минут
Нет. Надо не доком. Надо чтоб адекватно отображалось. Просто картинкой
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
02.10.2019, 12:33 4
Цитата Сообщение от Кирилл12321 Посмотреть сообщение
Исполняемый файл по какой-то причине не видел другой файл (картинку) и не работал.
так не доводи до сохранения файлов. Что такое файл (любой) - это байты! Получил их с гугла и кидай в вк, без сохранения на диск. Надо в общем пробовать и смотреть. Начни с документации реквестс
1
1042 / 577 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
02.10.2019, 13:33 5
Кирилл12321, так а что мешает указать папку, куда записывать данные?

Python
1
2
3
r = requests.get(url)  
with open('folder1/file_name.img', 'wb') as f:
    f.write(r.content)
Но, думаю, тут не надо сохранять его вообще. Почему сразу в вк не отправлять?
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
02.10.2019, 13:49  [ТС] 6
Вот я и хотел узнать как эти байты загрузить тогда

Добавлено через 1 минуту
А как сразу в вк отправить?

Добавлено через 1 минуту
Vk_upload везде про загрузку файлов пишут. Нет про то, как через ссылку отправить.
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
02.10.2019, 13:56 7
Кирилл12321, ну значит проблема еще более сузилась - до отправки файла в вк! узнай как это делать и все норм.

Добавлено через 48 секунд
Цитата Сообщение от Кирилл12321 Посмотреть сообщение
как через ссылку отправить.
мы тебе тоже ни про какие ссылки не говорим, говорим -отправь файл не сохраняя его промежуточно: взял тут-положил туда.
1
1042 / 577 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
02.10.2019, 13:59 8
Кирилл12321, там всё-равно нужно в байтах отправлять файл, который загржаешь, как я понял. а requests.get(url).content как раз и возвращает байты запрашиваемого по урл файла, так что сохранять его незачем.
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
02.10.2019, 14:01  [ТС] 9
Дак я и пишу, что только про сохранения себе на комп везде пишут

Добавлено через 46 секунд
А байты как отправить по вк апи?
0
1042 / 577 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
02.10.2019, 14:02 10
Кирилл12321, сложно.
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
02.10.2019, 14:03 11
Кирилл12321, еще пишут, что средний объем мозга хомо сапиенс уменьшился на 15%...

Тебе кака я разница? ты сохранять не собираешься, как и подсказали выше, в атрибуте контент у тебя байты лежат, та к отправь их в вк, как описано в соответствующей документации. Или я начинаю подозревать, что ты хочешь готового решения, а не скучное чтение тут получить!?
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
02.10.2019, 14:06  [ТС] 12
Взял тут, положил там - это как скопировать, вставить? Не понимаю как такое можно реализовать...

Добавлено через 1 минуту
Это хотя бы через вк апи делается? В какой документации это есть?
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
02.10.2019, 14:09 13
Цитата Сообщение от Кирилл12321 Посмотреть сообщение
Думаю, мне хватит в качестве ответа где будет хранится эта фотография
вот с чего ты начал, а теперь оказалось ты не знаешь, что файл это байты, не знаешь как их получить, как их отправлять...
1) читаем доки реквестс, особое внимание на отправку и загрузку файлов
2) читаем доки вк_апи на предмет как и куда там грузить твое фото, я таким никогда не интересовался, подсказать не могу
3) осознаем что реквест при отправке попросит байты, а мы ему дадим как раз те, что пришли от запроса картинки
4) реализуем алгоритм, благодарим любимый форум
5) профит
0
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
02.10.2019, 14:18  [ТС] 14
А как вк поймет эти байты? Вы просто сами пишите, что таким не интересовались) Да, 2 года любительского кода и не разу не сталкивался с байтами)

Я хочу, чтобы бот мог отправить сообщение человеку и фотографию, не загружая к себе. Это получается что то такое же, как скопировать, вставить. Так?
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
02.10.2019, 14:22 15
Цитата Сообщение от Кирилл12321 Посмотреть сообщение
А как вк поймет эти байты?
ты сейчас серьезно? а у тебя на компе ничего кроме них нет! Реально! вот эти буквы, что ты читаешь - это байты в кодировке УТФ-8, этот браузер, твои любимые игрульки, сам ВК - это только байты, компьютер вообще ничего не знает кроме 1, 0 и операций с ними. Это на уровне человека, на нашем с тобой есть ВК и фото, а для компа и сервера вк -есть байты, нолики и единички которые кто-то куда- то шлет.
Информатики то не было чтоли в школе?

Цитата Сообщение от Кирилл12321 Посмотреть сообщение
Это получается что то такое же, как скопировать, вставить. Так?
да, первый запрос пришлет нам байты (фото на твоем языке), мы их аккуратно отправим вк, тоже байтами (но ты считай что фото).
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
02.10.2019, 23:26  [ТС] 16
Не получается!!! Через вк апи такое точно не провернуть. Все просмотрел, везде написано, что надо скачать к себе. Остается 2 варианта. Искать где хероку хранит картинки ( а они при деплое куда-то скачиваются по-любому ), либо ваш способ, но его я не понимаю. Библиотеку перечитал, но как передать байты вк так и не понял... photos.getUploadServer не загружает таким способом. Примеров в интернете вашего способа так же нет
0
Автоматизируй это!
Эксперт Python
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
03.10.2019, 06:06 17
Цитата Сообщение от Кирилл12321 Посмотреть сообщение
Все просмотрел, везде написано, что надо скачать к себе
тебя что отправили смотреть? как отправить файл в вк, что они там про сохранение пишут сказано -игнорить.
Цитата Сообщение от Кирилл12321 Посмотреть сообщение
Примеров в интернете вашего способа так же нет
какого еще нашего способа? просто найди как передать через реквестс файл в ВК, а когда реквестс попросит этот файл дашь ему то, что пришло с гугла. Элементарные же вещи

Цитата Сообщение от Кирилл12321 Посмотреть сообщение
Через вк апи такое точно не провернуть.
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
03.10.2019, 07:29  [ТС] 18
Python
1
2
3
4
5
a = requests.get('https://twoplayers.info/wp-content/uploads/2017/12/Air-Missions-HIND_0.jpg').content
a1 = vk.method("photos.getMessagesUploadServer")
b = requests.post(a1['upload_url'], files={'photo': open("C:/Users/Sony/Desktop/1057590347-posrednik.jpg", 'rb')}).json()
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)})
Вот необходимая часть кода. Как ее заменить, чтобы не сохранять себе?

Добавлено через 29 минут
Python
1
2
3
4
5
6
7
8
9
content = requests.get('https://twoplayers.info/wp-content/uploads/2017/12/Air-Missions-HIND_0.jpg').content
test = open('img.jpg', 'wb')
test.write(content)
test.close()
 
a1 = vk.method("photos.getMessagesUploadServer")
b = requests.post(a1['upload_url'], files={'photo': open("img.jpg", 'rb')}).json()
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
7107 / 4610 / 1215
Регистрация: 30.03.2015
Сообщений: 13,236
Записей в блоге: 29
03.10.2019, 07:39 19
Лучший ответ Сообщение было отмечено Кирилл12321 как решение

Решение

Кирилл12321, ну ты же понимаешь что нам не на чем проверить, некуда файлы грузить, я попробовал на каком то тестовом обменнике -норм
Python
1
2
>>> import io
>>> br = io.BufferedReader(io.BytesIO(con))
con - это наш контент в байтах (у тебя a), и вот этот br подставляем вместо open(...
например что-то вроде
Python
1
b = requests.post(a1['upload_url'], files={'photo': br}).json()
но надо экспериментировать, думать, читать

Кстати, да, работает - на тестовом обменнике появилась твоя картинка с вертолетом!
1
9 / 3 / 0
Регистрация: 02.01.2019
Сообщений: 133
03.10.2019, 07:46  [ТС] 20
Python
1
2
3
4
 c = vk.method('photos.saveMessagesPhoto', {'photo': b['photo'], 'server': b['server'], 'hash': b['hash']})[0]
  File "C:\Users\Sony\AppData\Local\Programs\Python\Python37\lib\site-packages\vk_api\vk_api.py", line 640, in method
    raise error
vk_api.exceptions.ApiError: [100] One of the parameters specified was missing or invalid: photos_list is invalid
Такие параметры считаются инвалидными...
0
03.10.2019, 07:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2019, 07:46
Помогаю со студенческими работами здесь

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

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

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

Отправить post через js
Здравствуйте, подскажите как отправить post запрос через js есть html форма для выбора даты ...

Отправить email через прокси
Здравствуйте! Помогите пожалуйста со следующей проблемой. Я настроил отправку писем (django...

Отправить запрос через TWebBrowser
Доброго времени суток... Суть вопроса вот в чем вообщем мне нужно отправить через апи сообщение...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru