Возвращает список идентификаторов друзей пользователя или расширенную информацию о друзьях пользователя (при использовании параметра fields).
Страница документации ВКонтакте friends.get.
Синтаксис
Параметры
Класс FriendsGetParams содержит следующие свойства:
- UserId — Идентификатор пользователя, для которого необходимо получить список друзей. Если параметр не задан, то считается, что он равен идентификатору текущего пользователя (справедливо для вызова с передачей access_token). целое число
- Order — Порядок, в котором нужно вернуть список друзей. Допустимые значения: hints — сортировать по рейтингу, аналогично тому, как друзья сортируются в разделе Мои друзья (данный параметр доступен только для Desktop-приложений). random — возвращает друзей в случайном порядке. mobile — возвращает выше тех друзей, у которых установлены мобильные приложения. name — сортировать по имени. Данный тип сортировки работает медленно, так как сервер будет получать всех друзей а не только указанное количество count. (работает только при переданном параметре fields) строка
- ListId — Идентификатор списка друзей, полученный методом friends.getLists, друзей из которого необходимо получить. Данный параметр учитывается, только когда параметр user_id равен идентификатору текущего пользователя. Данный параметр доступен только для Desktop-приложений. положительное число
- Count — Количество друзей, которое нужно вернуть. (по умолчанию – все друзья) положительное число
- Offset — Смещение, необходимое для выборки определенного подмножества друзей. положительное число
- Fields — Список дополнительных полей, которые необходимо вернуть. Доступные значения: nickname, domain, sex, bdate, city, country, timezone, photo_50, photo_100, photo_200_orig, has_mobile, contacts, education, online, relation, last_seen, status, can_write_private_message, can_see_all_posts, can_post, universities список строк, разделенных через запятую
- NameCase — Падеж для склонения имени и фамилии пользователя. Возможные значения: именительный – nom, родительный – gen, дательный – dat, винительный – acc, творительный – ins, предложный – abl. По умолчанию nom. строка
Результат
После успешного выполнения возвращает список идентификаторов (id) друзей пользователя, если параметр fields не использовался. При использовании параметра fields возвращает список объектов пользователей, но не более 5000.
VK API [PHP Devel Studio] [Урок #4] — Информация о Пользователе
Пытаюсь получить список друзей у пользователя по средствам PHP, кол-во друзей больше 9 тысяч, в API VK у метода «friends.get» есть ограничения на получение всего 5000.
Изначально пробовал получить таким образом:
Затем загонял всё это дело в массив и перебирал циклом, что бы отобрать только заблокированных, не суть..
Проблема возникла в том, что друзей больше чем 5 тысяч и я не могу понять как забрать оставшихся.
Пробовал такой запрос:
Добавил «offset=» и вроде удалось вынуть другую часть, но не могу понять как их совместить с предыдущими пятью тысячами, или как этот запрос выполнить несколько раз и всё собрать воедино.
VK API #1 Receiving access token (standalone app)
0.Предыстория
Привет, хабраюзер.
Однажды у меня возникла необходимость найти человека, зная его внешний вид и зная о его членстве в определенном клубе. Также я владел адресами(вконтакте) страниц двух других членов клуба. Почти наверняка искомый человек был у каждого из них в друзьях. Решить эту проблему можно было разными путями. В статье я напишу о том, как мной было реализовано решение с использованием vk.com API.
1.Задача
Сделать сервис, который будет находить всех общих друзей двух отдельно взятых пользователей, не требуя верификации и аккаунта в социальной сети для пользователей сервиса. Получить данные об общих друзьях:
Реализовать задание на базе API вконтакте. Написать отельный класс для этого.
2.Решение
2.1.Определяем необходимые методы API
Заходим в список методов API. И поискав, находим то, что нам нужно.
Для получения друзей пользователя есть метод friends.get.
friends.get — возвращает список идентификаторов друзей пользователя или расширенную информацию о друзьях пользователя (при использовании параметра fields).
И, что важно, в рамках решения поставленной задачи это открытый метод, не требующий access_token.
Обязательный параметр только один:
Используя данный метод, можно получить информацию обо всех друзьях каждого из двух наших множеств, но такой подход не будет оптимальным. Пользователь А может иметь 2000 людей в друзьях, пересекаться с друзьями пользователя В будут только 3 человека. В таком случае информация о 1997 пользователях будет нам ненужной, и ресурсы, затраченные на её получение, будут потрачены впустую.
Мы будем запрашивать исключительно идентификаторы пользователей, и получив нужные нам номера(которые принадлежат множеству А и В), уже по ним выбирать информацию.
Для получения информации о пользователе есть метод users.get.
users.get — Возвращает расширенную информацию о пользователях.
Данный метод также не нуждается в access_token, то есть идеально подходит для нашей задачи.
В user_ids мы передадим массив идентификаторов пользователей, которые встречаются в обоих множествах.
Мы хотим получить только аватар размером 100*100, для этого в параметре fields передадим значение photo_100.
2.2.Переходим к практической стороне
Я написал простой класс на php:
Теперь смотрим на наш класс в действии:
3.Резюме
Ссылка на репозиторий GitHub — vkfriends.
Спасибо, что читали,
искренне надеюсь, что вам было интересно.
Источник: teh-fed.ru
Статья Поиск модераторов групп ВК по картинкам GIF с помощью Python
Прочитал тут новость-инструкцию, как можно найти ссылку на страницу модератора-администратора группы. Многие пишут, что данная информация уже довольно старая. Но, тем не менее, я ее увидел в первый раз и подумал, что можно это дело слегка автоматизировать. То есть, для того, чтобы найти модератора, а иногда их несколько у группы, вовсе не обязательно искать gif на странице.
Достаточно написать небольшой скрипт на Python, который будет делать это за вас. А вам останется только проверить результаты поиска.
Дисклеймер : Все данные, предоставленные в данной статье, взяты из открытых источников, не призывают к действию и являются только лишь данными для ознакомления, и изучения механизмов используемых технологий.
Что понадобиться?
Для начала установим основной инструмент, с помощью которого и будем работать с группами ВК. Пишем в терминале команду:
pip install vk-api
Чтобы вывод в терминал не был скучным, а заиграл новыми красками, установим colorama. Для этого пишем в терминале:
pip install colorama
Также вам понадобиться получить vk-api token. Где и как его получать, можете почитать вот в этой статье, в начале.
Токен я вынес в отдельный файл, чтобы не светить в коде. Импортируем то, что установили в скрипт и инициализируем colorama:
from colorama import Fore from colorama import init from vk_api import VkApi from set import token init()
Создадим сессию ВК в которую передадим токен.
Поиск информации в ленте группы с заданными параметрами
Создадим функцию get_group_photo(group_id). В нее нужно на входе передается id группы. Согласно условию поиска модераторов, нужно для начала найти все посты в ленте, в которых есть картинки с расширением «.gif». Причем, данные посты должны быть опубликованы именно от имени группы, а не просто случайным пользователем, если в группе разрешен свободный постинг сообщений.
Получим количество gif в ленте. Для этого воспользуемся методом wall.search, которые принимает следующие параметры: owner_id – id группы, которое должно передаваться с указанием «-» в начале, иначе поиск будет пытаться найти все на стене соответствующего id пользователя; access_token – полученный токен для доступа к api; query – поисковый запрос, в котором мы явно укажем, что хотим найти, а именно – «.gif»; owners_only – данный параметр имеет два значения, 1 и 0, что соответствует поиску 1 – только сообщений от имени группы, 0 – всех сообщений; offset – смещение, которое нужно для того, чтобы выполнить поиск по всем картинкам, так как поиск за один раз возвращает не более ста объектов, что указывается в следующем параметре; count – параметр, в котором указывается, сколько результатов поиска нужно отобразить, но не более 100; v – версия api. Также, укажем сразу же ключ json, из которого нужно получать информацию.
count = session.get_api().wall.search(owner_id=f’-‘, access_token=token, query=’.gif’, owners_only=1, offset=0, count=1, v=5.81)[‘count’]
Теперь создадим множество, в которое будем складывать все id найденных модераторов, так как постов может быть много, а значит, и id будут повторяться. Вот, для того, чтобы избежать повторов, мы и будем использовать множество. Затем проверим, не является ли количество результатов поиска равным 0. Если да, возвращаем из функции пустое множество. Нет – выводим в терминал информацию о количестве найденных картинок.
set_moder = set() if count == 0: return set_moder else: print(Fore.GREEN + f’Найдено: картинок’)
Как вы помните, если картинок более ста, нужно будет указывать смещение, для получения всех результатов. Пишем проверку, если количество результатов поиска больше 100, запускаем цикл по диапазону от 0 до количества результатов поиска, с шагом 100. Выводим на экран информацию, что ищем модераторов. И снова запускаем поиск с помощью метода wall.search, куда передаем смещение – offset, чтобы получить очередную порцию результатов.
if count > 100: for offset in range(0, count, 100): print(Fore.YELLOW + f’rПоиск модераторов. Смещение: ‘, end=») search = session.get_api().wall.search(owner_id=f’-‘, access_token=token, query=’.gif’, owners_only=1, offset=offset, count=100, v=5.81)[‘items’]
Теперь в цикле пробегаемся по результатам поиска, которые приходят в виде json и добавляем в множество найденные id.
ID ищется в ссылке на gif, то есть, для примера, у вас есть ссылка: https://vk.com/doc8893688_448695956 . Здесь нужно забрать id, которое указывается после doc и до «_». То есть в данном случае это будет 8893688. Поэтому, забираем ссылку, если она есть, разбиваем ее по «/», забираем третий элемент списка, тут же разбиваем его по «_» и заменяем doc на пустоту. Таким образом мы получим идентификатор. Если же такого ключа нет, обработаем исключение, в котором укажем, что надо продолжать цикл.
for item in search: try: set_moder.add(item[«attachments»][0][«doc»][«url»].split(«/»)[3].split(«_»)[0].replace(«doc», «»)) except KeyError: continue
Если количество результатов поиска меньше 100, то проделываем все то же самое, за исключением того, что здесь нам смещение не нужно, а значит, можно цикл по диапазону не запускать.
search = session.get_api().wall.search(owner_id=f’-‘, access_token=token, query=’.gif’, owners_only=1, offset=0, count=count, v=5.81)[‘items’] for num, item in enumerate(search): print(Fore.YELLOW + f’rПоиск модераторов: ‘, end=») try: set_moder.add(item[«attachments»][0][«doc»][«url»].split(«/»)[3].split(«_»)[0].replace(«doc», «id»)) except KeyError: continue
В конце возвращаем множество из функции, даже если оно пустое.
Полный код функции поиска картинок и извлечения id
def get_group_photo(group_id): count = session.get_api().wall.search(owner_id=f’-‘, access_token=token, query=’.gif’, owners_only=1, offset=0, count=1, v=5.81)[‘count’] set_moder = set() if count == 0: return set_moder else: print(Fore.GREEN + f’Найдено: картинок’) if count > 100: for offset in range(0, count, 100): print(Fore.YELLOW + f’rПоиск модераторов. Смещение: ‘, end=») search = session.get_api().wall.search(owner_id=f’-‘, access_token=token, query=’.gif’, owners_only=1, offset=offset, count=100, v=5.81)[‘items’] for item in search: try: set_moder.add(item[«attachments»][0][«doc»][«url»].split(«/»)[3].split(«_»)[0].replace(«doc», «»)) except KeyError: continue else: search = session.get_api().wall.search(owner_id=f’-‘, access_token=token, query=’.gif’, owners_only=1, offset=0, count=count, v=5.81)[‘items’] for num, item in enumerate(search): print(Fore.YELLOW + f’rПоиск модераторов: ‘, end=») try: set_moder.add(item[«attachments»][0][«doc»][«url»].split(«/»)[3].split(«_»)[0].replace(«doc», «id»)) except KeyError: continue return set_moder
Получение информации о найденных модераторах
Много информации забирать не будем. В данном случае будет достаточно Ф.И.О. и ссылки на профиль, хотя, в теории, ссылка то уже есть, но, надо же чтобы было красиво. Поэтому, создадим функцию get_user_info(moder_list). На входе она получает список множество с найденными id модераторов. Объявим словарь для пользовательских данных.
Суда мы будем добавлять то, что получили в запросе.
Теперь в цикле пробежимся по полученному множеству и будем забирать оттуда id. Для получения данных о пользователе воспользуемся методом users.get, в который передавать, кроме user_id ничего не будем. Затем пробежимся в цикле по полученному json с данными.
Так как мы не указывали, что желаем получить дополнительные параметры, нам в ответе прилетит немного информации, из которой мы заберем только имя и фамилию. Заодно будем определять, является ли аккаунт действующим, так как некоторые аккаунты уже удалены, по прошествии времени. То есть, мы попытаемся получить ключ «deactivated». Если ключ получен, значит не делаем ничего.
Если же ключа нет, сработает исключение, и мы добавим данные о пользователе в словарь. После чего вернем словарь их функции.
def get_user_info(moder_list): user_dict = dict() for num, moder in enumerate(moder_list): print(Fore.YELLOW + f’rПоиск информации о модераторах: ‘, end=») user_info = session.get_api().users.get(user_id=moder) for user in user_info: try: user[‘deactivated’] except KeyError: user_dict.update() return user_dict
Вывод полученных данных в терминал
Создадим функцию print_data(user_dict, user_input). На вход функции передадим словарь с данными модераторов и название группы. Где мы его возьмем – об этом чуть ниже. Затем пробежимся в цикле по словарю и выведем в терминал Ф.И.О. и ссылку на страницу.
def print_data(user_dict, user_input): ln = len(f’ДАННЫЕ О МОДЕРАТОРАХ ГРУППЫ: ‘) print(Fore.GREEN + f’nnДАННЫЕ О МОДЕРАТОРАХ ГРУППЫ: n’) for item in user_dict: print(Fore.RESET + f» Ф.И.О.: «) print(Fore.RESET + f» Ссылка на страницу: https://vk.com/idn «)
Получение пользовательского ввода, определение id группы и ее названия
Создадим функцию main(). Здесь запросим у пользователя ссылку на группу. Ссылки на группы могут быть разного плана. У некоторых это публичная страница, у некоторых именно группа по интересам. И соответственно, в ссылке может отображаться то имя, которое указал пользователь, а не ее id. А если пользователь не указал, то просто club121545121, например.
Вот мы все это чтобы не проверять, просто определим id. Для начала распилим полученную от пользователя ссылку по «/» и заберем последний элемент. Затем с помощью vk_api и его метода getById, передадим полученное имя в запросе, а также токен. В ответ нам прилетит json, в котором будет содержаться id группы, а также ее название. Вот их то нам оттуда и надо будет забрать.
Далее, запускаем поиск фото в ленте группы. Проверяем, не является ли найденное количество id 0. Если нет, запускаем функцию получения данных пользователя. Когда дынные пользователей будут получены, выводим их в терминал.
def main(): user_input = input(‘Введите ссылку на группу: ‘) group_temp = user_input.split(«/»)[-1] group = session.get_api().groups.getById(group_id=group_temp, access_token=token, v=5.81) moder = get_group_photo(group[0][‘id’]) if len(moder) > 0: print(Fore.GREEN + f’nnНАЙДЕНО МОДЕРАТОРОВ: ‘) user_dict = get_user_info(moder) print_data(user_dict, group[0][‘name’]) else: print(Fore.RED + ‘n[-] Данных о модераторах группы не найдено’)
Вот такой вот небольшой скрипт у нас получился. С его помощью можно найти всех пользователей, у которых когда-то был доступ к админке группы. То есть, он либо являлся модератором, либо ему давали доступ для публикации определенных постов.
Вот, для примера, результаты поиска:
Результаты поиска
Полный код скрипта поиска модераторов группы
# pip install vk-api # pip install colorama from colorama import Fore from colorama import init from vk_api import VkApi from set import token init() session = VkApi(token=token) def get_group_photo(group_id): count = session.get_api().wall.search(owner_id=f’-‘, access_token=token, query=’.gif’, owners_only=1, offset=0, count=1, v=5.81)[‘count’] set_moder = set() if count == 0: return set_moder else: print(Fore.GREEN + f’Найдено: картинок’) if count > 100: for offset in range(0, count, 100): print(Fore.YELLOW + f’rПоиск модераторов. Смещение: ‘, end=») search = session.get_api().wall.search(owner_id=f’-‘, access_token=token, query=’.gif’, owners_only=1, offset=offset, count=100, v=5.81)[‘items’] for item in search: try: set_moder.add(item[«attachments»][0][«doc»][«url»].split(«/»)[3].split(«_»)[0].replace(«doc», «»)) except KeyError: continue else: search = session.get_api().wall.search(owner_id=f’-‘, access_token=token, query=’.gif’, owners_only=1, offset=0, count=count, v=5.81)[‘items’] for num, item in enumerate(search): print(Fore.YELLOW + f’rПоиск модераторов: ‘, end=») try: set_moder.add(item[«attachments»][0][«doc»][«url»].split(«/»)[3].split(«_»)[0].replace(«doc», «id»)) except KeyError: continue return set_moder def get_user_info(moder_list): user_dict = dict() for num, moder in enumerate(moder_list): print(Fore.YELLOW + f’rПоиск информации о модераторах: ‘, end=») user_info = session.get_api().users.get(user_id=moder) for user in user_info: try: user[‘deactivated’] except KeyError: user_dict.update() return user_dict def print_data(user_dict, user_input): ln = len(f’ДАННЫЕ О МОДЕРАТОРАХ ГРУППЫ: ‘) print(Fore.GREEN + f’nnДАННЫЕ О МОДЕРАТОРАХ ГРУППЫ: n’) for item in user_dict: print(Fore.RESET + f» Ф.И.О.: «) print(Fore.RESET + f» Ссылка на страницу: https://vk.com/idn «) def main(): user_input = input(‘Введите ссылку на группу: ‘) group_temp = user_input.split(«/»)[-1] group = session.get_api().groups.getById(group_id=group_temp, access_token=token, v=5.81) moder = get_group_photo(group[0][‘id’]) if len(moder) > 0: print(Fore.GREEN + f’nnНАЙДЕНО МОДЕРАТОРОВ: ‘) user_dict = get_user_info(moder) print_data(user_dict, group[0][‘name’]) else: print(Fore.RED + ‘n[-] Данных о модераторах группы не найдено’) if __name__ == «__main__»: main()
А на этом, пожалуй, все.
Спасибо за внимание. Надеюсь, что данная информация будет вам полезна
Источник: codeby.net
Вывод информации о группе ВКонтакте на JQuery
В этой небольшой статье Вы узнаете, как вывести текстом количество участников в группе ВКонтакте и другую информацию. Используя API социальных сетей, можно выводить на своем сайте определнную информацию о профилях сообществ на JQuery, без PHP.
Получение информации о группе ВКонтакте
Сразу начнем с демонстрации, чтобы Вы понимали, что к чему:
Введите ID паблика/группы: Показать
Следующий адрес поможет нам с Вами получить данные о сообществе:
http://api.vk.com/method/groups.getById?gid=27541941https://yraaa.ru/scripts/vyvod-informacii-o-gruppe-vkontakte-na-jquery» target=»_blank»]yraaa.ru[/mask_link]