Skip to content

Скрипт для поиска цепочки общих друзей между двумя пользователями ВКонтакте.

License

Notifications You must be signed in to change notification settings

eddir/VKFindMutualFriends

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 

Repository files navigation

Задача

Найти общих друзей между двумя профилями. Друзья могут быть общими как в первом поколении (прямые друзья), так и во втором, третьем и так далее.

Дано

  • Первый профиль (ссылка) - source.
  • Второй профиль (ссылка) - target.

Найти

Ближайшее множество профилей, которые связывают двух данных по списку друзей.

Решение

  1. Проверить введённые данные.
  2. Получить индентификаторы пользователей.
  3. Получить список друзей source.
  4. Если нет друзей, то вывести ошибку, иначе следующий шаг.
  5. Получить список друзей target.
  6. Если нет друзей, то вывести ошибку, иначе следующий шаг.
  7. Проверить есть ли source в друзьях target. Если есть, то шаг 10. Иначе шаг 8.
  8. Перебрать массив друзей target, где каждый друг считать за target.
  9. Перейти к шагу 5 (цикл).
  10. Вывести цепочку source -> друг 1 -> друг 2 -> друг N -> target.
  11. Конец.

Ответ

Строка со списком имён пользователей, которые связывают двух данных.

Установка

  1. Склонировать репозиторий или скачать файл vkFindMutualFriends.php в рабочую папку.
  2. Получить сервисный ключ доступа на сайте https://vk.com/apps?act=manage в настройках созданного вами ранее приложения. Можно использовать токен от вашей странице для получения данных в приватных страницах.
  3. Задать ключ в скрипте в качестве константы SERVICE_KEY.
  4. По желанию поменять значения других констант.
  5. Убедиться, что у скрипта есть право на создание файлов по заданному пути LOG_FILE.

Запуск

Способ 1

Из консоли командой php vkFindMutualFriends.php source target , где source и target ссылки на профили двух пользователей ВКонтакте.

Способ 2

С помощью веб-сервера перейти по ссылке %ваш_сайт%/vkFindMutualFriends.php?sid=%sid&tid=%tid , где %sid и %tid нужные ссылки на профили. Вместо ссылок можно указывать индентификаторы с приставкой id или без.

Плюсы

  • Лёгкость в использовании
  • Простой алгоритм

Минусы

  • Долгое время выполнения из-за частотных ограничений VKAPI
  • Требует много ресурсов и времени при проверки глубиной от 3 и более

Комментарий

Данный скрипт был написан ради тренировки навыков программирования и не является окончательным продуктом. Идея была зарождена спонтанно и реализована в учебных целях за короткое время "на коленках". Однако решил выложить в публичный доступ в надежде на то, что алгоритм будет полезен новычкам при начальном этапе работы с VK API. Все предложения и отзывы можете оставлять в issues.

В будущем

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

About

Скрипт для поиска цепочки общих друзей между двумя пользователями ВКонтакте.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages