Есть рабочий скрипт для постинга, работает с небольшими по объему текста постами.
mydict='{ "media": [ { "type": "text", "text": "'+text_post+'" }, { "type": "photo", "list": ['+pic_LIST+']}], "publishAtMs": "'+date+'", "onBehalfOfGroup": "true"}'
p1='application_key='+key+'attachment='+mydict+'format=jsongid='+id_gr+'method=mediatopic.posttype='+self.type_post+session
h=hashlib.md5(p1.encode("UTF-8"))
sig=h.hexdigest()
att = urllib.parse.quote(mydict, safe='utf-8')
#Загрузка поста
url='https://api.ok.ru/fb.do?application_key='+key+'&attachment='+str(att)+'&format=json&gid='+id_gr+'&method=mediatopic.post&type='+self.type_post+'&sig='+sig+'&access_token='+access_token
r = requests.post(url)
print(r.text)
после перевода
att = urllib.parse.quote(mydict, safe='utf-8')
получается огромная ссылка, которая отправляется на сервер и мне приходит ответ "414 Request-URI Too Large"
Не знаю как это победить, читал что можно использовать post запрос, но результат тот же
ссылка на метод в ок
https://apiok.ru/dev/methods/rest/mediatopic/media...
Делаю пост запрос с параметрами в запросе
mydict='{ "media": [ { "type": "text", "text": "'+text+'" }, { "type": "photo", "list": [{ "id":"'+pic_tokken+'"}]}], "publishAtMs": "'+date+'", "onBehalfOfGroup": "true"}'
att = urllib.parse.quote(mydict, safe='utf-8')
p1={'application_key': app_key,
'attachment':mydict,
'format':'json',
'gid':id_gr,
'method':'mediatopic.post',
'type':post_type2
}
h=hashlib.md5(str(p1).encode('utf-8')+'{token}{secret}'.format(token=access_token,secret=privat_key).encode('utf-8'))
sig=h.hexdigest()
print(sig)
r = requests.post('https://api.ok.ru/fb.do', params={'application_key':app_key, 'attachment':str(att), 'format':'json', 'gid':id_gr, 'method':'mediatopic.post', 'type':post_type2}, data={'access_token': access_token, 'sig':sig})
теперь проблема в том что проверка md5 не сходится
Сделал по аналогии кода на php
$params = array(
"application_key" => $ok_public_key,
"method" => "mediatopic.post",
"gid" => $ok_group_id,
"type" => "GROUP_THEME",
"attachment" => $attachment,
"format" => "json",
);
// Подпишем
$sig = md5( arInStr($params) . md5("{$ok_access_token}{$ok_private_key}") );
$params['access_token'] = $ok_access_token;
$params['sig'] = $sig;
$step3 = json_decode( getUrl("https://api.ok.ru/fb.do", "POST", $params, 30, false, false ), true);