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

Главная » ВКонтакте

Кто такие друзья в ВК? Как поставить «есть друг»? Сколько можно добавить друзей? Кто такие общие друзья на vk.com? Ответы на эти и другие вопросы вы найдете в данной статье.

Твитнуть

Не надо никому лишний раз говорить про то, что одним из самых популярных ресурсов в нашей, а в также в некоторых других странах, является сайт ВКонтакте. Друзья, коллеги по работе, мои одноклассники в школе, родственники и даже родители — всех этих людей иногда можно быстро отыскать среди пользователей, да и лучшие друзья в Контакте зачастую представляют собой тех же самых людей, с которыми вы и так общаетесь каждый день. Собственно, «Мои друзья ВКонтакте» — это просто список тех людей, которых вы добавили в друзья, а они вас.

Чтобы просмотреть друзей ВКонтакте перейдите в пункт меню «Мои друзья» (либо по ссылкам https://vk.com/friends или просто vk.com/friends), который находится прямо под логотипом социальной сети в левой верхней части экрана.

Необходимый пункт меню

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

Так выглядят приглашения дружить

А вот и внешний вид заявки в друзья, которая придет к вам, как только кто-то отправит запрос на добавление:

Заявка на добавление

Нажав на строчку «Мои друзья» (либо перейдя по ссылке https://vk.com/friends, или старый адрес — https://vkontakte.ru/friends.php) вы тут же увидите список всех друзей, хотя тут есть и варианты:

Весь список и список тех, кто онлайн

Например, пункт «Друзья онлайн» (либо https://vk.com/friends?section=online) покажет только то, какие друзья онлайн в ВКонтакте на данный момент времени. Вкладка «Заявки в друзья» (либо https://vk.com/friends?section=requests), соответственно, отображает информацию о тех, кто хочет добавить вас.

Вот так будет выглядеть список тех, с кем вы дружите, на самом сайте:

Список ваших приятелей

Если нажать на вкладку «Друзья онлайн», как показано выше, то высветится список только тех, кто в данный момент находится на сайте:

Список тех, кто онлайн

Как видите, под именем и фамилией отображается значок «Online», причем видно, с комьютера ли человек в сети, либо использует телефон или планшет (на примере все пользователи зашли с мобильного устройства).

Вкладка «Заявки в друзья» покажет вам список тех, кто подписан на ваши обновления. Также это могут быть те люди, которых вы в свое время либо удалили из друзей, либо не ответили согласием на запрос добавления:

Заявки на дружбу

Рассмотрим возможность «Пригласить друга»: здесь вы можете отправить приглашение 4 людям, для которых процесс регистрации будет упрощен до максимума. На скриншоте представлена вся необходимая информация:

Страница приглашения друга

m_friends

Когда еще не действовали Gamma-излучения, а заводы ждали своего часа, чтобы трансформироваться в проекты Нобель, Beta или Треугольник, m_division просто собирали своих друзей, дав имя этой серии событий — m_friends Показать полностью…
Возвращаемся к этой традиции в уютном особняке 18 века

На m_friends едут новые и старые друзья, ожидаем в гости резидента голландского лейбла Delsin и RBMA, а с недавнего времени официального резидента m_division — Unbroken Dub, из Москвы приедет дуэт Interchain с лайв-выступлением, в лице Андрей Lee, также известного, как Obgon, и участника группы ГШ / Glintshake — Евгения Горбунова. Yuka — желанный гость в легендарном берлинском клубе Tresor, на эфирах Boiler Room в Берлине или Dommune в Токио, а теперь она и культовый петербургский диджей Lena Popova стали нашими официальными резидентами и мы с большим удовольствием принимаем их в свою семью. Ждём и нашего старого московского друга, истинного ветерана хаус и техно-сцены России — Slava Finist. Ну и по традиции не обойдется без мощных сетов от резидентов — Ivan Logos и Kobba. Возможны сюрпризы и дополнения.

Наше поистине семейное событие пройдет на 2 танцполах в антураже дворцовой эпохи, в виде бонуса мы имеем балкон с которого открывается впечатляющий вид на Михайловский замок и Фонтанку. До пятницы.

Unbroken Dub (Delsin, m_division) Yuka (Fullpanda, m_division) Interchain LIVE (PG Tune) Lena Popova (m_division) Ivan Logos (m_division) Квантовый Оракул Kobba (m_division) Slava Finist Tennisist Blain Slon

Enter: 500 / m_cards 300 Start: 29.09 / 23:59 Facecontrol

  • Все записи
  • Новости организаторов
  • Поиск
m_friends запись закреплена

Lewis Fautzi — редкий пример португальца, добившегося на техно-сцене международного признания в кратчайшие сроки. Оттачивать скилл Льюис начинал у себя на родине, регулярно выступая в клубе Gare Porto, считающимся главным андеграундным спотом в Порту. Показать полностью… После пары горячо встреченных релизов на довольно скромных Monocline и Eminor Records подтянулась серьезная артиллерия. Lewis получил протекторат признанных авторитетов жанра: его треки стал регулярно включать в сеты Jeff Mills; а его дебютный альбом «The Gare Album», названный в честь той самой площадки, где молодой португалец начинал свою карьеру, вышел на шотландском Soma Quality Recordings — лейбле с большой историей, которым руководят Dave Clarke и Slam, и, который ответственен за первый успех французов Daft Punk.

Регулярно записывая новые работы для Soma Quality, Fautzi стал центральным артистом в системе британской платформы, которая совсем не прочь, чтобы талантливый продюсер проявлял себя в других местах. Линейка разноформатных пластинок для Pole Recordings и Warm Up Recordings (обоими управляет Oscar Mulero), EP на импринте Ellen Allien BPitch Control уверенно следует выбранному курсу: плотный, наэлектрифицированный техно-саунд, сменяется спокойными интерлюдиями, предвещающими новый всплеск энергии. Начиная с 2013 года, Fautzi управляет собственным лейблом Faut Section, где вышел его последний лонгплей «Insanity Department».

Билеты в ограниченном количестве, в продаже 4 релиз билетов: https://www.gammafestival.ru/delta

m_friends запись закреплена

О безглавых всадниках, встречаемых путниками на пустынных ночных проселках, сложено немало преданий. Но лишь один человек смог воплотить призрака гессенского кавалериста из рассказа Вашингтона Ирвинга в модус операнди, который сулит бессонные часы на танцполах. Показать полностью… Сказки закончились, Headless Horseman — альтер-эго немецкого продюсера Уилльяма Джей Янгмана. Начиная с середины 90-х годов Янгман последовательно выстраивал свою музыкальную историю под псевдонимом Bill Youngman: техно, брейкс и IDM релизы можно без труда найти в каталогах Tresor, Killekill, Scandinavia, Serotonin и многих других лейблов.

Сегодня, шумное, ритмичное индастриал-техно, вдохновленное реальным опытом и вымыслами, которые рождает сознание Headless Horseman, стало притчей во языцех. Пластинки выходят на собственном лейбле Headless Horseman, иногда делая исключения импринту Tommy Four Seven — 47, а слава образцовых импровизационных лайв-сетов обгоняет даже перенасыщенный гастрольный график продюсера. На Дельте Headless Horseman представит один из них — только железо и непредсказуемый поток звука.

m_friends запись закреплена

Эти музыканты определенно являются опорами шведского техно и давно застолбили за собой место в первом эшелоне мировой техно-сцены. Впервые в России и второй раз в мире музыканты представят свой новый совместный лайв. Показать полностью…

Anthony Linell aka Abdulla Rashim точно не нуждается в представлении. Достаточно сказать, что он и есть основатель того самого Northern Electronics и резидент Prologue и Semantica. Его техно-музыка ассоциируется с глубокими погружениями в самые скрытые уголки сознания, то самое техно, что звучит тонко и элегантно.

Acronym впервые появился на лейбле Northern Electronics, сразу с двумя отличными альбомами, высоко оцененных музыкальными критиками, затем было множество релизов, часть из которых вышли на культовом лейбле Tresor и испанском Semantica.

Соблюдая таинственность, присущую истинной техно-сцене — оба не любят давать интервью, не любят публичности и слова в принципе, предоставляя первостепенную роль музыке, а не личности.

m_friends запись закреплена

5 и 6 октября, Санкт-Петербург, творческое объединение m_division, ответственное за фестиваль GAMMA и сотни ночей наполненных музыкой, искусством, свободой самовыражения и эмоциями отметит своё 10-летие масштабным событием в фестивальном формате.

Для столь важного ивента выбрана лучшая из возможных локаций — Завод им. Степана Разина, который благодаря Гамме уже стал значимой точкой на мировой карте фестивалей. Показать полностью…

m_division X years разделен на 2 части main event (5 октября) и afterparty (6 октября), для которых в двух зданиях завода будут созданы 4 сцены, включая впечатляющий двухуровневый gamma_stage. Музыкальный формат сформирован той музыкой, что влияла и создавала вкус m_family все эти годы. В лайн-апе более 30 артистов из России, Италии, США, Германии, Швеции и Мексики:

Anthony Linell aka Abdulla Rashim & Acronym [live] SE Belief Defect [live] US Boston 168 [live] IT Drumcell [live] US Luis Flores MX Terence Fixmer [live] DE Acronym [live] SE PRCDRL live [DE] Lena Popova Ivan Logos Exponent Unbalance Abelle Sariim Cultkitchen Regulaar Eostra Slava Finist Alex Glass Eye Que Naya Blain Zaletny Maksim Panfilov Oira and more TBA..

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

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

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

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

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

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

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

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

Для этого сформируем url, как показано ниже: https://oauth.vk.com/authorize?client_id=IDприложения&scope=friends,offline&redirect_uri=https://oauth.vk.com/blank.html&display=page&v=5.21&response_type=token Цитируя vk.com/dev/auth_mobile:

APP_ID – идентификатор Вашего приложения; PERMISSIONS – запрашиваемые права доступа приложения; DISPLAY – внешний вид окна авторизации, поддерживаются: page, popup и mobile. REDIRECT_URI – адрес, на который будет передан access_token. API_VERSION – версия API, которую Вы используете.

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

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

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

Получение access_token

После авторизации приложения клиент будет перенаправлен на REDIRECT_URI. Нужная нам информация будет заключена в ссылке. https://oauth.vk.com/blank.html#access_token=ACCESS_TOKEN&expires_in=0&user_id=USER_ID Редактируем файл 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=%s&fields=photo’ % (‘,’.join(map(str, ids))))).json() if ‘error’ in r.keys(): raise VkException(‘Error message: %s. Error code: %s’ % (r[‘error’][‘error_msg’], r[‘error’][‘error_code’])) r = r[‘response’] # Проверяем, если id из settings.py не деактивирован if ‘deactivated’ in r[0].keys(): raise VkException(«User 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&fields=uid,first_name,last_name,photo’ % id)).json()[‘response’] #self.count_friends = r[‘count’] return {item[‘id’]: item for item in r[‘items’]} Далее наступает самое интересное. Список id общих друзей между двумя пользователями возвращает метод
friends.getMutual
. Это хорошо, потому что мы получаем только id, а более расширенная информация у нас уже есть, благодаря
friends.get
. Но никто не запрещает сделать вам лишнюю сотню-другую запросов, используя
users.get
. Схемы расположены чуть-чуть пониже. Теперь определимся, как будем использовать
friends.getMutual
. Если у пользователя N-друзей, то надо сделать N-запросов, чтобы по каждому другу мы получили список общих друзей. К тому же нам надо будет делать задержки, чтобы у нас было допустимое количество запросов в секунду. Предположим, что у сканируемого нами id есть 25 друзей.

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

Выбор пал на , а именно на Curved Links. Для этого надо сгенерировать json
, который будет примерно такого содержания: { «nodes»: [ {«name»:»Myriel»,»group»:1, «photo»: «path»}, {«name»:»Napoleon»,»group»:1, «photo»: «path»}, {«name»:»Mlle.Baptistine»,»group»:1, «photo»: «path»} ], «links»:[ {«source»:1,»target»:0,»value»:1}, {«source»:2,»target»:0,»value»:8} ] } Немного видоизменяя
index.html
, узлами становятся фотографии друзей.

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

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

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

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

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

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

В заключение

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

UPD (27.05.2014):

Как мне подсказал WTFRU7, я добавил возможность использования хранимых процедур. Для этого нужно перейти по ссылке. Создаем хранимую процедуру
getMutual
. Копируем содержимое
execute_getMutual.js
в форму и сохраняем. Не забываем скачать более новую версию. Финальный вид нашей схемы будет таким:

Мобильная версия Вконтакте

p, blockquote 6,0,0,0,0 —>

Перейдя по вышеописанной ссылке, Вы попадёте на главную страницу мобильной версии соц. сети.

p, blockquote 7,1,0,0,0 —>

p, blockquote 8,0,0,0,0 —>

  • Обратите внимание на домен, он должен быть именно m.vk.com (мошенники могут создать дизайн сильно похожий на ВК, но с другим доменом);

p, blockquote 9,0,0,0,0 —>

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

p, blockquote 10,0,0,0,0 —>

Вопросы ВКонтакте для друзей

Скорее всего, новые пользователи даже не слышали про такую возможность VK. Друзья раньше (да и другие пользователи, кстати, тоже) могли оставлять свои вопросы анонимно, но теперь это уже не актуально, потому как есть другие ресурсы, где такая возможность реализована более полно и удобно.

Вопросы про друзей ВК раньше выглядели примерно вот так:

Вопросы людям ВКонтакте

Теперь такой возможности больше нет, но появилась альтерантива в виде ask.fm и других подобных сайтов. Как бы там ни было, только вам остается решать, что написать другу из https://vk.com/friends.php, причем сделать это так, чтобы остаться анонимным.

Помимо всего прочего, вы можете задать свои вопросы в разделе «Помощь», где на них ответят вам сами сотрудники сайта, но только надо будет какое-то время подождать:

Раздел «Помощь»

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

Варианты вопросов

Мобильная версия в ВК

Если у Вас медленный интернет или ПК со слабыми характеристиками, то Вы можете вбить адрес m.vk.com в адресную строку на любом браузере.

p, blockquote 11,0,0,1,0 —>

Таким образом Вы сможете осуществить вход на мобильную версию ВК через компьютер.

p, blockquote 12,0,0,0,0 —>

p, blockquote 13,0,0,0,0 —>

  • Практические все функции будут стабильно работать;

Раз уж Вы ещё здесь, предлагаю Вам узнать секреты в ВК 2022. Новые хитрости, о которых не знают Ваши друзья! Только у нас! Много нового и интересного!

Рейтинг
( 2 оценки, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]