Форум сайта python.su
Здравствуйте, возможно кто нибудь знает как загрузить несколько изображений в пост ВК и добавить к ним уникальное описание (поле caption)?
На данный момент скрипт отправляет только одно изображение.
import requests import json token = "token" group_id = 1 h ='тест' text = 'магия!!!' def getWallUploadServer(): r = requests.get('https://api.vk.com/method/photos.getWallUploadServer?', params = {'access_token':token, 'group_id':group_id, 'v':'5.101'}).json() return r['response']['upload_url'] def save_r(): save_result = requests.get('https://api.vk.com/method/photos.saveWallPhoto?', params ={'access_token':token, 'group_id':group_id, 'caption': h, 'photo':upload_response['photo'], 'server':upload_response['server'], 'hash':upload_response['hash'], 'v':'5.101'}).json() return ('photo'+str(save_result['response'][0]['owner_id'])+'_'+str(save_result['response'][0]['id'])+'&access_key='+str(save_result['response'][0]['access_key'])) def main(): upload_url = getWallUploadServer() file = {'file1': open('123.jpg', 'rb') } global upload_response upload_response = requests.post(upload_url, files=file).json() save_result = save_r() result2 = requests.get('https://api.vk.com/method/wall.post?', params ={'attachments':save_result, 'owner_id':-group_id, 'message': text, 'access_token':token, 'from_group': '1', 'v':'5.101'}).json() if __name__ == '__main__': main()
Офлайн
В цикле попробуйте
Код ниже не факт что рабочий но идею из него почерпнуть легко
import requests import json import re token = '!!!!!с photos привелегией!!!!!!' version = '5.95' group = 'id группы' alb = 'id альбома' img = 'путь до папки с картинками' adres = '' #оставлять пустым img_url = '' #оставлять пустым chek = int(0) f = open('filelist.txt') # filelists.txt <- файл с названием.расширением фото(построчно) line = f.readline().rstrip('\r\n') while line: adres = img + line print(chek) chek += int(1) def get_url(): r = requests.get('https://api.vk.com/method/photos.getUploadServer', params={ 'access_token': token, 'album_id': alb, 'group_id': group, 'v': version }).json() return r['response']['upload_url'] url = get_url() file = {'file1': open(adres, 'rb')} ur = requests.post(url, files=file).json() result = requests.get('https://api.vk.com/method/photos.save', params={ 'access_token': token, 'album_id': ur['aid'], 'group_id': ur['gid'], 'server': ur['server'], 'photos_list': ur['photos_list'], 'hash': ur['hash'], 'v': version, }).json() open(adres).close line = f.readline().rstrip('\r\n') f.close() print ('finish')
Офлайн
ZerGОгромное спасибо ) Обязательно проверю. Да, уже понял что нужно это обернуть в цикл, просто мои знания в программировании еще сыроваты. Я тоже нашел рабочее решение, но оно громоздкое без цикла.
В цикле попробуйте Код ниже не факт что рабочий но идею из него почерпнуть легко
Офлайн