Страницы

Поиск по вопросам

пятница, 12 апреля 2019 г.

python загрузка файлов vk

Подключил VK API. Необходимо сделать отправку файлов на сервер как о этом рассказано на этой странице - http://vk.com/dev/upload_files P.S. Загрузка файлов на стену пользователя
import vk from time import sleep import sys import urllib.request import urllib.parse import base64 import requests
vkapi = vk.API(access_token='token', app_id='id') sleep(0.5)
data = vkapi.photos.getWallUploadServer(user_id="72374405") DATA_USER_ID = data['user_id'] DATA_ALBUM_ID = data['album_id'] DATA_UPLOAD_URL = data['upload_url']
#with open("1.jpg", "rb") as image_file: #fileD = base64.b64encode(image_file.read())
#files = {'1.jpg': open('1.jpg', 'rb')} #r = requests.post(DATA_UPLOAD_URL, files=files) #r.status_code == requests.codes.ok #print(r) #html = r.read().decode("utf-8")
#dataP = '1.jpg' dataP = "photo=" + dataP#.encode("ASCII") response = urllib.request.urlopen(DATA_UPLOAD_URL,dataP) html = response.read().decode("utf-8") print (html)
решеткой помечено то, что пробовал но не сработало, либо не подошло.
Вроде как корректно отработался вариант с
files = {'1.jpg': open('1.jpg', 'rb')} r = requests.post(DATA_UPLOAD_URL, files=files) r.status_code == requests.codes.ok print(r) #html = r.read().decode("utf-8")
Однако в таком случае не работает вывод и тем самым я не могу понять, отработался ли должным образом запрос.
В случае успешного завершения кода выхлоп таков:
{"server":622624,"photo":"[]","hash":"8112ae8847b27fb1cdf678d3d168e6ae"}
То есть загрузка изображения провальная.
Может кто-либо смог или и так знает как загрузить файл на сервер ВК через POST на Python3. Поделитесь опытом, советом, замечанием. Если что-то в коде непонятно - пишите; отвечу.


Ответ

Вот мой вариант размещения фотографии на стене сообщества от имени сообщества. Реализован алгоритм, описанный в официальной документации
# Импортируем необходимые модули import vk import requests
# Задаём идентификатор группы, токен доступа, картинку и её описание group_id = 'my_group_id' access_token = 'my_access_token' filename = 'image.jpg' caption = 'Some text'
# Авторизуемся в VK session = vk.Session(access_token=access_token) vk_api = vk.API(session)
# Получаем адрес сервера для загрузки картинки upload_url = vk_api.photos.getWallUploadServer(group_id=group_id)['upload_url']
# Формируем данные параметров для сохранения картинки на сервере request = requests.post(upload_url, files={'photo': open(filename, "rb")}) params = {'server': request.json()['server'], 'photo': request.json()['photo'], 'hash': request.json()['hash'], 'group_id': group_id}
# Сохраняем картинку на сервере и получаем её идентификатор photo_id = vk_api.photos.saveWallPhoto(**params)[0]['id']
# Формируем параметры для размещения картинки в группе и публикуем её params = {'attachments': photo_id, 'message': caption, 'owner_id': '-' + group_id, 'from_group': '1'} vk_api.wall.post(**params)

Комментариев нет:

Отправить комментарий