Skip to content

Commit 738a353

Browse files
committed
Merge remote-tracking branch 'origin/dev' into dev
2 parents 75042b7 + 845dfcc commit 738a353

1 file changed

Lines changed: 53 additions & 4 deletions

File tree

vk_api/vk_upload.py

Lines changed: 53 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,56 @@ 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+
119+
def photo_chat(self, photo, chat_id):
120+
""" Загрузка и смена обложки в беседе
121+
:param photo: путь к изображению
122+
:param chat_id: ID беседы
123+
"""
124+
125+
values = {'chat_id': chat_id}
126+
url = self.vk.method('photos.getChatUploadServer', values)['upload_url']
127+
128+
photo_file = open_photos(photo)
129+
response = self.vk.http.post(url, files=photo_file)
130+
close_photos(photo_file)
131+
132+
response = self.vk.method('messages.setChatPhoto', response.json())
133+
134+
return response
135+
87136
def photo_wall(self, photos, user_id=None, group_id=None):
88137
""" Загрузка изображений на стену пользователя или в группу
89138
@@ -158,7 +207,7 @@ def document(self, file_path, title=None, tags=None, group_id=None):
158207
return response
159208

160209

161-
def open_photos(photos_paths):
210+
def open_photos(photos_paths, key_format='file{}'):
162211
if not isinstance(photos_paths, list):
163212
photos_paths = [photos_paths]
164213

@@ -167,7 +216,7 @@ def open_photos(photos_paths):
167216
for x, filename in enumerate(photos_paths):
168217
filetype = filename.split('.')[-1]
169218
photos.append(
170-
('file%s' % x, ('pic.' + filetype, open(filename, 'rb')))
219+
(key_format.format(x), ('pic.' + filetype, open(filename, 'rb')))
171220
)
172221

173222
return photos

0 commit comments

Comments
 (0)