Vk api python список друзей

Социальный граф сделан в честь юбилея соцсети-в 2016 году ВКонтакте исполнилось 10 лет, и любой пользователь может quot;Вспомнить всеquot;, какая была его первая запись, статус, друзья, музыка, количество лайков, сообщений, сколько пользователь в сети в общей сложности. Словом, показана вся история станицы от первого дня регистрации до сегодняшнего момента. Очень интересно пройтись по своему прошлому.

Социальный граф


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

Показывает первую фото.

Показвает сколько лайков вы сделали сколько сообщений вами было отправлено. И самое главное сколько времени вы были с этой социальной сетью. Окунает в реальность. А не много ли?)))

VK API appsgetFriendsList выбираем список друзей в приложение и доступных для приглашения вконтакте

К 10-летнему юбилею VK его создатели запустили уникальный сервис, позволяющий получить статистические данные своей учетной записи. Подойдет для тех, кто испытывает ностальгию по первым годам использования quot;ВКонтактеquot;. Помимо возраста страницы, статистики сообщений и созданных граффити, предлагается ознакомиться с социальным графом, выполненным в форме фирменного логотипа и отражающим дружественные связи с другими пользователями популярной социальной сети.

Совсем недавно, в связи с 10-летнем юбилеем социальной сети Вконтакте, появилось приложение quot;Социальный графquot;. Это приложение непосредственно ВК может строить связь вас и ваших друзей. То есть это приложение способно выстроить всю историю вашей активности Вконтакте с момента регистрации.

Социальная сеть quot;В контактеquot; отметила свой 10 летний юбилей. В связи с этим предоставили возможность пользования приложением Социальный граф. Теперь можно будет с помощью этого сервиса просмотреть моменты из прошлого, это очень увлекательно и интересно. Можно будет узнать, когда был зарегистрирован пользователь, кто стал его первым другом. Узнаете о первых добавленных фото, аудиозаписи и многое другое.

Социальный граф это мини-сервис, который подарен пользователям был в честь 10-летия социальной сети.

Социальный граф дат возможность посмотреть все фотографии, видео когда либо были загружены на страницу, также можно посмотреть сколько лет странице. Построить свою цепочку друзей. Вообще классная штука!

Социальный граф это приложение, вернее одна из функций программы quot;Вспомнить всquot;, которое было создано к юбилею соц. сети Вконтакте. Недавно Вконтакте исполнилось 10 лет, и благодаря приложению Социальный граф можно отмотать время назад и вспомнить тот момент когда пользователь прошел регистрацию в соц. сети, какие были его первые загруженные фото.

Попалась мне тут когда-то интересная задача — быстро и максимально просто (с минимумом привлекаемых библиотек) нарисовать граф пересечения пользователей разных групп Вконтакте. И я ее даже сделал. Затем подумал — а вдруг кому-то еще нужно будет сделать что-то подобное?

Учим vk api вместе #1 | Уроки vk api | Метод friends.get

Поэтому здесь я расскажу и покажу, как же всё-таки делать такие вещи:

1. Подключаться к веб-сайту вконтакте с помощью Python 2.7 (всегда можно переписать под 3.x, если что)

2. Создавать графы с помощью библиотеки NetworkX (здесь рассматриваем графы пересечений аудитории групп вконтакте)

3. Визуализировать эти графы (тут нам немного понадобится библиотека matplotlib)

нарисовать граф пересечений пользователей разных групп Вконтакте

Базовые инструменты:

Структура выходных данных такова: ключ — это имя группы, значение — это словарь с двумя ключами: u’count’ — количество участников в группе и u’users’ — список ID участников этой группы (максимум 1000, как мы помним)

В качестве имени группы берется ее адрес вконтакте, например, есть группа Образовач, которая находится по адресу https://vk.com/obrazovach и мы берем последнюю часть адреса, т.е. «obrazovach» в качестве имени группы

Еще по теме:  За что получаешь vk 72 01

Строим социальный граф

Теперь переходим непосредственно к построению социального графа.

Здесь мы будем применять библиотеку NetworkX , которая прекраснейшим образом подходит для составления, анализа и визуализации графов.

Вот таким вот образом можно создать граф для групп вконтакте:

  1. На вход подается словарь, где ключом является название группы вконтакте, а значением — количество участников этой группы и список из максимум 1000 ID участников группы (каждый ID — это ID пользователя вконтакте)
  2. Создаём вершину в графе для каждой группы, в качестве атрибута присваиваем каждой вершине вес, равный количеству участников в группе
  3. Затем для каждой пары вершин, если между ними есть пересечение по ID участников, создается ребро, и в качестве атрибута присваиваем каждому ребру вес, равный количеству пользователей, которые присутствуют в обеих группах.

Атрибуты, которые присваиваются вершинам и ребрам, необходимы для последующей визуализации. Чем больше вес вершины (количество участников в группе), тем больше будет размер вершины на диаграмме. Чем больше вес ребра (пересечение количества участников), тем толще будет ребро на диаграмме.

Вот эта функция как раз и строит описанный выше граф:

#!/usr/bin/env python2 # -*- coding: utf-8 -*- import networkx as nx def make_graph(groups_out): graph = nx.Graph() groups_out = groups_out.items() for i_group in xrange(len(groups_out)): graph.add_node(groups_out, size=groups_out[«count»]) for k_group in xrange(i_group+2, len(groups_out)): intersection = set(groups_out[«users»]).intersection(set(groups_out[«users»])) if len(intersection) > 0: graph.add_edge(groups_out, groups_out, weight=len(intersection)) return graph

Списки друзей «ВКонтакте» в приложении

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

Визуализируем

Визуализация проводится с помощью методов NetworkX на базе matplotlib. Подробнее о том, как визуализировать граф, можно прочитать . А вот пример того, как визуализируется именно тот граф, который мы создали выше. Параметры методов говорят сами за себя, так что дополнительных объяснений, полагаю, не требуется

Источник: river-haze.ru

Анализ дружеских связей VK с помощью Python. Часть первая. Друзья друзей

Анализ дружеских связей VK с помощью Python. Часть первая. Друзья друзей

2014-07-15 в 6:56, admin , рубрики: python, Вконтакте, Вконтакте API, Программирование, Социальные сети и сообщества

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

Начнем с того, что просто скачать все id пользователей достаточно легко, список валидных id можно найти в Каталоге пользователей Вконтакте. Наша же задача — получить список друзей выбранного нами id пользователя, их друзей и рекурсивно сколь угодно глубоко, в зависимости от указанной глубины.

Код, опубликованный в статье, будет меняться с течением времени, поэтому более свежую версию можно найти в том же проекте на Github.

  • Задаем нужную нам глубину
  • Отправляем исходные данные либо те id, которые надо исследовать на данной глубине
  • Получаем ответ

Что будем использовать:

  • Python 3.4
  • Хранимые процедуры в ВКонтакте

Задаем нужную нам глубину

Что нам потребуется в начале — это указать глубину (deep), с которой мы хотим работать. Сделать можно это сразу в main.py:

print(a.deep_friends(2)) # такая строчка там уже есть

deep равное 1 — это наши друзья, 2 — это друзья наших друзей и так далее. В итоге мы получим словарь, ключами которого будут id пользователей, а значениями — их список друзей.

Не спешите выставлять большие значения глубины. При 14 моих исходных друзьях и глубине равной 2, количество ключей в словаре составило 2427, а при глубине равной 3, у меня не хватило терпения дождаться завершения работы скрипта, на тот момент словарь насчитывал 223.908 ключей. По этой причине мы не будем визуализировать такой огромный граф, ведь вершинами будут ключи, а ребрами — значения.

Отправление данных

Добиться нужного нам результата поможет уже известный метод friends.get, который будет расположен в хранимой процедуре, имеющей следующий вид:

Еще по теме:  Как найти эквалайзер в Вконтакте

var targets = Args.targets; var all_friends = <>; var req; var parametr = «»; var start = 0; // из строки с целями вынимаем каждую цель while(start <=targets.length)< if (targets.substr(start, 1) != «,» start != targets.length)< parametr = parametr + targets.substr(start, 1); >else < // сразу делаем запросы, как только вытащили id req = API.friends.get(); if (req) < all_friends = all_friends + [req]; >else < all_friends = all_friends + [0]; >parametr = «»; > start = start + 1; > return all_friends;

Напоминаю, что хранимую процедуру можно создать в настройках приложения, пишется она на VkScript, как и execute, документацию можно прочесть здесь и здесь.

Теперь о том, как она работает. Мы принимаем строку из 25 id, разделенных запятыми, вынимаем по одному id, делаем запрос к friends.get, а нужная нам информация будет приходить в словаре, где ключи — это id, а значения — список друзей данного id.

При первом запуске мы отправим хранимой процедуре список друзей текущего пользователя, id которого указан в настройках. Список будет разбит на несколько частей (N/25 — это и число запросов), связано это с ограничением количества обращений к API ВКонтакте.

Получение ответа

Всю полученную информацию мы сохраняем в словаре, например:

Ключи 1, 2 и 3 были получены при глубине равной 1. Предположим, что это и были все друзья указанного пользователя (0).

Если глубина больше 1, то далее воспользуемся разностью множеств, первое из которых — значения словаря, а второе — его ключи. Таким образом, мы получим те id (в данном случае 0 и 4), которых нет в ключах, разобьем их опять на 25 частей и отправим хранимой процедуре.

Тогда в нашем словаре появятся 2 новых ключа:

Сам же метод deep_friends() выглядит следующим образом:

def deep_friends(self, deep): result = <> def fill_result(friends): for i in VkFriends.parts(friends): r = requests.get(self.request_url(‘execute.deepFriends’, ‘targets=%s’ % VkFriends.make_targets(i))).json()[‘response’] for x, id in enumerate(i): result[id] = tuple(r[x][«items»]) if r[x] else None for i in range(deep): if result: # те айди, которых нет в ключах + не берем id:None fill_result(list(set([item for sublist in result.values() if sublist for item in sublist]) — set(result.keys()))) else: fill_result(requests.get(self.request_url(‘friends.get’, ‘user_id=%s’ % self.my_id)).json()[‘response’][«items»]) return result

Конечно, это быстрее, чем кидать по одному id в friends.get без использования хранимой процедуры, но времени все равно занимает порядочно много.

В заключение

Если бы friends.get был похож на users.get, а именно мог принимать в качестве параметра user_ids, то есть перечисленные через запятую id, для которых нужно вернуть список друзей, а не по одному id, то код был бы намного проще, да и количество запросов было в разы меньше.

Данные мы собрали, сегодня на этом все. Далее мы будем с этими данными играться.

Источник: www.pvsm.ru

Vk api python список друзей

Полный спектр компьютерных услуг!

Загрузка. Пожалуйста, подождите.

X

Сообщение сайта

(Сообщение закроется через 2 секунды)

Внимание!

Ремонт компьютеров в калуге Рекламное место сдается

[Из песочницы] Анализ дружеских связей VK с помощью Python

Decker

Просмотр профиля

29.4.2014, 12:13

Группа: Главные администраторы
Сообщений: 14349
Регистрация: 12.10.2007
Из: Twilight Zone
Пользователь №: 1

Социальные сети и сообщества,
Программирование*
Совсем недавно на Хабре появилась статья о реализации дружеских связей в ВКонтакте с помощью Wolfram Mathematica. Идея мне понравилась, и, естественно, захотелось сделать такой же граф, используя Python и d3. Вот, что из этого получилось.

Внимание! В статье будут присутствовать части кода, описывая самые важные действия, но следует учесть, что проект претерпит еще не одно изменение в своей кодовой базе. Заинтересовавшиеся могут найти исходники на GitHub.

Разобьем задачу по элементам:

  • Создание и авторизация приложения.
  • Получение данных.
  • Визуализация графа.

Что для этого нам понадобится:

  • Python 3.4
  • requests
  • d3
  • Mozilla FireFox, так как в Chrome нельзя использовать XMLHttpRequest для загрузки локальных файлов (никто не мешает сделать python -m http.server 8000)

Создание и авторизация приложения

Чтобы получить доступ к API ВКонтакте, нам необходимо создать Standalone-приложение, после чего мы сможем использовать нужные нам методы API, которые будут описаны далее. Приложение создается здесь — выберем Standalone-приложение. Нас попросят ввести код-подтверждения, высланный на мобильный, после чего мы попадем на страницу управления приложением. На вкладке Настройки нам пригодится ID приложения для получения access_token.

Еще по теме:  Программа от Вконтакте как инстаграм

Далее нам надо авторизовать наше приложение. Этот процесс состоит из 3х этапов.

Аутентификации пользователя на сайте ВКонтакте

Для этого сформируем url, как показано ниже:

APP_ID – идентификатор Вашего приложения;

PERMISSIONS – запрашиваемые права доступа приложения;

DISPLAY – внешний вид окна авторизации, поддерживаются: page, popup и mobile.

REDIRECT_URI – адрес, на который будет передан access_token.

API_VERSION – версия API, которую Вы используете.

В нашем случае PERMISSIONS — это доступ к друзьям. Если адрес сформирован правильно, нам предложат ввести логин и пароль.

Разрешение доступа к своим данным

Далее разрешаем приложению доступ к необходимой информации:

Получение access_token

После авторизации приложения клиент будет перенаправлен на REDIRECT_URI. Нужная нам информация будет заключена в ссылке.

Редактируем файл settings.py, вставляя туда полученные access_token и user_id. Теперь мы можем осуществлять запросы к API ВКонтакте.

Получение данных

Для начала разберем методы, которые будем использовать для данной цели.

Поскольку нужна хоть какая-то информация об id пользователя, по которому будет строиться граф, нам пригодиться users.get. Он принимает как один id, так и несколько, список полей, информация из которых нам необходима, а также падеж, в котором будет склоняться фамилия и имя. Мой метод base_info() получает список id и возвращает информацию о пользователе с фотографией.

def base_info(self, ids):
«»»read https://vk.com/dev/users.get»»»
r = requests.get(self.request_url(‘users.get’, ‘user_ids=%sUser deactivated»)
return r

Это может быть важно для тех, кто захочет отправлять в него id из friends.getMutual, таким образом произведя на свет огромное число запросов. Об этом позже.

Теперь нам надо получить информацию о друзьях пользователя, в чем нам и поможет метод friends.get. Из всех его параметров, перечисленных в документации, используем user_id, который находится в нашем setting.py и fields. Дополнительными полями будут id друзей, их имена, фамилии и фотографии. Ведь хочется, чтобы в узлах были миниатюры их фотографий.

def friends(self, id):
«»»
read https://vk.com/dev/friends.get
Принимает идентификатор пользователя
«»»
r = requests.get(self.request_url(‘friends.get’,
‘user_id=%s»»
read https://vk.com/dev/friends.getMutual and read https://vk.com/dev/execute
Возвращает в словаре кортежи с инфой о цели и списком общих друзей с инфой
«»»
def parts(lst, n=25):
«»» разбиваем список на части — по 25 в каждой «»»
return [lst[i:i + n] for i in iter(range(0, len(lst), n))]

result = []
for i in parts(list(self.all_friends.keys())):
# Формируем code (параметр execute)
code = ‘return for id in i:
code = ‘%s%s’ % (code, ‘»%s»: API.friends.getMutual(),’ % (id,
self.my_id, id))
code = ‘%s%s’ % (code, ‘>;’)

for key, val in requests.get(self.request_url(‘execute’, ‘code=%s’ % code)).json()[‘response’].items():
if int(key) in list(self.all_friends.keys()):
# берем инфу из уже полного списка
result.append((self.all_friends[int(key)], [self.all_friends[int(i)] for i in val] if val else None))

Итак, если хочется посмотреть свой список друзей и общих с ними друзей, запускаем:

Визуализация графа

Выбор пал на d3, а именно на Curved Links. Для этого надо сгенерировать json, который будет примерно такого содержания:

Немного видоизменяя index.html, узлами становятся фотографии друзей.

Если хочется сразу визуализировать граф:

В папке web появится файл miserables.json. Не забываем открывать index.html в Mozilla FireFox или используем python -m http.server 8000 и открываем в Chrome.

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

Так выглядит граф дружеских связей одного из моих друзей. Связи — это все.

Конечно, мне было интересно, у кого работает быстрее.

В статье, которая меня вдохновила, написано:

На моих 333 друзьях это заняло 119 секунд.

На момент написания этой статьи, у Himura в ВКонтакте был 321 друг. У меня это заняло 9 секунд (работа всей программы, а не одного friends.getMutual).

В заключение

Всю необходимую информацию об использованных методах можно найти в щедро написанной документации ВКонтакте, однако мной была обнаружена пара ошибок: не была описана ошибка с кодом 15 (‘error_msg’: ‘Access denied: user deactivated’, ‘error_code’: 15), догадаться можно, что она значит, и uid вместо user_id в документации к методу friends.get. Спустя 2 дня:

Как говорилось вначале, проект можно найти на GitHub, буду рад, если он понравится ещё кому-то и я получу много вкусных пулл реквестов…

Источник: dml.compkaluga.ru

Рейтинг
( Пока оценок нет )
Загрузка ...