Skip to content

Commit 1ca5895

Browse files
author
Thomas Fire
committed
Merge branch 'photo_profile_upload' into dev
1 parent bff37d0 commit 1ca5895

1 file changed

Lines changed: 36 additions & 4 deletions

File tree

vk_api/vk_upload.py

Lines changed: 36 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,7 @@ def photo_messages(self, photos):
7373
:param photos: список путей к изображениям, либо путь к изображению
7474
"""
7575

76-
url = self.vk.method('photos.getMessagesUploadServer')
77-
url = url['upload_url']
76+
url = self.vk.method('photos.getMessagesUploadServer')['upload_url']
7877

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

8584
return response
8685

86+
def photo_profile(self, photo, owner_id=None, crop_x=None, crop_y=None, crop_width=None):
87+
""" Загрузка изображения профиля
88+
89+
:param photo: путь к изображению
90+
:param owner_id: идентификатор сообщества или текущего пользователя.
91+
По умолчанию загрузка идет в профиль текущего пользователя.
92+
При отрицательном значении загрузка идет в группу.
93+
:param crop_x: координата X верхнего правого угла миниатюры.
94+
:param crop_y: координата Y верхнего правого угла миниатюры.
95+
:param crop_width: сторона квадрата миниатюры.
96+
При передаче всех crop_* для фотографии также будет подготовлена квадратная миниатюра.
97+
"""
98+
99+
values = {}
100+
101+
if owner_id:
102+
values['owner_id'] = owner_id
103+
104+
crop_params = {}
105+
106+
if crop_x is not None and crop_y is not None and crop_width is not None:
107+
crop_params['_square_crop'] = '{0},{1},{2}'.format(crop_x, crop_y, crop_width)
108+
109+
url = self.vk.method('photos.getOwnerPhotoUploadServer', values)['upload_url']
110+
111+
photos_files = open_photos(photo, key_format='file')
112+
response = self.vk.http.post(url, data=crop_params, files=photos_files)
113+
close_photos(photos_files)
114+
115+
response = self.vk.method('photos.saveOwnerPhoto', response.json())
116+
117+
return response
118+
87119
def photo_wall(self, photos, user_id=None, group_id=None):
88120
""" Загрузка изображений на стену пользователя или в группу
89121
@@ -158,7 +190,7 @@ def document(self, file_path, title=None, tags=None, group_id=None):
158190
return response
159191

160192

161-
def open_photos(photos_paths):
193+
def open_photos(photos_paths, key_format='file{}'):
162194
if not isinstance(photos_paths, list):
163195
photos_paths = [photos_paths]
164196

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

173205
return photos

0 commit comments

Comments
 (0)