@lsnowl

Json.decoder.JSONDecodeError ,не получается загрузить больше 2 картинок к посту в группу вк(vk api). Как быть?

хочу сделать бота-автопостера для группы вк...
Ниже код программы, комментом пометил где ошибка
def write_json(data,filename):
	with open(filename,'w') as file:
		json.dump(data,file,indent=2,ensure_ascii=False)

def get_upload_server():
	r=requests.get('https://api.vk.com/method/photos.getWallUploadServer',params={
		'access_token':token,
		'group_id':GROUP_ID,
		'v':ver,
		}).json()
	return r['response']['upload_url']
	write_json(r,'upload_response.json')

def main():
	upload_url=get_upload_server()
     #ЗДЕСЬ ОШИБКА. Если файлов будет 2 или 1, то всё работает, если больше 2, то выдает ошибку
	files={
	'file1': open('IPAD1X.png','rb'),
	'file2':open('Layer61X.png','rb'),
	'file3':open('IphoneX.png','rb')}

	upload_response=requests.post(upload_url,files=files).json()
	write_json(upload_response,'upload_response.json')
	result=requests.get('https://api.vk.com/method/photos.saveWallPhoto',params={
		'access_token':token,
		'group_id':GROUP_ID,
		'server':upload_response['server'],
		'photo':upload_response['photo'],
		'hash':upload_response['hash'],
		'v':ver,}).json()

Когда 2 картинки:
5fca4b5d4154e718909494.png
Когда 3 картинки:
5fca48dc2e465621815821.png
Уже 2 день пытаюсь пофиксить, никаких идей :(
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Уже 2 день пытаюсь пофиксить

А если попробовать просто напечатать response.text, без его преобразования в json?
Увидим, что там
414 Request-URI Too Long

Что говорит о том, что в URL очень много символов (ну в принципе, логично, ведь три изображения имеют длину 3500+ символов)
Так что было бы разумнее заменить get на post и получить

result=requests.post('https://api.vk.com/method/photos.saveWallPhoto', data={
    'access_token':token,
    'group_id':GROUP_ID,
    'server':upload_response['server'],
    'photo':upload_response['photo'],
    'hash':upload_response['hash'],
    'v':ver,}).json()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы