проблема с сохранением фотографий на photo.saveWallPhoto()
. Я отправляю правильный хэш, но сервер возвращает ошибку:
{"error":{"error_code":121,"error_msg":"Invalid hash","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"photos.saveWallPhoto"},{"key":"server","value":"844417"},{"key":"photo","value":"[{"photo":"c6d1bf1e15:y","sizes":[["s",844417544,"4ae08","M9W-IuwwYGU",75,50],["m",844417544,"4ae09","KpMEV_7WgQg",130,86],["x",844417544,"4ae0a","3uJFwNUJL6U",604,401],["y",844417544,"4ae0b","LrbMLx6G9sE",668,444],["o",844417544,"4ae0c","hCo58vdSXF4",130,87],["p",844417544,"4ae0d","ElcQ-FeVAPE",200,133],["q",844417544,"4ae0e","UxHAt1rXLRY",320,213],["r",844417544,"4ae0f","9zYRuJjYufQ",510,340]],"latitude":0,"longitude":0,"kid":"675e08a05bbf87803b0370f30e3efc81"}]"},{"key":"hash","value":"1af7b024434ca7a0fe62f68e9ed2a9a0"},{"key":"v","value":"5.0"},{"key":"group_id","value":"****"},{"key":"user_id","value":"****"}]}}
[{"photo":"c6d1bf1e15:y","sizes":[["s",844417544,"4ae08","M9W-IuwwYGU",75,50],["m",844417544,"4ae09","KpMEV_7WgQg",130,86],["x",844417544,"4ae0a","3uJFwNUJL6U",604,401],["y",844417544,"4ae0b","LrbMLx6G9sE",668,444],["o",844417544,"4ae0c","hCo58vdSXF4",130,87],["p",844417544,"4ae0d","ElcQ-FeVAPE",200,133],["q",844417544,"4ae0e","UxHAt1rXLRY",320,213],["r",844417544,"4ae0f","9zYRuJjYufQ",510,340]],"latitude":0,"longitude":0,"kid":"675e08a05bbf87803b0370f30e3efc81"}]
пишу на python 3.6, смотрел ответы в интернете, но для себя ничего не нашел
Короче, делаю програмку которая будет постить картинки в сообщество(с циклом for), но вот незадача, баг в апи(или как это можно назвать) не дает мне постить. Дело в том, что надо сохранять их на полученный url. Для этого используется функция photos.saveWallPhoto. Её параметр, который нужен для работы и мешает мне:
group_id
positive
Идентификатор сообщества, на стену которого нужно сохранить фотографию.
Дело в том, что id сообщества — обязательно отрицательное число. Мне нужно либо подправить библиотеку(если это вообще возможно), либо как-нибудь чем-нибудь воспользоваться.
Если что, вот код(Осторожно! Много чего недоделано и много мусора, только начал писать программу):
# -*- coding: cp1251 -*-
import os.path
import requests
import vk_api
album_id_ = айди альбома
public_id = -айди паблика
vk_session = vk_api.VkApi(
token=’токен’)
vk = vk_session.get_api()
number_arts = len([1 for x in list(os.scandir(«arts»)) if x.is_file()])
print(«артов:», number_arts)
print(vk.photos.getWallUploadServer(album_id=album _id_, group_id=public_id))
uploadServer = vk.photos.getWallUploadServer(album_id=album_id_, group_id=public_id)
uploadUrl = uploadServer[«upload_url»]
print(«Ссылка на загрузку:», uploadUrl)
path = r»C:/Users/SuperUser/PycharmProjects/bot/arts/»
artslist = os.listdir(path)
print(artslist)
for a in range(0, number_arts):
pth = path + artslist[a]
fp = open(pth, ‘rb’)
file = {‘file’: fp}
pt = requests.post(uploadUrl, files=file)
fp.close()
res = pt.json()
print(res)
pwi = vk.photos.saveWallPhoto(group_id=public_id, server=res[«server»], photo=res[«photo»], hash=res[«hash»])
pdi = str(pwi[0][«id»])
print(pwi)
print(«photo» + sublic_id + «_» + str(pwi[0][«id»]) + » запощено»)
next_date = 1658599521
vk.wall.post(
owner_id=public_id,
attachment=»{0}{1}_{2}».format(
«photo»,
sublic_id,
pdi
),
friends_only=0,
from_group=1,
publish_date=next_date
)
# os.delete(path[a])
Надеюсь ничего не упустил.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
This topic has been deleted. Only users with topic management privileges can see it.
Добрый день!
https://api.vk.com/method/photos.getWallUploadServer?group_id={{user_id}}&access_token={{access_token}}
Получаю
{"response":{"upload_url":"https://pu.vk.com/c639819/upload.php?act=do_add&mid=44**84&aid=-14&gid=130***373&hash=dc40d4640df96281207&rhash=8217b51ac53e7aee2da9a5dd&swfupload=1&api=1&wallphoto=1","aid":-14,"mid":446**84}}
Далее парсю часть этого кода + («photo»,»file://D:u005cPOSTERu005cphotou005c1.jpg») и делаю Post запрос / получаю ответ
[354439076] [14:44:11] Поток №1 : {"server":639819,"photo":"[{"photo":"b52a65f379:x","sizes":[["s","639819626","60c4a","Sz3l69a5K_E",75,56],["m","639819626","60c4b","7-NJUWNrsmM",130,97],["x","639819626","60c4c","umu-B8mbLwU",245,183],["o","639819626","60c4d","B7t18tXOv9k",130,97],["p","639819626","60c4e","EZVvbjxzG9Y",200,149],["q","639819626","60c4f","Yn6puntR4j4",245,183],["r","639819626","60c50","21NjP32JIhE",245,183]],"kid":"7dea51158e298de38d451cb147555749","debug":"xsxmxxxoxpxqxrx"}]","hash":"c2cfe635c584b02e32613660b41a27c5"}
Далее делаю пост запрос photos.saveWallPhoto
https://api.vk.com/method/photos.saveWallPhoto?access_token={{access_token}}&group_id={{user_id}} + "server","639819","photo","b52a65f379:x","hash","c2cfe635c584b02e32613660b41a27c5"
ответ приходит с ошибкой «error_code»:121 Invalid hash
{"error":{"error_code":121,"error_msg":"Invalid hash","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"photos.saveWallPhoto"},{"key":"group_id","value":"130**373"},{"key":"server","value":"639819"},{"key":"photo","value":"b52a65f379:x"},{"key":"hash","value":"c2cfe635c584b02e32613660b41a27c5"}]}}
Как я понял после photos.saveWallPhoto я должен получить ID photo для публикации
Я тут подмулал, может как-то UrlEncode использовать, но как задать эти параметры и что передавать?
Кто поможет разобраться с этим — 100 руб скину.
И почему вылезают эти дурацкие — их не должно быть же! И я не могу спарсить photo
Пытался удалить [[SAVED_CONTENT]] = [[SAVED_CONTENT]].replaceAll(», ») — не работает
{"server":639819,"photo":"[{"photo":"b52a65f379:x","sizes":[["s","639819626","60c4a","Sz3l69a5K_E",75,56],["m","639819626","60c4b","7-NJUWNrsmM",130,97],["x","639819626","60c4c","umu-B8mbLwU",245,183],["o","639819626","60c4d","B7t18tXOv9k",130,97],["p","639819626","60c4e","EZVvbjxzG9Y",200,149],["q","639819626","60c4f","Yn6puntR4j4",245,183],["r","639819626","60c50","21NjP32JIhE",245,183]],"kid":"7dea51158e298de38d451cb147555749","debug":"xsxmxxxoxpxqxrx"}]","hash":"c2cfe635c584b02e32613660b41a27c5"}
@teamgame said in Проблема с постингом в ВК на страницу группы.:
[[SAVED_CONTENT]] = [[SAVED_CONTENT]].replaceAll(», »)
попробуй через новую переменную.
[[SAVED_CONTENT_NEW]] = [[SAVED_CONTENT]].replaceAll(», »)
@pitbull
SyntaxError: Parse error Номер строки:2 Во время выполнения скрипта { _sa(984423493); VAR_SAVED_CONTENT_NEW = VAR_SAVED_CONTENT.replaceAll('', '') section_start("test", 601447520,function(){ })}
Также
мож тут дело в том что надо экранировать?
@teamgame для распарсивания json используйте JSON.parse(VAR_SAVED_CONTENT).
Например
VAR_PHOTO = JSON.parse(VAR_SAVED_CONTENT).photo[0].photo
@DrPrime
JSON.parse([[SAVED_CONTENT]]).photo[0].photo
пустой результат
@teamgame Строку [[SAVED_CONTENT]] выложи и что нужно из неё спарсить.
This post is deleted!
Этот вопрос решен. Остался вопрос по 3 этапу сохранения photos.saveWallPhoto
Отправлять на сервер фото надо 3 параметрами
Hash b33d772cbbac846bf91a6c1443fd491f (есть ли разница отправляю в кавычках или нет)
Сервер 841230
и Photo
«[{«photo»:»066cc61c00:z»,»sizes»:[[«s»,»834203394″,»bd0e»,»gUmaBH5pUQE»,75,56],[«m»,»834203394″,»bd0f»,»pVl67ht5Ly8″,130,97],[«x»,»834203394″,»bd10″,»eSIc3-Do30s»,604,453],[«y»,»834203394″,»bd11″,»tYXGsMe6us8″,807,605],[«z»,»834203394″,»bd12″,»b9H8NiVzshU»,1280,960],[«o»,»834203394″,»bd13″,»LYWvaal1YlU»,130,98],[«p»,»834203394″,»bd14″,»weqXTAqGEdE»,200,150],[«q»,»834203394″,»bd15″,»vN4GSF_-sT0″,320,240],[«r»,»834203394″,»bd16″,»3QMlPTYiBwc»,510,383]],»kid»:»704ff652afa94de691533b954ad149d3″,»debug»:»xszmzxzyzzzozpzqzrz»}]»
Пример С ДОКУМЕНТАЦИИ ВК
{
«server»:626627,
«photo»:»[{«photo»:»190ab6eadf:w»,»sizes»:[[«s»,»626627852″,»e6a3″,»lMU557Tx-78″,75,56],[«m»,»626627852″,»e6a4″,»hq8g5CzPmXs»,130,97],[«x»,»626627852″,»e6a5″,»c-_TPYB_rIU»,604,453],»kid»:»72cfb87071e2d6624a38167524d5b4aa»,»debug»:»xswmwxwywzwwwowpwqwrw»}]»,
«hash»:»581d7a4ffc81e2bfe90016d8b35c288d»
}
У меня выходит ошибка
{«error_code»:100,»error_msg»:»One of the parameters specified was missing or invalid: photo is undefined»
Кто подскажите правильное решение — переведу 100р
@teamgame ,из параметров нужно сделать json, который нужно поместить в поле значение параметра, в поле имя параметра написать data, нажать добавить. В поле там где json, должно быть application/json . Сотку не нужно
из параметров нужно сделать json, который нужно поместить в поле значение параметра,
Они разве не в формате Json пришли? И как их поместить в поле это?
Спасибо) Уже целых 24 часа мозг ломаю
Установил переменную
Добавил «data»,[[JSON]]
а ошибка осталась
@teamgame json — это способ отображения, по сути на предыдущем сообщении нехватает только {}
@DrPrime said in Проблема с постингом в ВК на страницу группы.:
{
Не понял куда эти {} хотя все перепробовал(
@teamgame Вы бы скидывали файлы на форум.
@denanotherday
Пишет — У вас недостаточно прав для этого действия.
@teamgame Да, потому что это ветка FingerprintSwitcher. Можете в черновике ответа на любую другую тему скинуть проект, а сюда вставить на него ссылку.
Пытаюсь загрузить фото на стену группы
us = app.photos.get_wall_upload_server(gid: 53285720) up = VkontakteApi.upload(url: us.upload_url, file1: ['quetzal.jpg', 'image/jpeg']) save = app.photos.save_wall_photo(up)
На save_wall_photo ловлю ошибку
VKontakte returned an error 121: 'Invalid hash' after calling method 'photos.saveWallPhoto' with parameters {"server"=>"323530", "photo"=>"[{"photo":"92404378b6:x","sizes":[["s","323530165","68fd","s4sK_5tIHgE",67,75],["m","323530165","68fe","uVeQeZnIuI8",116,130],["x","323530165","68ff","NIaCeLJVK2g",540,604],["o","323530165","6900","yTYAtgnvOrM",130,145],["p","323530165","6901","RCGA3ZJD2lo",200,224],["q","323530165","6902","m28tR-Zv0kM",320,358],["r","323530165","6903","twGnd3KvNPs",510,570]],"kid":"9ff2190c02218d9283e776b0496d7b67"}]", "hash"=>"5d43c84fbf54b52ba6435d318061d875"}.
Можно конечно сохранять фотографии в какой нибудь альбом а потом аттачментом отправлять на стену, но это не то.
upload_url = self.vk_api.photos.getWallUploadServer(group_id=config.vk_group_id, v='5.73')['upload_url']
request = requests.post(upload_url, files={'photo': open("Penguins.jpg", "rb")})
print(request.json())
params = {'server': request.json()['server'],
'photo': request.json()['photo'],
'hash': request.json()['hash'],
'group_id': -config.vk_group_id,
'v': '5.73'}
photo_id = self.vk_api.photos.saveWallPhoto(**params)[0]['id']
params = {'attachments': photo_id,
'owner_id': config.vk_group_id,
'from_group': '1'}
self.vk_group_api.wall.post(**params)
как автор отправляю изображение, в saveWallPhoto как и советуют прокидываю полное поле photo из предыдущего шага, но ошибка всё равно:
vk.exceptions.VkAPIError: 121. Invalid hash. request_params = {‘oauth’: ‘1’, ‘method’: ‘photos.saveWallPhoto’, ‘server’: ‘834404’, ‘photo’: ‘[{«photo»:»43ed4dc030:z»,»sizes»:[[«s»,834404069,»da1c1″,»uzrHSo8nIKc»,75,56],[«m»,834404069,»da1c2″,»aZlFxqlk0oI»,130,97],[«x»,834404069,»da1c3″,»Zy9gTx0-Q44″,604,453],[«y»,834404069,»da1c4″,»jJAuVJfldAU»,807,605],[«z»,834404069,»da1c5″,»mK9RkdISm0Q»,1024,768],[«o»,834404069,»da1c6″,»PjCSeZyvkaA»,130,98],[«p»,834404069,»da1c7″,»FYkEimvmVK8″,200,150],[«q»,834404069,»da1c8″,»ch3qZ-g67a0″,320,240],[«r»,834404069,»da1c9″,»DTm4j2jrmoA»,510,383]],»latitude»:0,»longitude»:0,»kid»:»7e803bfa8287365ba577a42ab4e579f7″}]’, ‘hash’: ‘d9f5c3f00db055d84cd0bf52e9deb4c8’, ‘group_id’: ‘********’, ‘v’: ‘5.73’}
-
fth
- Сообщения: 2
- Зарегистрирован: 08 май 2011, 16:58
И снова wall.savePost, на сей раз 121-я, т.е. Invalid hash
Заезженно пытаюсь опубликовать фото на страницу пользователя, в джаваскрипте следующий код:
Код: Выделить всё
VK.api('photos.getWallUploadServer', {uid: $('#brag_form input[name=uid]').attr('value')}, function (data) { /* Сервер-сайд загрузка изображений на сервер, дабы лишний раз данные через браузер не гонять, срабатывает нормально возвращая например {"server": "4443", "photo": "80df3a0674:z", "hash": "91cc6b2f047ef59fb5bd94a082692ce9"}*/ /* Братьям-джангистам советую http://atlee.ca/software/poster/index.html */ $.post('/ajax/load_vk_photo/', { csrfmiddlewaretoken: $('#brag_form input[name=csrfmiddlewaretoken]').attr('value'), server: data.response.upload_url, photo_url: $('#brag_form input[name=photo_url]').attr('value') }, function (data) { json_obj = $.parseJSON(data); if (json_obj.photo.length > 0) { VK.api('wall.savePost', { wall_id: <uid друга пользователя>, post_id: <идентификатор некоторого объекта приложения>, server: json_obj.server, photo: json_obj.photo, hash: json_obj.hash, message: <ну и соответственно сообщение> }, function (data) { if (data.response) { VK.callMethod('saveWallPost', data.response.post_hash); } }); } }); } });
Проверка на ошибки и другой лишний код вырезан.
Соответственно при запросе wall.savePost вылетает 121-я ошибка, т.е. неверный хеш, хотя казалось бы я его получил с пылу-жару и вообще не трогал.
Правильно ли я понимаю, что делать photos.saveWallPhoto в данном случае не нужно?
-
fth
- Сообщения: 2
- Зарегистрирован: 08 май 2011, 16:58
Re: И снова wall.savePost, на сей раз 121-я, т.е. Invalid hash
Сообщение
fth » 09 май 2011, 07:01
Эхх… Оказывается надо было просто внимательно читать доки. Т.е. выполнять пункты «Загрузка приложения на стену пользователя», а не «Загрузка фотографий на стену пользователя»
P.S.: Будьте внимательны, в доках неточность: после загрузки сервер возвращает объект с полем photo, а не photos
-
adrior
- Сообщения: 1
- Зарегистрирован: 26 дек 2011, 21:33
Re: И снова wall.savePost, на сей раз 121-я, т.е. Invalid hash
Сообщение
adrior » 27 дек 2011, 10:16
Если чуть более подробно развернуть ответ, то для загрузки фотографии на стену нужно использовать не метод photos.getWallUploadServer, а wall.getPhotoUploadServer. И всё сразу заработает. В домкументации эти методы легко перепутать.
Надеюсь, это кому-то поможет. Я на эту элементарную проблему убил почти день и кучу нервов.
Формулировка задачи:
Доброго времени суток всем.
Захотелось выложить фотографию на стену группы. Казалось бы читай маны и делай.
Что получилось:
На первом шаге получаем url для загрузки фотографии, на втором post-запросом отправляем фотографию.
В шестой строчке приходит JSON-ответ, в 7 — декодируем. Мне почему-то кажется, что декодер ломает строку в photo. Принятое значение до декодирования:
В одиннадцатой строке отправляются значения server, photo, hash и другие. GET-параметры пропускаются через функцию urlencode.
url: https://api.vk.com/method/photos.sav…wqwrw%22%7D%5D
Метод photos.saveWallPhoto возвращает ошибку Invalid hash.
Кто-нибудь встречался с подобным или может предположить в чём проблема?
Код к задаче: «VK API saveWallPhoto error 121: Invalid hash»
textual
r3 = api.photos_saveWallPhoto(server=r2['server'], photo=r2['photo'], hash=r2['hash'], caption=text)
Полезно ли:
6 голосов , оценка 4.500 из 5
Приветствуем вас на форуме проекта WoW Circle. Если вы читаете это, значит не зарегистрировались у нас. Для того, чтобы получить доступ к расширенным возможностям нашего форума нажмите сюда и пройди регистрацию, которая не займет у вас много времени. После регистрации будут доступны новые, более расширенные, возможности.
проблема с сохранением фотографий на photo.saveWallPhoto()
. Я отправляю правильный хэш, но сервер возвращает ошибку:
{"error":{"error_code":121,"error_msg":"Invalid hash","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"photos.saveWallPhoto"},{"key":"server","value":"844417"},{"key":"photo","value":"[{"photo":"c6d1bf1e15:y","sizes":[["s",844417544,"4ae08","M9W-IuwwYGU",75,50],["m",844417544,"4ae09","KpMEV_7WgQg",130,86],["x",844417544,"4ae0a","3uJFwNUJL6U",604,401],["y",844417544,"4ae0b","LrbMLx6G9sE",668,444],["o",844417544,"4ae0c","hCo58vdSXF4",130,87],["p",844417544,"4ae0d","ElcQ-FeVAPE",200,133],["q",844417544,"4ae0e","UxHAt1rXLRY",320,213],["r",844417544,"4ae0f","9zYRuJjYufQ",510,340]],"latitude":0,"longitude":0,"kid":"675e08a05bbf87803b0370f30e3efc81"}]"},{"key":"hash","value":"1af7b024434ca7a0fe62f68e9ed2a9a0"},{"key":"v","value":"5.0"},{"key":"group_id","value":"****"},{"key":"user_id","value":"****"}]}}
[{"photo":"c6d1bf1e15:y","sizes":[["s",844417544,"4ae08","M9W-IuwwYGU",75,50],["m",844417544,"4ae09","KpMEV_7WgQg",130,86],["x",844417544,"4ae0a","3uJFwNUJL6U",604,401],["y",844417544,"4ae0b","LrbMLx6G9sE",668,444],["o",844417544,"4ae0c","hCo58vdSXF4",130,87],["p",844417544,"4ae0d","ElcQ-FeVAPE",200,133],["q",844417544,"4ae0e","UxHAt1rXLRY",320,213],["r",844417544,"4ae0f","9zYRuJjYufQ",510,340]],"latitude":0,"longitude":0,"kid":"675e08a05bbf87803b0370f30e3efc81"}]
пишу на python 3.6, смотрел ответы в интернете, но для себя ничего не нашел
Change History
(9)
comment:1
by san, 6 years ago
Owner: | changed from san to artem |
---|---|
Status: | new → assigned |
follow-up:
3
comment:2
by artem, 6 years ago
сколько одновременных разговоров максимально поддерживает плата VE?
comment:4
by artem, 6 years ago
думаю в рекламных целях указать до 160 одновременных разговоров. что собственно не ложь.
follow-up:
6
comment:5
by artem, 6 years ago
Леша ты согласен с до 160 разговоров?
comment:7
by artem, 6 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:8
by san, 6 years ago
milestone: | Текущие работы → 2 очередь |
---|
Milestone renamed
Note:
See TracTickets
for help on using tickets.