Как получить список тех, кто "лайкнул" аудиозапись ВКонтакте?

Совсем скоро ВКонтакте выпустят обновление, с которым появится функция лайка аудиозаписи.

Последний раз, когда я проверял эту фичу, это выглядело так.

Как получить список тех, кто "лайкнул" аудиозапись ВКонтакте? ВКонтакте, API, Разработчики, Целевая аудитория, Таргетинг, Фича, Музыка вк, Длиннопост

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


Мне стало интересно, как работает лайк, через какой внутренний сервис ВК вообще этот лайк засчитывается. Сразу предположил, что лайки для аудио работают так же как и лайки к постам, фотографиям, клипам и историям - через метод 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 трека (об этом ниже)

Как получить список тех, кто "лайкнул" аудиозапись ВКонтакте? ВКонтакте, API, Разработчики, Целевая аудитория, Таргетинг, Фича, Музыка вк, Длиннопост

На выходе получаем общее число и массив идентификаторов пользователей, которым понравился этот трек.


В общем-то, так теперь и можно получить список тех, кто лайкнул аудио. Но есть одна особенность у работы этого методы с аудиозаписями. Когда я узнал об этой фиче, лайки были доступны разве что тестерам, но метод возвращал на треках Моргенштерна по 3 млн. идентификаторов, что на тот момент было невозможно, ведь о лайках никто не знал.

Объясняется это тем, что метод возвращает не только список лайкнувших, но и список тех, кто добавил этот трек к себе в аудиозаписи. Сначала я думал, что он возвращает тех, кто и прослушал, но это оказалось не так.


Таким образом мы получаем не только способ получения лайкнувших, но и способ проверки наличия аудиозаписи в добавленных. Сделать это очень просто. К примеру, возьмем какой-нибудь трек из чарта ВК, чтобы узнать его ID и ID владельца этого трека. Если кто не знал, где находится чарт в версии для ПК: музыка -> обзор -> чарт ВКонтакте.


Наводим на нужный нам трек и нажимаем по нему правой кнопкой мыши, чтоб посмотреть код элемента (я использую Chrome).

Как получить список тех, кто "лайкнул" аудиозапись ВКонтакте? ВКонтакте, API, Разработчики, Целевая аудитория, Таргетинг, Фича, Музыка вк, Длиннопост

Открывается код страницы, нам нужно пролистать чуть выше, пока не увидите что-то типа того, что на этой картинке.

Как получить список тех, кто "лайкнул" аудиозапись ВКонтакте? ВКонтакте, API, Разработчики, Целевая аудитория, Таргетинг, Фича, Музыка вк, Длиннопост

После data-audio идет перечисление свойств этого трека, нам нужны только первые 2 числа.

Первое число - это ID аудио (item_id), второе число - это ID владельца трека (owner_id). Копируем их или переписываем вручную, если не поняли, как скопировать.


Теперь для проверки гипотезы, сначала добавляем трек к себе в аудио. После этого переходим на vk.com/dev/likes.isLiked и в поля owner_id, item_id и type (audio) вставляем нужные значения. user_id оставляем пустым, потому что мы проверяем, что лайкнули (добавили трек) мы, а не кто-то другой.

Как получить список тех, кто "лайкнул" аудиозапись ВКонтакте? ВКонтакте, API, Разработчики, Целевая аудитория, Таргетинг, Фича, Музыка вк, Длиннопост

Получаем наглядное подтверждение гипотезы. Мы не лайкали трек, но мы есть в списке тех, кто его лайкнул.


С помощью данного метода вы сможете узнать только наличие официальных исходников аудиозаписей в аудиозаписях пользователя, потому что если один пользователь отправит аудио другому из своего плейлиста, то owner_id и item_id у одного и того же трека будет другой, этот трек станет копией. На данный момент работает даже если у юзера скрыты аудиозаписи и вполне возможно, что это и не баг во все.


Интересно ваше мнение по фиче с лайками аудио вообще, пишите, что думаете об обнове.