Exemple #1
0
    def update_profile_avatar(self, profile: Profile, user_id):
        response = self.requests.get('getUserProfilePhotos', {'user_id': user_id})
        photos = response.json()['result']['photos']
        if len(photos) == 0:
            raise PWarning("Нет фотографий в профиле")
        pa = PhotoAttachment()
        pa.parse_tg_photo(photos[0][-1], self)

        profile.set_avatar(pa.private_download_url)
Exemple #2
0
 def upload_photo_and_urls(self, image: PhotoAttachment):
     """
     Загрузка изображения на сервер VK
     Возвращает vk_url и public_download_url
     """
     vk_photo = self.upload.photo_messages(image.get_bytes_io_content())[0]
     vk_url = f"{VK_URL}photo{vk_photo['owner_id']}_{vk_photo['id']}"
     vk_max_photo_url = sorted(vk_photo['sizes'],
                               key=lambda x: x['height'])[-1]['url']
     return vk_url, vk_max_photo_url
Exemple #3
0
    def upload_image_to_tg_server(self, url) -> PhotoAttachment:
        """
        Загрузка изображения на сервера ТГ с костылями

        Без бутылки не разобраться. У телеги нет встроенных методов по тупой загрузке файлов, поэтому приходится
        Отправлять сообщение в пустую конфу, забирать оттуда file_id и уже потом формировать сообщение
        """

        photo_uploading_chat = self.chat_model.get(pk=env.str("TG_PHOTO_UPLOADING_CHAT_PK"))
        pa = PhotoAttachment()
        pa.public_download_url = url
        rm = ResponseMessage({'attachments': [pa]}, peer_id=photo_uploading_chat.chat_id)
        response = self.send_response_message_item(rm.messages[0])
        if response.status_code != 200:
            raise PWarning
        r_json = response.json()
        self.delete_message(photo_uploading_chat.chat_id, r_json['result']['message_id'])
        uploaded_image = r_json['result']['photo'] if response.status_code == 200 else response
        pa.file_id = uploaded_image[-1]['file_id']
        return pa
Exemple #4
0
 def upload_photos(self, images, max_count=10, peer_id=None):
     """
     Загрузка фотографий на сервер ТГ.
     images: список изображений в любом формате (ссылки, байты, файлы)
     При невозможности загрузки одной из картинки просто пропускает её
     """
     if not isinstance(images, list):
         images = [images]
     attachments = []
     for image in images:
         try:
             if peer_id:
                 self.set_activity(peer_id, ActivitiesEnum.UPLOAD_PHOTO)
             pa = PhotoAttachment()
             pa.parse_response(image, ['jpg', 'jpeg', 'png'])
             attachments.append(pa)
         except Exception:
             continue
         if len(attachments) >= max_count:
             break
     return attachments
Exemple #5
0
 def setup_photo(self, photo_event):
     tg_photo = PhotoAttachment()
     tg_photo.parse_tg_photo(photo_event, self.bot)
     self.attachments.append(tg_photo)
Exemple #6
0
 def setup_photo(self, photo):
     vk_photo = PhotoAttachment()
     vk_photo.parse_vk_photo(photo)
     self.attachments.append(vk_photo)