VK API на Python: часть 2, узнаем, что лайкал пользователь

8
28347
Добавить в избранное

В этой части туториала по VK API мы рассмотрим возможность следить за пользователем, а точнее, узнаем как определить что лайкал владелец профиля вконтакте.

Первая часть

Логинимся

Для работы нам потребуется все тот же набор из первой части.

Получаем ленту пользователя

В качестве входных данных будет выступать ссылка на профиль пользователя. Конкретно, нам понадобится цифровой id, который не всегда в ней указан, ведь многие используют возможность сделать ссылку на профиль на латинице. Поэтому с помощью метода utils.resolveScreenName мы получаем что нам нужно.

Для начала получим список подписок пользователя с помощью метода users.getSubscriptions. С использованием этого списка формируем его ленту новостей методом newsfeed.get Затем, проходим по каждому посту и проверяем лайкал ли его наш пользователь с помощью метода likes.isLiked.

Смотрим, что пользователь полайкал

Так как за один запрос можно получить только до 100 постов, мы будем делать несколько запросов:

Здесь должно быть просто. Если вас интересует зачем мы приостанавливали выполнение на 1 секунду каждую итерацию, так это потому, что likes.isLiked выполняется довольно быстро и чтобы не делать слишком много запросов (VK такое не любит) приостанавливаем выполнение.

Ну и, наверное, самое интересное: давайте испытаем скрипт. Выбирайте самого интересного знакомого (или незнакомца) и в разведку.

Запускаем скрипт

На этом вторая часть подошла к концу. В следующей рассмотрим варианты автоматизации общения вконтакте путем создания простого чат-бота.

Интересуетесь программированием на Python?

Подпишитесь на нашу рассылку, чтобы получать больше интересных материалов:

И не беспокойтесь, мы тоже не любим спам. Отписаться можно в любое время.




Комментариев: 8

  1. я взял только функцию getlikes и вставил в свой код, переименовав некоторые переменные, но он выдает всю ленту а не только пролайканные

  2. привет, возникла такая ошибка: vk.exceptions.VkAPIError: 15. Access denied: no access to call this method. request_params = {‘oauth’: ‘1’, ‘method’: ‘newsfeed.get’….хотя токен я получил

  3. Мда. Кто-то может сказать, где посмотреть, как нормально вставлять код? П.с. Модератор, удали нафиг этот позор.

  4. Спасибо за интересную статью!
    я изначально брал только groups, текстом, остальное по битовой маске суммировал, но видимо не правильно.
    Кто нибудь еще пробовал? У всех из коробки работает?
    Появилась ошибка KeyError на строку
    next_from = newsfeed[‘next_from’]
    что должно передаваться в next_from?
    print(posts) перед ней дает {558336: -36147615,…}
    print(newsfeed) после дает не очень понятный набор ключ значений.
    Для теста прогнал с заменой этой строки на next_from = «»
    Дальше ругнулся на sleep(0.25)
    NameError: name ‘sleep’ is not defined
    заменил на time.sleep(0.25)
    В итоге стал отдавать только такие строки
    ERROR! vk.com/wall-37119411_480511
    Я так понял это просто лента, но не понял чья. Передал несколько разных id, но результат у всех одинаковый. Попробовал свой id, предварительно лайкнув пост — в выводе его нет.
    print(posts) и print(newsfeed) тоже одно и тоже выводят на разные id.
    Но строки результата (ERROR! vk.com/wall-37119411_480511) меняются со временем.
    Что я делаю не так?)

    1. А вообще следи за версиями python и VK они там не все сопоставимы и вот start_from появился только в vk 5.3 только, а new_from это в старых версиях

    2. Насчет KeyErrors там суть такова, что в документации к VK API тоже написано, что нужно указывать ключ next_from, но если вызвать список ключей в данном словаре, то вылетает ‘new_offset’, ‘new_from’, ‘items’, ‘profiles’, ‘groups’, следовательно делайте просто поиск по ключу ‘new_from’, а не по ‘next_from’

  5. Добрый день.
    Какие права (scope) требуются для этого примера?
    Попробовал без прав, с правами и разными суммами прав, все равно выдает vk.exceptions.VkAPIError: 15 Access denied: no access to call this method. request_params.

  6. «Этот метод можно вызвать с ключом доступа пользователя. Требуются права доступа: wall и friends.»
    https://vk.com/dev/newsfeed.get

Добавить комментарий