Exemple #1
0
    def add(self, owner_id, item_id_obj, type_obj='photo'):
        """
        Добавляет указанный объект в список Мне нравится текущего пользователя.
        type:
            post — запись на стене пользователя или группы;
            comment — комментарий к записи на стене;
            photo — фотография;
            audio — аудиозапись;
            video — видеозапись;
            note — заметка;
            photo_comment — комментарий к фотографии;
            video_comment — комментарий к видеозаписи;
            topic_comment — комментарий в обсуждении;

        В случае успеха возвращает объект с полем likes, в котором находится текущее количество пользователей, которые добавили данный объект в свой список Мне нравится.
        """
        url = '{api}likes.add'.format(api=self.api_url)
        params = {
            'type': type_obj,
            'owner_id': owner_id,
            'item_id': item_id_obj,
            'access_token': self.token,
            'v': self.api_version
        }
        res = HttpLib(url=url, params=params).send_get()
        status_code = res.response.status_code
        assert status_code == status_code_200, '"Likes.add"  FAILED. {text}'.format(
            text=res.response.text)
        log_info('Лайк проставлен. Пользователь: id{user_id}.'.format(
            user_id=owner_id))
        response = get_value_from_json(res.response.json(), 'response')
        return get_value_from_json(response, 'likes')
Exemple #2
0
    def is_liked(self, user_id, item_id_obj, type_obj='photo'):
        """
        Проверяет, находится ли объект в списке Мне нравится заданного пользователя.
        type:
            post — запись на стене пользователя или группы;
            comment — комментарий к записи на стене;
            photo — фотография;
            audio — аудиозапись;
            video — видеозапись;
            note — заметка;
            photo_comment — комментарий к фотографии;
            video_comment — комментарий к видеозаписи;
            topic_comment — комментарий в обсуждении;

        В случае успеха возвращает объект с полями:
            liked — есть ли отметка «Мне нравится» от текущего пользователя (0 — отметки нет, 1 — отметка есть);
            copied — сделан ли репост текущим пользователем (0 — не сделан, 1 — сделан).
        """
        url = '{api}likes.isLiked'.format(api=self.api_url)
        params = {
            'type': type_obj,
            'owner_id': user_id,
            'item_id': item_id_obj,
            'access_token': self.token,
            'v': self.api_version
        }
        res = HttpLib(url=url, params=params).send_get()
        status_code = res.response.status_code
        assert status_code == status_code_200, '"Likes.isLiked"  FAILED. {text}'.format(
            text=res.response.text)
        response = get_value_from_json(res.response.json(), 'response')
        return get_value_from_json(response, 'liked'), get_value_from_json(
            response, 'copied')
Exemple #3
0
    def search(self,
               count,
               city,
               sex,
               age_from,
               age_to,
               offset=None,
               status=None,
               birth_day=None,
               birth_month=None):
        """
        Возвращает список пользователей в соответствии с заданным критерием поиска.
        После успешного выполнения возвращает объект, содержащий число результатов
            в поле count и массив объектов, описывающих пользователей в поле items.

        Параметры: https://vk.com/dev/users.search
        :return (list<user>)
        """
        url = '{api}users.search'.format(api=self.api_url)
        params = {
            'city': city,
            'sort': '0',
            'offset': offset,
            'count': count,
            'fields':
            'can_write_private_message, last_seen, has_photo, photo_id, blacklisted, friend_status',
            'sex': sex,
            'status': status,
            'age_from': age_from,
            'age_to': age_to,
            'birth_day': birth_day,
            'birth_month': birth_month,
            'access_token': self.token,
            'v': self.api_version
        }
        res = HttpLib(url=url, params=params).send_get()
        status_code = res.response.status_code
        assert status_code == status_code_200, '"Users.search"  FAILED. {text}'.format(
            text=res.response.text)
        response = get_value_from_json(res.response.json(), 'response')
        users_list = get_value_from_json(response, 'items')
        user_model_list = []
        for user in users_list:
            if not (UsersApi.is_blacklisted(user)) and (user['id'] not in [
                    11225104, 150437158
            ]):
                user_model = User(user)
                user_model_list.append(user_model)
        self.logger.log_info(u'Всего найдено пользователей: {count}.'.format(
            count=len(user_model_list)))
        return user_model_list
Exemple #4
0
 def send(self, user_model, text):
     """
     Отправляет сообщение.
     После успешного выполнения возвращает идентификатор отправленного сообщения.
     """
     url = '{api}messages.send'.format(api=self.api_url)
     params = {
         'user_id':
         user_model.user_id,
         'access_token':
         self.token,
         'message':
         '{first_name}, {message}'.format(first_name=user_model.first_name,
                                          message=text),
         'v':
         self.api_version
     }
     res = HttpLib(url=url, params=params).send_get()
     status_code = res.response.status_code
     assert status_code == status_code_200, '"Messages.send"  FAILED. {text}'.format(
         text=res.response.text)
     self.logger.log_info(
         '   Сообщение отправлено. Пользователь: id{user_id}, {first_name} {last_name}.'
         .format(user_id=user_model.user_id,
                 first_name=user_model.first_name,
                 last_name=user_model.last_name))
     return get_value_from_json(res.response.json(), 'response')
Exemple #5
0
 def get(self, user_id):
     url = '{api}users.get'.format(api=self.api_url)
     params = {
         'user_ids': user_id,
         'fields':
         'can_write_private_message, last_seen, has_photo, photo_id, blacklisted, friend_status',
         'access_token': self.token,
         'v': self.api_version
     }
     res = HttpLib(url=url, params=params).send_get()
     status_code = res.response.status_code
     assert status_code == status_code_200, '"Users.get"  FAILED. {text}'.format(
         text=res.response.text)
     response = get_value_from_json(res.response.json(), 'response')[0]
     if get_value_from_json(response, 'blacklisted') == 0:
         return User(response)
Exemple #6
0
 def __init__(self, response):
     self.blacklisted = get_value_from_json(response, 'blacklisted')
     self.user_id = get_value_from_json(response, 'id')
     self.first_name = get_value_from_json(response, 'first_name')
     self.last_name = get_value_from_json(response, 'last_name')
     self.friend_status = get_value_from_json(response, 'friend_status')
     self.can_write_private_message = get_value_from_json(
         response, 'can_write_private_message')
     self.has_photo = get_value_from_json(response, 'has_photo')
     self.last_seen = get_value_from_json(
         get_value_from_json(response, 'last_seen'), 'time')
     try:
         if self.has_photo == 1:
             self.photo_id = get_value_from_json(response, 'photo_id')
         else:
             self.photo_id = None
     except KeyError:
         self.has_photo = 0
Exemple #7
0
    def get(self, user_id=None):
        """

        """
        url = '{api}friends.get'.format(api=api_url)
        params = {
            'user_id': user_id,
            'fields':
            'has_photo, photo_id, can_write_private_message, last_seen',
            'access_token': self.token,
            'v': api_version
        }
        res = HttpLib(url=url, params=params).send_get()
        status_code = res.response.status_code
        assert status_code == status_code_200, '"Friends.add"  FAILED. {text}'.format(
            text=res.response.text)
        response = get_value_from_json(res.response.json(), 'response')
        friends_list = get_value_from_json(response, 'items')
        friends_model_list = []
        for friend in friends_list:
            friend_model = User(friend)
            friends_model_list.append(friend_model)
        return friends_model_list
Exemple #8
0
 def are_friends(self, user_ids):
     """
     Возвращает информацию о том, добавлен ли текущий пользователь в друзья у указанных пользователей.
     Также возвращает информацию о наличии исходящей или входящей заявки в друзья (подписки).
     После успешного выполнения возвращает массив объектов status, каждый из которых содержит следующие поля:
         friend_status — статус дружбы с пользователем:
             0 – пользователь не является другом,
             1 – отправлена заявка/подписка пользователю,
             2 – имеется входящая заявка/подписка от пользователя,
             3 – пользователь является другом;
     """
     url = "https://api.vk.com/method/friends.areFriends"
     params = {
         'user_ids': user_ids,
         'access_token': self.token,
         'v': '5.64'
     }
     res = HttpLib(url=url, params=params).send_get()
     status_code = res.response.status_code
     assert status_code == status_code_200, '"Friends.are_firends"  FAILED. {text}'.format(
         text=res.response.text)
     response = get_value_from_json(res.response.json(), 'response')[0]
     return get_value_from_json(response, 'friend_status')
Exemple #9
0
 def add(self, user_id, text=None):
     """
     Одобряет или создает заявку на добавление в друзья. Если идентификатор выбранного пользователя присутствует в
     списке заявок на добавление в друзья, полученном методом friends.getRequests, то одобряет заявку на добавление и
     добавляет выбранного пользователя в друзья к текущему пользователю. В противном случае создает заявку на
     добавление в друзья текущего пользователя к выбранному пользователю.
     После успешного выполнения возвращает одно
     из следующих значений:
         1 — заявка на добавление данного пользователя в друзья отправлена;
         2 — заявка на добавление в друзья от данного пользователя одобрена;
         4 — повторная отправка заявки.
     """
     url = '{api}friends.add'.format(api=api_url)
     params = {
         'user_id': user_id,
         'access_token': self.token,
         'text': text,
         'v': api_version
     }
     res = HttpLib(url=url, params=params).send_get()
     status_code = res.response.status_code
     assert status_code == status_code_200, '"Friends.add"  FAILED. {text}'.format(
         text=res.response.text)
     return get_value_from_json(res.response.json(), 'response')
Exemple #10
0
 def is_blacklisted(user_json):
     if get_value_from_json(user_json, 'blacklisted') == 1:
         return True
     else:
         return False