@@ -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