Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 36 additions & 4 deletions vk_api/vk_upload.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,7 @@ def photo_messages(self, photos):
:param photos: список путей к изображениям, либо путь к изображению
"""

url = self.vk.method('photos.getMessagesUploadServer')
url = url['upload_url']
url = self.vk.method('photos.getMessagesUploadServer')['upload_url']

photos_files = open_photos(photos)
response = self.vk.http.post(url, files=photos_files)
Expand All @@ -84,6 +83,39 @@ def photo_messages(self, photos):

return response

def photo_profile(self, photo, owner_id=None, crop_x=None, crop_y=None, crop_width=None):
""" Загрузка изображения профиля

:param photo: путь к изображению
:param owner_id: идентификатор сообщества или текущего пользователя.
По умолчанию загрузка идет в профиль текущего пользователя.
При отрицательном значении загрузка идет в группу.
:param crop_x: координата X верхнего правого угла миниатюры.
:param crop_y: координата Y верхнего правого угла миниатюры.
:param crop_width: сторона квадрата миниатюры.
При передаче всех crop_* для фотографии также будет подготовлена квадратная миниатюра.
"""

values = {}

if owner_id:
values['owner_id'] = owner_id

crop_params = {}

if crop_x is not None and crop_y is not None and crop_width is not None:
crop_params['_square_crop'] = '{0},{1},{2}'.format(crop_x, crop_y, crop_width)

url = self.vk.method('photos.getOwnerPhotoUploadServer', values)['upload_url']

photos_files = open_photos(photo, key_format='file')
response = self.vk.http.post(url, data=crop_params, files=photos_files)
close_photos(photos_files)

response = self.vk.method('photos.saveOwnerPhoto', response.json())

return response

def photo_wall(self, photos, user_id=None, group_id=None):
""" Загрузка изображений на стену пользователя или в группу

Expand Down Expand Up @@ -158,7 +190,7 @@ def document(self, file_path, title=None, tags=None, group_id=None):
return response


def open_photos(photos_paths):
def open_photos(photos_paths, key_format='file{}'):
if not isinstance(photos_paths, list):
photos_paths = [photos_paths]

Expand All @@ -167,7 +199,7 @@ def open_photos(photos_paths):
for x, filename in enumerate(photos_paths):
filetype = filename.split('.')[-1]
photos.append(
('file%s' % x, ('pic.' + filetype, open(filename, 'rb')))
(key_format.format(x), ('pic.' + filetype, open(filename, 'rb')))
)

return photos
Expand Down