Как получить список тех, кто "лайкнул" аудиозапись ВКонтакте?
Совсем скоро ВКонтакте выпустят обновление, с которым появится функция лайка аудиозаписи.
Последний раз, когда я проверял эту фичу, это выглядело так.
Думаю пользователям неофициальных клиентов ВК это было уже известно задолго до публикации этого поста, а сейчас после выхода недавнего обновления, эта функция уже стала доступна многим и без дополнительных телодвижений.
Мне стало интересно, как работает лайк, через какой внутренний сервис ВК вообще этот лайк засчитывается. Сразу предположил, что лайки для аудио работают так же как и лайки к постам, фотографиям, клипам и историям - через метод likes.add (vk.com/dev/likes.add).
Когда я об этом узнал, еще не было официальной документации ВК по работе с лайками для аудио, поэтому пришлось проверять только собственные предположения. Но кстати говоря, сейчас все есть и тип audio описан на vk.com/dev/likes.add и не только там.
Теперь о самом получении списка лайкнувших. Чтобы получить список лайкнувших что либо в ВК, используется метод vk.com/dev/likes.getList
В поле type - пишем audio, в owner_id и item_id - ID владельца аудио и ID трека (об этом ниже)
На выходе получаем общее число и массив идентификаторов пользователей, которым понравился этот трек.
В общем-то, так теперь и можно получить список тех, кто лайкнул аудио. Но есть одна особенность у работы этого методы с аудиозаписями. Когда я узнал об этой фиче, лайки были доступны разве что тестерам, но метод возвращал на треках Моргенштерна по 3 млн. идентификаторов, что на тот момент было невозможно, ведь о лайках никто не знал.
Объясняется это тем, что метод возвращает не только список лайкнувших, но и список тех, кто добавил этот трек к себе в аудиозаписи. Сначала я думал, что он возвращает тех, кто и прослушал, но это оказалось не так.
Таким образом мы получаем не только способ получения лайкнувших, но и способ проверки наличия аудиозаписи в добавленных. Сделать это очень просто. К примеру, возьмем какой-нибудь трек из чарта ВК, чтобы узнать его ID и ID владельца этого трека. Если кто не знал, где находится чарт в версии для ПК: музыка -> обзор -> чарт ВКонтакте.
Наводим на нужный нам трек и нажимаем по нему правой кнопкой мыши, чтоб посмотреть код элемента (я использую Chrome).
Открывается код страницы, нам нужно пролистать чуть выше, пока не увидите что-то типа того, что на этой картинке.
После data-audio идет перечисление свойств этого трека, нам нужны только первые 2 числа.
Первое число - это ID аудио (item_id), второе число - это ID владельца трека (owner_id). Копируем их или переписываем вручную, если не поняли, как скопировать.
Теперь для проверки гипотезы, сначала добавляем трек к себе в аудио. После этого переходим на vk.com/dev/likes.isLiked и в поля owner_id, item_id и type (audio) вставляем нужные значения. user_id оставляем пустым, потому что мы проверяем, что лайкнули (добавили трек) мы, а не кто-то другой.
Получаем наглядное подтверждение гипотезы. Мы не лайкали трек, но мы есть в списке тех, кто его лайкнул.
С помощью данного метода вы сможете узнать только наличие официальных исходников аудиозаписей в аудиозаписях пользователя, потому что если один пользователь отправит аудио другому из своего плейлиста, то owner_id и item_id у одного и того же трека будет другой, этот трек станет копией. На данный момент работает даже если у юзера скрыты аудиозаписи и вполне возможно, что это и не баг во все.
Интересно ваше мнение по фиче с лайками аудио вообще, пишите, что думаете об обнове.