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