<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://digida.mgpu.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MukhanovaAI</id>
	<title>Поле цифровой дидактики - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="http://digida.mgpu.ru/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MukhanovaAI"/>
	<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/MukhanovaAI"/>
	<updated>2026-05-20T22:43:55Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.44.0</generator>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:Patarakin&amp;diff=45617</id>
		<title>Обсуждение участника:Patarakin</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:Patarakin&amp;diff=45617"/>
		<updated>2026-03-27T13:59:12Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: /* Исправление АДЭУ-221 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== teachers_flow_web ==&lt;br /&gt;
https://digida.mgpu.ru/index.php/Обсуждение:Заглавная_страница#Как_я_взаимодействию_с_ассистентом_искусственного_интеллекта_Перплексити&lt;br /&gt;
&lt;br /&gt;
==Тезаурус 4== &lt;br /&gt;
&lt;br /&gt;
Да, хорошо. Положите пожалуйста. Потому что моя основная проблема, что у меня VOSviewer не работает же и я не могла эти данные получить в таком виде, как вы их прислали. &lt;br /&gt;
Но у меня почти получилось что-то похожее! Обходными путями странными) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Тезаурус 3==&lt;br /&gt;
&lt;br /&gt;
Хорошо, я остановлюсь, во избежание апокалипсиса) &lt;br /&gt;
Но мне казалось, что все не так плохо, за исключением того, что в ручную просматривать фамилии в текстовом файле сложно. Попробовала поговорить с ЖПТ, он написал код для R. Но дальше уже я не сильна, какая-то каша началась.&lt;br /&gt;
&lt;br /&gt;
Я научилась в Экселе сделать функцию &amp;quot;Найти&amp;quot; и он выдает все ячейки с таким ФИО, там есть кнопка &amp;quot;Заменить&amp;quot;. С ней еще не поняла как работать. И есть ли смысл вообще так делать.&lt;br /&gt;
&lt;br /&gt;
== Тезаурус 2== &lt;br /&gt;
Я сохранила из экселя только столбец с авторами, он нормально открылся на маке потом, с этим разобралась. Сейчас основная проблема это понять какой логикой заменять? &lt;br /&gt;
Потому что я вижу автора одного, например. Он есть как самостоятельный автор, есть в соавторстве. И непонятно как с этим соавторством быть. Объединять ли или нет, потому что с одним автором есть 2-3 статьи в соавторстве с разными людьми. &lt;br /&gt;
Это еще полпроблемы. Проблема если в одном соавторстве на русском, а в другом на английском?&lt;br /&gt;
На 59 строк обработала, приступаю на 270. &lt;br /&gt;
Но 900 не факт, что осилю физически и эмоционально. &lt;br /&gt;
&lt;br /&gt;
Я сейчас делаю текстовый документ по каждому универу, в котором отдельных &amp;quot;Нормальных&amp;quot; авторов удаляю, а повторки оставляю и группирую, чтобы вам завтра показать. &lt;br /&gt;
&lt;br /&gt;
== Тезаурус== &lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич! &lt;br /&gt;
&lt;br /&gt;
Начала разбираться с тезаурусом, возник ряд проблем: &lt;br /&gt;
Если в датасете есть один автор с точками, другой без точек - мы их меняем. &lt;br /&gt;
1. А если есть один автор, но он без точек в разных местах по одному - как быть? &lt;br /&gt;
2. Если автор в соавторстве пишет, и в одном месте он с точками, а в другом - без точек. Что делаем в этом случае? &lt;br /&gt;
&lt;br /&gt;
Помогите пожалуйста) Айжан --[[Участник:Айжан Ужинкина]] ([[Обсуждение участника:Айжан Ужинкина|обсуждение]])&lt;br /&gt;
&lt;br /&gt;
== Просьба от Антюховой Эльзы ==&lt;br /&gt;
&lt;br /&gt;
Евгений Дмитриевич, посмотрите, пожалуйста, почему я не могу добавить приложения, разработанные на языке программирования Snap?&lt;br /&gt;
&lt;br /&gt;
== Если нужно задать ==&lt;br /&gt;
&lt;br /&gt;
Примерный вопрос ... --[[Участник:Patarakin|Patarakin]] ([[Обсуждение участника:Patarakin|обсуждение]]) 17:16, 25 ноября 2025 (MSK)&lt;br /&gt;
&lt;br /&gt;
Получилось добавить Dataset Lens как таблицу, сделала заголовки. Посмотрите, пожалуйста, и отметите в ЛМС это задание, если всё нормально. (Татьяна Астафьева) --[[Участник:Татьяна Астафьева|Татьяна Астафьева]] ([[Обсуждение участника:Татьяна Астафьева|обсуждение]]) 20:30, 25 ноября 2025 (MSK)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Добрый вечер, Евгений Дмитриевич, посмотрите, пожалуйста, страничку и отметьте в LMS сделанные мной задания --[[Участник:Дементьева Мария Владимировна|Дементьева Мария]] ([[Обсуждение участника:Дементьева Мария Владимировна|обсуждение]]) 16:08, 5 декабря 2025 (MSK)&lt;br /&gt;
&lt;br /&gt;
Евгений Дмитриевич, проверьте, пожалуйста, выполненные задания на моей странице и проставьте баллы в LMS --[[Участник:Ширкина Д|Ширкина Д]] ([[Обсуждение участника:Ширкина Д|обсуждение]]) 10:57, 6 декабря 2025 (MSK)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич, посмотрите, пожалуйста, задания и отметьте, если все хорошо, в LMS, прошу прощения за скриншоты с телефона, не могу зайти на сайты через браузер ПК [[Участник: Tatiana Khaidarova]] ([[Обсуждение участника: Tatiana Khaidarova|обсуждение]]) 23:43, 6 декабря 2025 (MSK)&lt;br /&gt;
&lt;br /&gt;
Добрый вечер, посмотрите, пожалуйста, страницу и отметьте в LMS (Тюрикова Арина), если всё хорошо --[[Участник:Tyurikovaaa155|Tyurikovaaa155]] ([[Обсуждение участника:Tyurikovaaa155|обсуждение]])&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич! Посмотрите, пожалуйста, страницу (Семина Мария)&lt;br /&gt;
[[Участник:Мария Семина|Мария Семина]] ([[Участник:Мария Семина|обсуждение]])&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич, ссылки в LMS проставила, посмотрите, пожалуйста [[Участник: Tatiana Khaidarova]] ([[Обсуждение участника: Tatiana Khaidarova|обсуждение]]) 15:39, 10 декабря 2025 (MSK)&lt;br /&gt;
&lt;br /&gt;
Добрый вечер, Евгений Дмитриевич, посмотрите, пожалуйста, страничку и отметьте в LMS сделанные мной задания (Волынчикова Анна)&lt;br /&gt;
&lt;br /&gt;
Добрый вечер, посмотрите, пожалуйста, страницу и отметьте в LMS (Дмитренко Надежда), если всё хорошо и нужно ли что-то подправить --[[Участник:DmitrenkoNP|DmitrenkoNP]] ([[Обсуждение участника:DmitrenkoNP|обсуждение]])&lt;br /&gt;
&lt;br /&gt;
Добрый вечер. Выполнил задания. Просьба проверить и отметить в LMS. [[Участник:InasovAA]] (Инасов Артем)&lt;br /&gt;
&lt;br /&gt;
Добрый вечер. Выполнила задания Евгений Дмитриевич. посмотрите, пожалуйста, страничку, проверить и отметить в LMS. [[Участник:Карина]] (Мергалиева Карина)&lt;br /&gt;
&lt;br /&gt;
Сделал NetsBlox. [[Участник:Вольдемар]] (Шкабара Владимир)&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич. Сделал NetsBlox, прошу проверить. [[Участник:DzhamalkhanovRV]]&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич, посмотрите, пожалуйста, страничку и отметьте в LMS сделанные мной задания. (Беляева Мария) [[Участник:БеляеваМД]]&lt;br /&gt;
&lt;br /&gt;
== Основы моделирования - результаты к зачету ==&lt;br /&gt;
&lt;br /&gt;
И здесь - пришел, указал, что сделал, оставил подпись --[[Участник:Patarakin|Patarakin]] ([[Обсуждение участника:Patarakin|обсуждение]]) 09:20, 26 декабря 2025 (MSK)&lt;br /&gt;
&lt;br /&gt;
== Проверка работ в LMS ==&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич!&lt;br /&gt;
Добавил ссылки на выполненные работы в LMS.&lt;br /&gt;
Просьба проверить. и проставить оценку.&lt;br /&gt;
&lt;br /&gt;
== Информация от Антюховой Эльзы ==&lt;br /&gt;
&lt;br /&gt;
Здравствуйте, Евгений Дмитриевич! &lt;br /&gt;
Хочу сообщить о том, что я внесла необходимые правки в свою выпускную квалификационную работу. Буду очень признательна, если Вы сможете уделить время и посмотреть ее. Заранее спасибо!&lt;br /&gt;
&lt;br /&gt;
== Проверка статьи &amp;quot;Репрезентация мотивов самостоятельной учебной работы в личностных нарративах студентов&amp;quot; ==&lt;br /&gt;
&lt;br /&gt;
Евгений Дмитриевич, добрый день! Могли бы Вы проверить мою работу? Что нужно скорректировать/добавить?&lt;br /&gt;
&lt;br /&gt;
== Репрезентация мотивов самостоятельной учебной работы в личностных нарративах студентов ==&lt;br /&gt;
&lt;br /&gt;
Евгений Дмитриевич, я добавила категорию [[:Категория:Психо-лингвистическое исследование]] в конце текста статьи, но на странице моя работа не появилась&lt;br /&gt;
Подскажите, что нужно поправить сейчас?&lt;br /&gt;
&lt;br /&gt;
== Исправление АДЭУ-221 ==&lt;br /&gt;
&lt;br /&gt;
 Арлинская поправила [[Аналитика_профиля_ВК#🗂_Структура_проекта|Работа_Арлинская]]&lt;br /&gt;
 Муханова Анна (добавила интерактивную карту на страничку) [[Карта друзей|Муханова_карта_друзей]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45601</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45601"/>
		<updated>2026-03-27T07:39:09Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 15px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы [[API]] и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; [[Python]], [[JavaScript]], [[HTML]]/[[CSS]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки [[Python]]:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; [[VK API]], OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; [[GitHub]] Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Диаграмма работы приложения «Карта друзей»&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#mermaid: flowchart TB&lt;br /&gt;
    A[Начало] --&amp;gt; B(Получение токена VK API)&lt;br /&gt;
    B --&amp;gt; C(Запрос списка друзей)&lt;br /&gt;
    C --&amp;gt; D{Есть друзья?}&lt;br /&gt;
    D --&amp;gt;|Нет| E[Завершить]&lt;br /&gt;
    D --&amp;gt;|Да| F[Цикл по каждому другу]&lt;br /&gt;
    F --&amp;gt; G(Запрос последних 30 постов)&lt;br /&gt;
    G --&amp;gt; H{Пост содержит geo?}&lt;br /&gt;
    H --&amp;gt;|Нет| I[Следующий пост]&lt;br /&gt;
    I --&amp;gt; G&lt;br /&gt;
    H --&amp;gt;|Да| J(Сохранить координаты, имя, место, ссылку)&lt;br /&gt;
    J --&amp;gt; K{Все посты проверены?}&lt;br /&gt;
    K --&amp;gt;|Нет| I&lt;br /&gt;
    K --&amp;gt;|Да| L{Все друзья обработаны?}&lt;br /&gt;
    L --&amp;gt;|Нет| F&lt;br /&gt;
    L --&amp;gt;|Да| M(Сохранить данные в JSON-файл)&lt;br /&gt;
    M --&amp;gt; N(Открыть HTML-страницу с картой)&lt;br /&gt;
    N --&amp;gt; O(Загрузить JSON в JavaScript)&lt;br /&gt;
    O --&amp;gt; P(Отрисовать маркеры на карте)&lt;br /&gt;
    P --&amp;gt; Q(Клик по маркеру → всплывающее окно)&lt;br /&gt;
    Q --&amp;gt; R[Готово]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Ход работы над проектом ===&lt;br /&gt;
&lt;br /&gt;
==== Этап 1. Создание страницы в вики и выбор темы ====&lt;br /&gt;
Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте. Получила комментарий от преподавателя, исправила категорию на «Работа с API».&lt;br /&gt;
&lt;br /&gt;
==== Этап 2. Изучение VK API и получение токена ====&lt;br /&gt;
Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&lt;br /&gt;
&lt;br /&gt;
==== Этап 3. Установка библиотеки и написание Python-скрипта ====&lt;br /&gt;
Установила библиотеку vk_api через терминал:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
pip install vk_api&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Написала скрипт, который:&lt;br /&gt;
* Авторизуется по токену&lt;br /&gt;
* Получает список друзей&lt;br /&gt;
* Для каждого друга запрашивает последние 30 постов&lt;br /&gt;
* Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&lt;br /&gt;
* Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&lt;br /&gt;
&lt;br /&gt;
[[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
[[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Результат:&#039;&#039;&#039; собрано 18 постов с геометками у 23 обработанных друзей.&lt;br /&gt;
&lt;br /&gt;
==== Этап 4. Сохранение данных в JSON ====&lt;br /&gt;
Скрипт сохранил все найденные геометки в файл &amp;lt;code&amp;gt;friends_geo.json&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Json_data.png|500px|center|thumb|Файл friends_geo.json с координатами]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Структура данных: имя друга, координаты, место, текст поста, ссылка&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Этап 5. Создание интерактивной карты ====&lt;br /&gt;
Создала HTML-страницу &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&lt;br /&gt;
* Загружает данные из JSON-файла&lt;br /&gt;
* Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&lt;br /&gt;
* Добавляет маркеры на карту&lt;br /&gt;
* При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&lt;br /&gt;
&lt;br /&gt;
[[Файл:Map_code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
[[Файл:Map_code2.png|400px|center|thumb|Массив данных для карты]]&lt;br /&gt;
[[Файл:Map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Результат:&#039;&#039;&#039; готовая интерактивная карта с точками всех найденных геометок.&lt;br /&gt;
&lt;br /&gt;
==== Этап 6. Оформление страницы в вики ====&lt;br /&gt;
Добавила на страницу проекта:&lt;br /&gt;
* Блок с результатами&lt;br /&gt;
* Скриншоты всех этапов&lt;br /&gt;
* Структуру проекта&lt;br /&gt;
* Пример кода на Python&lt;br /&gt;
* Выводы и планы по развитию&lt;br /&gt;
&lt;br /&gt;
=== Итог проекта ===&lt;br /&gt;
&lt;br /&gt;
Создан работающий инструмент для сбора и визуализации геоданных из ВКонтакте&lt;br /&gt;
&lt;br /&gt;
23 друга обработано | 18 геометок собрано | 14 городов на карте&lt;br /&gt;
&lt;br /&gt;
Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Аналитический дашборд===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dashboard preview.png|700px|center|thumb|Аналитический дашборд «Карта друзей»]]&lt;br /&gt;
&lt;br /&gt;
На основе собранных данных был разработан интерактивный дашборд, который включает:&lt;br /&gt;
&lt;br /&gt;
* Интерактивную карту с маркерами всех найденных мест&lt;br /&gt;
* Блок статистики (количество друзей, геометок, городов, самое популярное место)&lt;br /&gt;
* Гистограмму распределения отметок по городам&lt;br /&gt;
* Круговую диаграмму топ-10 мест по популярности&lt;br /&gt;
* Фильтр по друзьям для детального анализа&lt;br /&gt;
* Список всех мест со ссылками на посты&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;▸ Показать код дашборда (dashboard.html)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;html lang=&amp;quot;ru&amp;quot;&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;head&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;title&amp;amp;gt;Дашборд: Карта друзей&amp;amp;lt;/title&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.css&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script src=&amp;quot;https://cdn.jsdelivr.net/npm/chart.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;style&amp;amp;gt;&lt;br /&gt;
        * { margin: 0; padding: 0; box-sizing: border-box; }&lt;br /&gt;
        body { font-family: &#039;Segoe UI&#039;, Tahoma, Geneva, Verdana, sans-serif; background: #f5f7fa; padding: 20px; }&lt;br /&gt;
        .dashboard { max-width: 1400px; margin: 0 auto; }&lt;br /&gt;
        h1 { color: #2c3e50; margin-bottom: 20px; border-bottom: 3px solid #3498db; padding-bottom: 10px; }&lt;br /&gt;
        .row { display: flex; gap: 20px; margin-bottom: 20px; flex-wrap: wrap; }&lt;br /&gt;
        .card { background: white; border-radius: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); padding: 20px; flex: 1; min-width: 250px; }&lt;br /&gt;
        .map-container { flex: 2; min-width: 500px; }&lt;br /&gt;
        .stats { display: flex; gap: 15px; flex-wrap: wrap; margin-bottom: 20px; }&lt;br /&gt;
        .stat-box { background: white; border-radius: 12px; padding: 20px; text-align: center; flex: 1; min-width: 150px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }&lt;br /&gt;
        .stat-number { font-size: 32px; font-weight: bold; color: #3498db; }&lt;br /&gt;
        .stat-label { color: #7f8c8d; margin-top: 8px; }&lt;br /&gt;
        #map { height: 400px; width: 100%; border-radius: 8px; }&lt;br /&gt;
        canvas { max-height: 300px; }&lt;br /&gt;
        .filter-select { padding: 8px 12px; border-radius: 6px; border: 1px solid #ddd; margin-bottom: 15px; width: 100%; }&lt;br /&gt;
        hr { margin: 15px 0; border: none; border-top: 1px solid #eee; }&lt;br /&gt;
    &amp;amp;lt;/style&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;div class=&amp;quot;dashboard&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;h1&amp;amp;gt;Карта друзей — аналитический дашборд&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;amp;lt;div class=&amp;quot;stats&amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;totalFriends&amp;quot;&amp;amp;gt;0&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;amp;gt;Друзей обработано&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;totalMarkers&amp;quot;&amp;amp;gt;0&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;amp;gt;Геометок найдено&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;totalCities&amp;quot;&amp;amp;gt;0&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;amp;gt;Городов&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;topPlace&amp;quot;&amp;amp;gt;—&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;amp;gt;Самое популярное место&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;amp;lt;div class=&amp;quot;row&amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;card map-container&amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;h3&amp;amp;gt;Карта с отметками&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;div id=&amp;quot;map&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;hr&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;label for=&amp;quot;friendFilter&amp;quot;&amp;amp;gt;Фильтр по другу:&amp;amp;lt;/label&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;select id=&amp;quot;friendFilter&amp;quot; class=&amp;quot;filter-select&amp;quot;&amp;amp;gt;&amp;amp;lt;option value=&amp;quot;all&amp;quot;&amp;amp;gt;Все друзья&amp;amp;lt;/option&amp;amp;gt;&amp;amp;lt;/select&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;card&amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;h3&amp;amp;gt;Города по количеству отметок&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;canvas id=&amp;quot;cityChart&amp;quot;&amp;amp;gt;&amp;amp;lt;/canvas&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;amp;lt;div class=&amp;quot;row&amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;card&amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;h3&amp;amp;gt;Активность по местам&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;canvas id=&amp;quot;placesChart&amp;quot;&amp;amp;gt;&amp;amp;lt;/canvas&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;card&amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;h3&amp;amp;gt;Список найденных мест&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;div id=&amp;quot;placesList&amp;quot; style=&amp;quot;max-height: 300px; overflow-y: auto;&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;script&amp;amp;gt;&lt;br /&gt;
const rawData = [&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Наталья Шевковская&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 4671765,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;54.960033758443 20.47501174861&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Зеленоградск&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Балтика замерзла&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall4671765_1030&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
......&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Татьяна Бондаренко&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 131800785,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;52.227369601217 21.003966668331&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Warszawa Poland&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;довольные и счастливые #BGON ❤️&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall131800785_3508&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
let currentFilter = &amp;quot;all&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const uniqueFriends = [...new Set(rawData.map(d =&amp;gt; d.friend_id))];&lt;br /&gt;
const totalFriends = uniqueFriends.length;&lt;br /&gt;
const totalMarkers = rawData.length;&lt;br /&gt;
&lt;br /&gt;
const cityCount = {};&lt;br /&gt;
const placeCount = {};&lt;br /&gt;
rawData.forEach(d =&amp;gt; {&lt;br /&gt;
    const city = d.place.split(&#039;,&#039;)[0] || d.place;&lt;br /&gt;
    cityCount[city] = (cityCount[city] || 0) + 1;&lt;br /&gt;
    placeCount[d.place] = (placeCount[d.place] || 0) + 1;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
const totalCities = Object.keys(cityCount).length;&lt;br /&gt;
&lt;br /&gt;
let topPlaceName = &amp;quot;—&amp;quot;;&lt;br /&gt;
let topPlaceCount = 0;&lt;br /&gt;
for (const [place, count] of Object.entries(placeCount)) {&lt;br /&gt;
    if (count &amp;gt; topPlaceCount) {&lt;br /&gt;
        topPlaceCount = count;&lt;br /&gt;
        topPlaceName = place;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&#039;totalFriends&#039;).innerText = totalFriends;&lt;br /&gt;
document.getElementById(&#039;totalMarkers&#039;).innerText = totalMarkers;&lt;br /&gt;
document.getElementById(&#039;totalCities&#039;).innerText = totalCities;&lt;br /&gt;
document.getElementById(&#039;topPlace&#039;).innerText = topPlaceName.length &amp;gt; 25 ? topPlaceName.slice(0, 25) + &#039;…&#039; : topPlaceName;&lt;br /&gt;
&lt;br /&gt;
const friendSelect = document.getElementById(&#039;friendFilter&#039;);&lt;br /&gt;
const uniqueNames = [...new Map(rawData.map(d =&amp;gt; [d.friend_id, d.friend_name])).entries()];&lt;br /&gt;
uniqueNames.forEach(([id, name]) =&amp;gt; {&lt;br /&gt;
    const option = document.createElement(&#039;option&#039;);&lt;br /&gt;
    option.value = id;&lt;br /&gt;
    option.textContent = name;&lt;br /&gt;
    friendSelect.appendChild(option);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function getFilteredData() {&lt;br /&gt;
    if (currentFilter === &amp;quot;all&amp;quot;) return rawData;&lt;br /&gt;
    return rawData.filter(d =&amp;gt; d.friend_id == currentFilter);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const cityLabels = Object.keys(cityCount);&lt;br /&gt;
const cityValues = Object.values(cityCount);&lt;br /&gt;
const cityCtx = document.getElementById(&#039;cityChart&#039;).getContext(&#039;2d&#039;);&lt;br /&gt;
let cityChart = new Chart(cityCtx, {&lt;br /&gt;
    type: &#039;bar&#039;,&lt;br /&gt;
    data: { labels: cityLabels, datasets: [{ label: &#039;Количество отметок&#039;, data: cityValues, backgroundColor: &#039;#3498db&#039;, borderRadius: 8 }] },&lt;br /&gt;
    options: { responsive: true, maintainAspectRatio: true, plugins: { legend: { position: &#039;top&#039; } } }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
const sortedPlaces = Object.entries(placeCount).sort((a,b) =&amp;gt; b[1] - a[1]).slice(0, 10);&lt;br /&gt;
const placesLabels = sortedPlaces.map(p =&amp;gt; p[0].length &amp;gt; 20 ? p[0].slice(0, 20) + &#039;…&#039; : p[0]);&lt;br /&gt;
const placesValues = sortedPlaces.map(p =&amp;gt; p[1]);&lt;br /&gt;
const placesCtx = document.getElementById(&#039;placesChart&#039;).getContext(&#039;2d&#039;);&lt;br /&gt;
let placesChart = new Chart(placesCtx, {&lt;br /&gt;
    type: &#039;pie&#039;,&lt;br /&gt;
    data: { labels: placesLabels, datasets: [{ data: placesValues, backgroundColor: [&#039;#3498db&#039;, &#039;#e74c3c&#039;, &#039;#2ecc71&#039;, &#039;#f1c40f&#039;, &#039;#9b59b6&#039;, &#039;#1abc9c&#039;, &#039;#e67e22&#039;, &#039;#34495e&#039;, &#039;#16a085&#039;, &#039;#27ae60&#039;] }] },&lt;br /&gt;
    options: { responsive: true, maintainAspectRatio: true, plugins: { legend: { position: &#039;right&#039;, labels: { boxWidth: 12, font: { size: 10 } } } } }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function updatePlacesList() {&lt;br /&gt;
    const filtered = getFilteredData();&lt;br /&gt;
    const listContainer = document.getElementById(&#039;placesList&#039;);&lt;br /&gt;
    if (filtered.length === 0) { listContainer.innerHTML = &#039;&amp;lt;p&amp;gt;Нет данных&amp;lt;/p&amp;gt;&#039;; return; }&lt;br /&gt;
    let html = &#039;&amp;lt;ul style=&amp;quot;list-style: none; padding: 0;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
    filtered.forEach(d =&amp;gt; {&lt;br /&gt;
        const text = d.post_text ? d.post_text.substring(0, 80) : &#039;&#039;;&lt;br /&gt;
        html += `&amp;lt;li style=&amp;quot;padding: 8px 0; border-bottom: 1px solid #eee;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;${d.place}&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;${d.friend_name} · ${text ? text + &#039;…&#039; : &#039;&#039;}&amp;lt;br&amp;gt;&amp;lt;a href=&amp;quot;${d.post_url}&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;открыть пост&amp;lt;/a&amp;gt;&amp;lt;/small&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
    });&lt;br /&gt;
    html += &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
    listContainer.innerHTML = html;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const map = L.map(&#039;map&#039;).setView([55.76, 37.64], 4);&lt;br /&gt;
L.tileLayer(&#039;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#039;, { attribution: &#039;© OpenStreetMap contributors&#039; }).addTo(map);&lt;br /&gt;
let markersLayer = L.layerGroup().addTo(map);&lt;br /&gt;
&lt;br /&gt;
function updateMap() {&lt;br /&gt;
    markersLayer.clearLayers();&lt;br /&gt;
    const filtered = getFilteredData();&lt;br /&gt;
    const bounds = [];&lt;br /&gt;
    filtered.forEach(item =&amp;gt; {&lt;br /&gt;
        const [lat, lng] = item.coordinates.split(&#039; &#039;);&lt;br /&gt;
        const marker = L.marker([parseFloat(lat), parseFloat(lng)]).addTo(markersLayer);&lt;br /&gt;
        const postText = item.post_text ? item.post_text.substring(0, 100) : &#039;&#039;;&lt;br /&gt;
        marker.bindPopup(`&amp;lt;b&amp;gt;${item.friend_name}&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;i&amp;gt;${item.place}&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;${postText}&amp;lt;br&amp;gt;&amp;lt;a href=&amp;quot;${item.post_url}&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Открыть пост&amp;lt;/a&amp;gt;`);&lt;br /&gt;
        bounds.push([parseFloat(lat), parseFloat(lng)]);&lt;br /&gt;
    });&lt;br /&gt;
    if (bounds.length &amp;gt; 0) map.fitBounds(bounds);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateCharts() {&lt;br /&gt;
    const filtered = getFilteredData();&lt;br /&gt;
    const filteredCityCount = {};&lt;br /&gt;
    const filteredPlaceCount = {};&lt;br /&gt;
    filtered.forEach(d =&amp;gt; {&lt;br /&gt;
        const city = d.place.split(&#039;,&#039;)[0] || d.place;&lt;br /&gt;
        filteredCityCount[city] = (filteredCityCount[city] || 0) + 1;&lt;br /&gt;
        filteredPlaceCount[d.place] = (filteredPlaceCount[d.place] || 0) + 1;&lt;br /&gt;
    });&lt;br /&gt;
    cityChart.data.labels = Object.keys(filteredCityCount);&lt;br /&gt;
    cityChart.data.datasets[0].data = Object.values(filteredCityCount);&lt;br /&gt;
    cityChart.update();&lt;br /&gt;
    const newSortedPlaces = Object.entries(filteredPlaceCount).sort((a,b) =&amp;gt; b[1] - a[1]).slice(0, 10);&lt;br /&gt;
    placesChart.data.labels = newSortedPlaces.map(p =&amp;gt; p[0].length &amp;gt; 20 ? p[0].slice(0,20)+&#039;…&#039; : p[0]);&lt;br /&gt;
    placesChart.data.datasets[0].data = newSortedPlaces.map(p =&amp;gt; p[1]);&lt;br /&gt;
    placesChart.update();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
friendSelect.addEventListener(&#039;change&#039;, (e) =&amp;gt; {&lt;br /&gt;
    currentFilter = e.target.value;&lt;br /&gt;
    updateMap();&lt;br /&gt;
    updatePlacesList();&lt;br /&gt;
    updateCharts();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
updateMap();&lt;br /&gt;
updatePlacesList();&lt;br /&gt;
&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Выводы ===&lt;br /&gt;
&lt;br /&gt;
В ходе работы над проектом я:&lt;br /&gt;
* Научилась работать с VK API — получать токен, делать запросы, обрабатывать ответы.&lt;br /&gt;
* Освоила парсинг JSON-данных и сохранение результатов в файл.&lt;br /&gt;
* Создала интерактивную карту на Leaflet и нанесла на нее реальные геоданные.&lt;br /&gt;
* Поняла, как устроены современные веб-сервисы, которые собирают данные из разных источников.&lt;br /&gt;
* Научилась оформлять проекты в вики и структурировать отчёт.&lt;br /&gt;
&lt;br /&gt;
Проект можно развивать дальше: добавить тепловую карту, сделать анализ популярных мест, подключить Яндекс.Карты с более детальными данными.&lt;br /&gt;
&lt;br /&gt;
===Полный исходный код приложения===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;▸ Показать полный код приложения&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# config.py&lt;br /&gt;
# Токен доступа VK API (получен через standalone-приложение)&lt;br /&gt;
&lt;br /&gt;
TOKEN = &amp;quot;vk1.a.мой_токен_здесь&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# main.py&lt;br /&gt;
import vk_api&lt;br /&gt;
from config import TOKEN&lt;br /&gt;
import json&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
# Авторизация&lt;br /&gt;
vk_session = vk_api.VkApi(token=TOKEN)&lt;br /&gt;
vk = vk_session.get_api()&lt;br /&gt;
&lt;br /&gt;
def get_friends_with_geo():&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Получает список друзей и собирает их посты с геометками&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    print(&amp;quot;Получаю список друзей...&amp;quot;)&lt;br /&gt;
    friends = vk.friends.get(fields=[&#039;first_name&#039;, &#039;last_name&#039;])&lt;br /&gt;
    &lt;br /&gt;
    friends_data = []&lt;br /&gt;
    total_friends = friends[&#039;count&#039;]&lt;br /&gt;
    print(f&amp;quot;Найдено друзей: {total_friends}&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    # Обрабатываем первых 30 друзей&lt;br /&gt;
    for i, friend in enumerate(friends[&#039;items&#039;][:30]):&lt;br /&gt;
        print(f&amp;quot;Обрабатываю друга {i+1}/30: {friend[&#039;first_name&#039;]} {friend[&#039;last_name&#039;]}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        try:&lt;br /&gt;
            # Получаем последние 50 постов друга&lt;br /&gt;
            posts = vk.wall.get(owner_id=friend[&#039;id&#039;], count=50)&lt;br /&gt;
            &lt;br /&gt;
            for post in posts[&#039;items&#039;]:&lt;br /&gt;
                if &#039;geo&#039; in post and post[&#039;geo&#039;]:&lt;br /&gt;
                    geo_data = {&lt;br /&gt;
                        &#039;friend_name&#039;: f&amp;quot;{friend[&#039;first_name&#039;]} {friend[&#039;last_name&#039;]}&amp;quot;,&lt;br /&gt;
                        &#039;friend_id&#039;: friend[&#039;id&#039;],&lt;br /&gt;
                        &#039;coordinates&#039;: post[&#039;geo&#039;][&#039;coordinates&#039;],&lt;br /&gt;
                        &#039;place&#039;: post[&#039;geo&#039;].get(&#039;place&#039;, {}).get(&#039;title&#039;, &#039;Без названия&#039;),&lt;br /&gt;
                        &#039;post_text&#039;: post.get(&#039;text&#039;, &#039;&#039;)[:100],&lt;br /&gt;
                        &#039;post_url&#039;: f&amp;quot;https://vk.com/wall{friend[&#039;id&#039;]}_{post[&#039;id&#039;]}&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                    friends_data.append(geo_data)&lt;br /&gt;
                    print(f&amp;quot;  Найдена геометка: {geo_data[&#039;coordinates&#039;]} - {geo_data[&#039;place&#039;]}&amp;quot;)&lt;br /&gt;
                    &lt;br /&gt;
        except Exception as e:&lt;br /&gt;
            print(f&amp;quot;  Ошибка при обработке: {e}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        time.sleep(0.5)  # пауза, чтобы не спамить API&lt;br /&gt;
    &lt;br /&gt;
    # Сохраняем результат&lt;br /&gt;
    with open(&#039;friends_geo.json&#039;, &#039;w&#039;, encoding=&#039;utf-8&#039;) as f:&lt;br /&gt;
        json.dump(friends_data, f, ensure_ascii=False, indent=4)&lt;br /&gt;
    &lt;br /&gt;
    print(f&amp;quot;\nГотово! Найдено {len(friends_data)} постов с геометками.&amp;quot;)&lt;br /&gt;
    return friends_data&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    get_friends_with_geo()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
# friends_geo.json (пример данных)&lt;br /&gt;
[&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Анна Смирнова&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 123456789,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;55.751244 37.618423&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Красная площадь&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Красота!&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall123456789_123&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Иван Петров&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 987654321,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;55.755814 37.617635&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Парк Горького&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Гуляем с друзьями&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall987654321_456&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
# map.html&lt;br /&gt;
&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;head&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;title&amp;amp;gt;Карта друзей&amp;amp;lt;/title&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.css&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;style&amp;amp;gt;&lt;br /&gt;
        body { margin: 0; padding: 0; }&lt;br /&gt;
        #map { width: 100%; height: 100vh; }&lt;br /&gt;
    &amp;amp;lt;/style&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;div id=&amp;quot;map&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script&amp;amp;gt;&lt;br /&gt;
        const friendsData = [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;friend_name&amp;quot;: &amp;quot;Анна Смирнова&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: &amp;quot;55.751244 37.618423&amp;quot;,&lt;br /&gt;
                &amp;quot;place&amp;quot;: &amp;quot;Красная площадь&amp;quot;,&lt;br /&gt;
                &amp;quot;post_text&amp;quot;: &amp;quot;Красота!&amp;quot;,&lt;br /&gt;
                &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall123456789_123&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;friend_name&amp;quot;: &amp;quot;Иван Петров&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: &amp;quot;55.755814 37.617635&amp;quot;,&lt;br /&gt;
                &amp;quot;place&amp;quot;: &amp;quot;Парк Горького&amp;quot;,&lt;br /&gt;
                &amp;quot;post_text&amp;quot;: &amp;quot;Гуляем с друзьями&amp;quot;,&lt;br /&gt;
                &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall987654321_456&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        const map = L.map(&#039;map&#039;).setView([55.76, 37.64], 10);&lt;br /&gt;
        L.tileLayer(&#039;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#039;, {&lt;br /&gt;
            attribution: &#039;© OpenStreetMap contributors&#039;&lt;br /&gt;
        }).addTo(map);&lt;br /&gt;
&lt;br /&gt;
        friendsData.forEach(item =&amp;gt; {&lt;br /&gt;
            const [lat, lng] = item.coordinates.split(&#039; &#039;);&lt;br /&gt;
            const marker = L.marker([parseFloat(lat), parseFloat(lng)]).addTo(map);&lt;br /&gt;
            marker.bindPopup(`&lt;br /&gt;
                &amp;amp;lt;b&amp;amp;gt;${item.friend_name}&amp;amp;lt;/b&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;i&amp;amp;gt;${item.place}&amp;amp;lt;/i&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                ${item.post_text}&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;a href=&amp;quot;${item.post_url}&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;amp;gt;Открыть пост&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
            `);&lt;br /&gt;
        });&lt;br /&gt;
    &amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# requirements.txt&lt;br /&gt;
vk-api==5.107&lt;br /&gt;
requests==2.31.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Географическая карта с интерактивными метками (создано с помощью семантических страниц) ===&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
[[Category:Карта друзей]]&lt;br /&gt;
|?Coordinate&lt;br /&gt;
|?Friend&lt;br /&gt;
|?PostText&lt;br /&gt;
|format=map&lt;br /&gt;
|height=400&lt;br /&gt;
|width=700&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45595</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45595"/>
		<updated>2026-03-27T07:29:25Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 15px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы [[API]] и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; [[Python]], [[JavaScript]], [[HTML]]/[[CSS]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки [[Python]]:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; [[VK API]], OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; [[GitHub]] Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Диаграмма работы приложения «Карта друзей»&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#mermaid: flowchart TB&lt;br /&gt;
    A[Начало] --&amp;gt; B(Получение токена VK API)&lt;br /&gt;
    B --&amp;gt; C(Запрос списка друзей)&lt;br /&gt;
    C --&amp;gt; D{Есть друзья?}&lt;br /&gt;
    D --&amp;gt;|Нет| E[Завершить]&lt;br /&gt;
    D --&amp;gt;|Да| F[Цикл по каждому другу]&lt;br /&gt;
    F --&amp;gt; G(Запрос последних 30 постов)&lt;br /&gt;
    G --&amp;gt; H{Пост содержит geo?}&lt;br /&gt;
    H --&amp;gt;|Нет| I[Следующий пост]&lt;br /&gt;
    I --&amp;gt; G&lt;br /&gt;
    H --&amp;gt;|Да| J(Сохранить координаты, имя, место, ссылку)&lt;br /&gt;
    J --&amp;gt; K{Все посты проверены?}&lt;br /&gt;
    K --&amp;gt;|Нет| I&lt;br /&gt;
    K --&amp;gt;|Да| L{Все друзья обработаны?}&lt;br /&gt;
    L --&amp;gt;|Нет| F&lt;br /&gt;
    L --&amp;gt;|Да| M(Сохранить данные в JSON-файл)&lt;br /&gt;
    M --&amp;gt; N(Открыть HTML-страницу с картой)&lt;br /&gt;
    N --&amp;gt; O(Загрузить JSON в JavaScript)&lt;br /&gt;
    O --&amp;gt; P(Отрисовать маркеры на карте)&lt;br /&gt;
    P --&amp;gt; Q(Клик по маркеру → всплывающее окно)&lt;br /&gt;
    Q --&amp;gt; R[Готово]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход работы над проектом&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 1. Создание страницы в вики и выбор темы&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 2. Изучение VK API и получение токена&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 3. Установка библиотеки и написание Python-скрипта&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Установила библиотеку vk_api через терминал:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_install.png|500px|center|thumb|Установка библиотеки vk_api]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Написала скрипт, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Авторизуется по токену&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Получает список друзей&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Для каждого друга запрашивает последние 30 постов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
            [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; собрано 18 постов с геометками у 30 обработанных друзей.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 4. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Загружает данные из JSON-файла&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Добавляет маркеры на карту&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    [[Файл:Json data.png|400px|center|thumb|Файл friends_geo.json]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; готовая интерактивная карта с точками всех найденных геометок.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 5. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала файл &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Map code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ИТОГОВЫЙ РЕЗУЛЬТАТ --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #eef2f5; padding: 20px; border-radius: 15px; margin: 30px 0; text-align: center; border-left: 4px solid #3498db;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;Итог проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;font-size: 18px;&amp;quot;&amp;gt;Создан работающий инструмент для сбора и визуализации геоданных из ВКонтакте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;23 друга обработано &amp;amp;nbsp;|&amp;amp;nbsp; 7 геометок собрано &amp;amp;nbsp;|&amp;amp;nbsp; 6 городов на карте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Аналитический дашборд===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dashboard preview.png|700px|center|thumb|Аналитический дашборд «Карта друзей»]]&lt;br /&gt;
&lt;br /&gt;
На основе собранных данных был разработан интерактивный дашборд, который включает:&lt;br /&gt;
&lt;br /&gt;
* Интерактивную карту с маркерами всех найденных мест&lt;br /&gt;
* Блок статистики (количество друзей, геометок, городов, самое популярное место)&lt;br /&gt;
* Гистограмму распределения отметок по городам&lt;br /&gt;
* Круговую диаграмму топ-10 мест по популярности&lt;br /&gt;
* Фильтр по друзьям для детального анализа&lt;br /&gt;
* Список всех мест со ссылками на посты&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;▸ Показать код дашборда (dashboard.html)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;html lang=&amp;quot;ru&amp;quot;&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;head&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;title&amp;amp;gt;Дашборд: Карта друзей&amp;amp;lt;/title&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.css&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script src=&amp;quot;https://cdn.jsdelivr.net/npm/chart.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;style&amp;amp;gt;&lt;br /&gt;
        * { margin: 0; padding: 0; box-sizing: border-box; }&lt;br /&gt;
        body { font-family: &#039;Segoe UI&#039;, Tahoma, Geneva, Verdana, sans-serif; background: #f5f7fa; padding: 20px; }&lt;br /&gt;
        .dashboard { max-width: 1400px; margin: 0 auto; }&lt;br /&gt;
        h1 { color: #2c3e50; margin-bottom: 20px; border-bottom: 3px solid #3498db; padding-bottom: 10px; }&lt;br /&gt;
        .row { display: flex; gap: 20px; margin-bottom: 20px; flex-wrap: wrap; }&lt;br /&gt;
        .card { background: white; border-radius: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); padding: 20px; flex: 1; min-width: 250px; }&lt;br /&gt;
        .map-container { flex: 2; min-width: 500px; }&lt;br /&gt;
        .stats { display: flex; gap: 15px; flex-wrap: wrap; margin-bottom: 20px; }&lt;br /&gt;
        .stat-box { background: white; border-radius: 12px; padding: 20px; text-align: center; flex: 1; min-width: 150px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }&lt;br /&gt;
        .stat-number { font-size: 32px; font-weight: bold; color: #3498db; }&lt;br /&gt;
        .stat-label { color: #7f8c8d; margin-top: 8px; }&lt;br /&gt;
        #map { height: 400px; width: 100%; border-radius: 8px; }&lt;br /&gt;
        canvas { max-height: 300px; }&lt;br /&gt;
        .filter-select { padding: 8px 12px; border-radius: 6px; border: 1px solid #ddd; margin-bottom: 15px; width: 100%; }&lt;br /&gt;
        hr { margin: 15px 0; border: none; border-top: 1px solid #eee; }&lt;br /&gt;
    &amp;amp;lt;/style&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;div class=&amp;quot;dashboard&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;h1&amp;amp;gt;Карта друзей — аналитический дашборд&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;amp;lt;div class=&amp;quot;stats&amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;totalFriends&amp;quot;&amp;amp;gt;0&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;amp;gt;Друзей обработано&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;totalMarkers&amp;quot;&amp;amp;gt;0&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;amp;gt;Геометок найдено&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;totalCities&amp;quot;&amp;amp;gt;0&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;amp;gt;Городов&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;topPlace&amp;quot;&amp;amp;gt;—&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;amp;gt;Самое популярное место&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;amp;lt;div class=&amp;quot;row&amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;card map-container&amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;h3&amp;amp;gt;Карта с отметками&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;div id=&amp;quot;map&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;hr&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;label for=&amp;quot;friendFilter&amp;quot;&amp;amp;gt;Фильтр по другу:&amp;amp;lt;/label&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;select id=&amp;quot;friendFilter&amp;quot; class=&amp;quot;filter-select&amp;quot;&amp;amp;gt;&amp;amp;lt;option value=&amp;quot;all&amp;quot;&amp;amp;gt;Все друзья&amp;amp;lt;/option&amp;amp;gt;&amp;amp;lt;/select&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;card&amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;h3&amp;amp;gt;Города по количеству отметок&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;canvas id=&amp;quot;cityChart&amp;quot;&amp;amp;gt;&amp;amp;lt;/canvas&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;amp;lt;div class=&amp;quot;row&amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;card&amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;h3&amp;amp;gt;Активность по местам&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;canvas id=&amp;quot;placesChart&amp;quot;&amp;amp;gt;&amp;amp;lt;/canvas&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;card&amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;h3&amp;amp;gt;Список найденных мест&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;div id=&amp;quot;placesList&amp;quot; style=&amp;quot;max-height: 300px; overflow-y: auto;&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;script&amp;amp;gt;&lt;br /&gt;
const rawData = [&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Наталья Шевковская&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 4671765,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;54.960033758443 20.47501174861&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Зеленоградск&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Балтика замерзла&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall4671765_1030&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
......&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Татьяна Бондаренко&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 131800785,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;52.227369601217 21.003966668331&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Warszawa Poland&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;довольные и счастливые #BGON ❤️&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall131800785_3508&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
let currentFilter = &amp;quot;all&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const uniqueFriends = [...new Set(rawData.map(d =&amp;gt; d.friend_id))];&lt;br /&gt;
const totalFriends = uniqueFriends.length;&lt;br /&gt;
const totalMarkers = rawData.length;&lt;br /&gt;
&lt;br /&gt;
const cityCount = {};&lt;br /&gt;
const placeCount = {};&lt;br /&gt;
rawData.forEach(d =&amp;gt; {&lt;br /&gt;
    const city = d.place.split(&#039;,&#039;)[0] || d.place;&lt;br /&gt;
    cityCount[city] = (cityCount[city] || 0) + 1;&lt;br /&gt;
    placeCount[d.place] = (placeCount[d.place] || 0) + 1;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
const totalCities = Object.keys(cityCount).length;&lt;br /&gt;
&lt;br /&gt;
let topPlaceName = &amp;quot;—&amp;quot;;&lt;br /&gt;
let topPlaceCount = 0;&lt;br /&gt;
for (const [place, count] of Object.entries(placeCount)) {&lt;br /&gt;
    if (count &amp;gt; topPlaceCount) {&lt;br /&gt;
        topPlaceCount = count;&lt;br /&gt;
        topPlaceName = place;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&#039;totalFriends&#039;).innerText = totalFriends;&lt;br /&gt;
document.getElementById(&#039;totalMarkers&#039;).innerText = totalMarkers;&lt;br /&gt;
document.getElementById(&#039;totalCities&#039;).innerText = totalCities;&lt;br /&gt;
document.getElementById(&#039;topPlace&#039;).innerText = topPlaceName.length &amp;gt; 25 ? topPlaceName.slice(0, 25) + &#039;…&#039; : topPlaceName;&lt;br /&gt;
&lt;br /&gt;
const friendSelect = document.getElementById(&#039;friendFilter&#039;);&lt;br /&gt;
const uniqueNames = [...new Map(rawData.map(d =&amp;gt; [d.friend_id, d.friend_name])).entries()];&lt;br /&gt;
uniqueNames.forEach(([id, name]) =&amp;gt; {&lt;br /&gt;
    const option = document.createElement(&#039;option&#039;);&lt;br /&gt;
    option.value = id;&lt;br /&gt;
    option.textContent = name;&lt;br /&gt;
    friendSelect.appendChild(option);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function getFilteredData() {&lt;br /&gt;
    if (currentFilter === &amp;quot;all&amp;quot;) return rawData;&lt;br /&gt;
    return rawData.filter(d =&amp;gt; d.friend_id == currentFilter);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const cityLabels = Object.keys(cityCount);&lt;br /&gt;
const cityValues = Object.values(cityCount);&lt;br /&gt;
const cityCtx = document.getElementById(&#039;cityChart&#039;).getContext(&#039;2d&#039;);&lt;br /&gt;
let cityChart = new Chart(cityCtx, {&lt;br /&gt;
    type: &#039;bar&#039;,&lt;br /&gt;
    data: { labels: cityLabels, datasets: [{ label: &#039;Количество отметок&#039;, data: cityValues, backgroundColor: &#039;#3498db&#039;, borderRadius: 8 }] },&lt;br /&gt;
    options: { responsive: true, maintainAspectRatio: true, plugins: { legend: { position: &#039;top&#039; } } }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
const sortedPlaces = Object.entries(placeCount).sort((a,b) =&amp;gt; b[1] - a[1]).slice(0, 10);&lt;br /&gt;
const placesLabels = sortedPlaces.map(p =&amp;gt; p[0].length &amp;gt; 20 ? p[0].slice(0, 20) + &#039;…&#039; : p[0]);&lt;br /&gt;
const placesValues = sortedPlaces.map(p =&amp;gt; p[1]);&lt;br /&gt;
const placesCtx = document.getElementById(&#039;placesChart&#039;).getContext(&#039;2d&#039;);&lt;br /&gt;
let placesChart = new Chart(placesCtx, {&lt;br /&gt;
    type: &#039;pie&#039;,&lt;br /&gt;
    data: { labels: placesLabels, datasets: [{ data: placesValues, backgroundColor: [&#039;#3498db&#039;, &#039;#e74c3c&#039;, &#039;#2ecc71&#039;, &#039;#f1c40f&#039;, &#039;#9b59b6&#039;, &#039;#1abc9c&#039;, &#039;#e67e22&#039;, &#039;#34495e&#039;, &#039;#16a085&#039;, &#039;#27ae60&#039;] }] },&lt;br /&gt;
    options: { responsive: true, maintainAspectRatio: true, plugins: { legend: { position: &#039;right&#039;, labels: { boxWidth: 12, font: { size: 10 } } } } }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function updatePlacesList() {&lt;br /&gt;
    const filtered = getFilteredData();&lt;br /&gt;
    const listContainer = document.getElementById(&#039;placesList&#039;);&lt;br /&gt;
    if (filtered.length === 0) { listContainer.innerHTML = &#039;&amp;lt;p&amp;gt;Нет данных&amp;lt;/p&amp;gt;&#039;; return; }&lt;br /&gt;
    let html = &#039;&amp;lt;ul style=&amp;quot;list-style: none; padding: 0;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
    filtered.forEach(d =&amp;gt; {&lt;br /&gt;
        const text = d.post_text ? d.post_text.substring(0, 80) : &#039;&#039;;&lt;br /&gt;
        html += `&amp;lt;li style=&amp;quot;padding: 8px 0; border-bottom: 1px solid #eee;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;${d.place}&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;${d.friend_name} · ${text ? text + &#039;…&#039; : &#039;&#039;}&amp;lt;br&amp;gt;&amp;lt;a href=&amp;quot;${d.post_url}&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;открыть пост&amp;lt;/a&amp;gt;&amp;lt;/small&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
    });&lt;br /&gt;
    html += &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
    listContainer.innerHTML = html;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const map = L.map(&#039;map&#039;).setView([55.76, 37.64], 4);&lt;br /&gt;
L.tileLayer(&#039;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#039;, { attribution: &#039;© OpenStreetMap contributors&#039; }).addTo(map);&lt;br /&gt;
let markersLayer = L.layerGroup().addTo(map);&lt;br /&gt;
&lt;br /&gt;
function updateMap() {&lt;br /&gt;
    markersLayer.clearLayers();&lt;br /&gt;
    const filtered = getFilteredData();&lt;br /&gt;
    const bounds = [];&lt;br /&gt;
    filtered.forEach(item =&amp;gt; {&lt;br /&gt;
        const [lat, lng] = item.coordinates.split(&#039; &#039;);&lt;br /&gt;
        const marker = L.marker([parseFloat(lat), parseFloat(lng)]).addTo(markersLayer);&lt;br /&gt;
        const postText = item.post_text ? item.post_text.substring(0, 100) : &#039;&#039;;&lt;br /&gt;
        marker.bindPopup(`&amp;lt;b&amp;gt;${item.friend_name}&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;i&amp;gt;${item.place}&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;${postText}&amp;lt;br&amp;gt;&amp;lt;a href=&amp;quot;${item.post_url}&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Открыть пост&amp;lt;/a&amp;gt;`);&lt;br /&gt;
        bounds.push([parseFloat(lat), parseFloat(lng)]);&lt;br /&gt;
    });&lt;br /&gt;
    if (bounds.length &amp;gt; 0) map.fitBounds(bounds);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateCharts() {&lt;br /&gt;
    const filtered = getFilteredData();&lt;br /&gt;
    const filteredCityCount = {};&lt;br /&gt;
    const filteredPlaceCount = {};&lt;br /&gt;
    filtered.forEach(d =&amp;gt; {&lt;br /&gt;
        const city = d.place.split(&#039;,&#039;)[0] || d.place;&lt;br /&gt;
        filteredCityCount[city] = (filteredCityCount[city] || 0) + 1;&lt;br /&gt;
        filteredPlaceCount[d.place] = (filteredPlaceCount[d.place] || 0) + 1;&lt;br /&gt;
    });&lt;br /&gt;
    cityChart.data.labels = Object.keys(filteredCityCount);&lt;br /&gt;
    cityChart.data.datasets[0].data = Object.values(filteredCityCount);&lt;br /&gt;
    cityChart.update();&lt;br /&gt;
    const newSortedPlaces = Object.entries(filteredPlaceCount).sort((a,b) =&amp;gt; b[1] - a[1]).slice(0, 10);&lt;br /&gt;
    placesChart.data.labels = newSortedPlaces.map(p =&amp;gt; p[0].length &amp;gt; 20 ? p[0].slice(0,20)+&#039;…&#039; : p[0]);&lt;br /&gt;
    placesChart.data.datasets[0].data = newSortedPlaces.map(p =&amp;gt; p[1]);&lt;br /&gt;
    placesChart.update();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
friendSelect.addEventListener(&#039;change&#039;, (e) =&amp;gt; {&lt;br /&gt;
    currentFilter = e.target.value;&lt;br /&gt;
    updateMap();&lt;br /&gt;
    updatePlacesList();&lt;br /&gt;
    updateCharts();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
updateMap();&lt;br /&gt;
updatePlacesList();&lt;br /&gt;
&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ВЫВОДЫ --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Выводы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;В ходе работы над проектом я:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Научилась работать с VK API — получать токен, делать запросы, обрабатывать ответы.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Освоила парсинг JSON-данных и сохранение результатов в файл.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создала интерактивную карту на Leaflet и нанесла на нее реальные геоданные.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Поняла, как устроены современные веб-сервисы, которые собирают данные из разных источников.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Проект можно развивать дальше: добавить тепловую карту, сделать анализ популярных мест, подключить Яндекс.Карты с более детальными данными.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Полный исходный код приложения===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;▸ Показать полный код приложения&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# config.py&lt;br /&gt;
# Токен доступа VK API (получен через standalone-приложение)&lt;br /&gt;
&lt;br /&gt;
TOKEN = &amp;quot;vk1.a.мой_токен_здесь&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# main.py&lt;br /&gt;
import vk_api&lt;br /&gt;
from config import TOKEN&lt;br /&gt;
import json&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
# Авторизация&lt;br /&gt;
vk_session = vk_api.VkApi(token=TOKEN)&lt;br /&gt;
vk = vk_session.get_api()&lt;br /&gt;
&lt;br /&gt;
def get_friends_with_geo():&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Получает список друзей и собирает их посты с геометками&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    print(&amp;quot;Получаю список друзей...&amp;quot;)&lt;br /&gt;
    friends = vk.friends.get(fields=[&#039;first_name&#039;, &#039;last_name&#039;])&lt;br /&gt;
    &lt;br /&gt;
    friends_data = []&lt;br /&gt;
    total_friends = friends[&#039;count&#039;]&lt;br /&gt;
    print(f&amp;quot;Найдено друзей: {total_friends}&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    # Обрабатываем первых 30 друзей&lt;br /&gt;
    for i, friend in enumerate(friends[&#039;items&#039;][:30]):&lt;br /&gt;
        print(f&amp;quot;Обрабатываю друга {i+1}/30: {friend[&#039;first_name&#039;]} {friend[&#039;last_name&#039;]}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        try:&lt;br /&gt;
            # Получаем последние 50 постов друга&lt;br /&gt;
            posts = vk.wall.get(owner_id=friend[&#039;id&#039;], count=50)&lt;br /&gt;
            &lt;br /&gt;
            for post in posts[&#039;items&#039;]:&lt;br /&gt;
                if &#039;geo&#039; in post and post[&#039;geo&#039;]:&lt;br /&gt;
                    geo_data = {&lt;br /&gt;
                        &#039;friend_name&#039;: f&amp;quot;{friend[&#039;first_name&#039;]} {friend[&#039;last_name&#039;]}&amp;quot;,&lt;br /&gt;
                        &#039;friend_id&#039;: friend[&#039;id&#039;],&lt;br /&gt;
                        &#039;coordinates&#039;: post[&#039;geo&#039;][&#039;coordinates&#039;],&lt;br /&gt;
                        &#039;place&#039;: post[&#039;geo&#039;].get(&#039;place&#039;, {}).get(&#039;title&#039;, &#039;Без названия&#039;),&lt;br /&gt;
                        &#039;post_text&#039;: post.get(&#039;text&#039;, &#039;&#039;)[:100],&lt;br /&gt;
                        &#039;post_url&#039;: f&amp;quot;https://vk.com/wall{friend[&#039;id&#039;]}_{post[&#039;id&#039;]}&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                    friends_data.append(geo_data)&lt;br /&gt;
                    print(f&amp;quot;  Найдена геометка: {geo_data[&#039;coordinates&#039;]} - {geo_data[&#039;place&#039;]}&amp;quot;)&lt;br /&gt;
                    &lt;br /&gt;
        except Exception as e:&lt;br /&gt;
            print(f&amp;quot;  Ошибка при обработке: {e}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        time.sleep(0.5)  # пауза, чтобы не спамить API&lt;br /&gt;
    &lt;br /&gt;
    # Сохраняем результат&lt;br /&gt;
    with open(&#039;friends_geo.json&#039;, &#039;w&#039;, encoding=&#039;utf-8&#039;) as f:&lt;br /&gt;
        json.dump(friends_data, f, ensure_ascii=False, indent=4)&lt;br /&gt;
    &lt;br /&gt;
    print(f&amp;quot;\nГотово! Найдено {len(friends_data)} постов с геометками.&amp;quot;)&lt;br /&gt;
    return friends_data&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    get_friends_with_geo()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
# friends_geo.json (пример данных)&lt;br /&gt;
[&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Анна Смирнова&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 123456789,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;55.751244 37.618423&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Красная площадь&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Красота!&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall123456789_123&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Иван Петров&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 987654321,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;55.755814 37.617635&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Парк Горького&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Гуляем с друзьями&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall987654321_456&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
# map.html&lt;br /&gt;
&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;head&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;title&amp;amp;gt;Карта друзей&amp;amp;lt;/title&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.css&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;style&amp;amp;gt;&lt;br /&gt;
        body { margin: 0; padding: 0; }&lt;br /&gt;
        #map { width: 100%; height: 100vh; }&lt;br /&gt;
    &amp;amp;lt;/style&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;div id=&amp;quot;map&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script&amp;amp;gt;&lt;br /&gt;
        const friendsData = [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;friend_name&amp;quot;: &amp;quot;Анна Смирнова&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: &amp;quot;55.751244 37.618423&amp;quot;,&lt;br /&gt;
                &amp;quot;place&amp;quot;: &amp;quot;Красная площадь&amp;quot;,&lt;br /&gt;
                &amp;quot;post_text&amp;quot;: &amp;quot;Красота!&amp;quot;,&lt;br /&gt;
                &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall123456789_123&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;friend_name&amp;quot;: &amp;quot;Иван Петров&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: &amp;quot;55.755814 37.617635&amp;quot;,&lt;br /&gt;
                &amp;quot;place&amp;quot;: &amp;quot;Парк Горького&amp;quot;,&lt;br /&gt;
                &amp;quot;post_text&amp;quot;: &amp;quot;Гуляем с друзьями&amp;quot;,&lt;br /&gt;
                &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall987654321_456&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        const map = L.map(&#039;map&#039;).setView([55.76, 37.64], 10);&lt;br /&gt;
        L.tileLayer(&#039;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#039;, {&lt;br /&gt;
            attribution: &#039;© OpenStreetMap contributors&#039;&lt;br /&gt;
        }).addTo(map);&lt;br /&gt;
&lt;br /&gt;
        friendsData.forEach(item =&amp;gt; {&lt;br /&gt;
            const [lat, lng] = item.coordinates.split(&#039; &#039;);&lt;br /&gt;
            const marker = L.marker([parseFloat(lat), parseFloat(lng)]).addTo(map);&lt;br /&gt;
            marker.bindPopup(`&lt;br /&gt;
                &amp;amp;lt;b&amp;amp;gt;${item.friend_name}&amp;amp;lt;/b&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;i&amp;amp;gt;${item.place}&amp;amp;lt;/i&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                ${item.post_text}&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;a href=&amp;quot;${item.post_url}&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;amp;gt;Открыть пост&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
            `);&lt;br /&gt;
        });&lt;br /&gt;
    &amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# requirements.txt&lt;br /&gt;
vk-api==5.107&lt;br /&gt;
requests==2.31.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Географическая карта с интерактивными метками (создано с помощью семантических страниц) ===&lt;br /&gt;
&lt;br /&gt;
{{#ask:&lt;br /&gt;
[[Category:Карта друзей]]&lt;br /&gt;
|?Coordinate&lt;br /&gt;
|?Friend&lt;br /&gt;
|?PostText&lt;br /&gt;
|format=map&lt;br /&gt;
|height=400&lt;br /&gt;
|width=700&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9/%D0%A1%D0%BE%D1%87%D0%B8&amp;diff=45593</id>
		<title>Проект:Карта друзей/Сочи</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9/%D0%A1%D0%BE%D1%87%D0%B8&amp;diff=45593"/>
		<updated>2026-03-27T07:27:40Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: Новая страница: «Coordinate::43.656406140133, 39.651700347255 Friend::Елена Горькова PostText::Это были прекрасные 4 дня 😍 г.Сочи PostUrl::https://vk.com/wall18485740_4581 Category:Карта друзей Description::Геометка из поста Елены Горьковой в Сочи»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Coordinate::43.656406140133, 39.651700347255]]&lt;br /&gt;
[[Friend::Елена Горькова]]&lt;br /&gt;
[[PostText::Это были прекрасные 4 дня 😍 г.Сочи]]&lt;br /&gt;
[[PostUrl::https://vk.com/wall18485740_4581]]&lt;br /&gt;
[[Category:Карта друзей]]&lt;br /&gt;
[[Description::Геометка из поста Елены Горьковой в Сочи]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9/%D0%A1%D0%B0%D0%BD%D0%BA%D1%82-%D0%9F%D0%B5%D1%82%D0%B5%D1%80%D0%B1%D1%83%D1%80%D0%B3&amp;diff=45591</id>
		<title>Проект:Карта друзей/Санкт-Петербург</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9/%D0%A1%D0%B0%D0%BD%D0%BA%D1%82-%D0%9F%D0%B5%D1%82%D0%B5%D1%80%D0%B1%D1%83%D1%80%D0%B3&amp;diff=45591"/>
		<updated>2026-03-27T07:27:24Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: Новая страница: «Coordinate::59.938746608095, 30.31621092758 Friend::Ира Семенова PostText::Веснаа😊❤️ тепло🌷 PostUrl::https://vk.com/wall6437942_6146 Category:Карта друзей Description::Геометка из поста Иры Семеновой в Санкт-Петербурге»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Coordinate::59.938746608095, 30.31621092758]]&lt;br /&gt;
[[Friend::Ира Семенова]]&lt;br /&gt;
[[PostText::Веснаа😊❤️ тепло🌷]]&lt;br /&gt;
[[PostUrl::https://vk.com/wall6437942_6146]]&lt;br /&gt;
[[Category:Карта друзей]]&lt;br /&gt;
[[Description::Геометка из поста Иры Семеновой в Санкт-Петербурге]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9/%D0%97%D0%B5%D0%BB%D0%B5%D0%BD%D0%BE%D0%B3%D1%80%D0%B0%D0%B4%D1%81%D0%BA&amp;diff=45590</id>
		<title>Проект:Карта друзей/Зеленоградск</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9/%D0%97%D0%B5%D0%BB%D0%B5%D0%BD%D0%BE%D0%B3%D1%80%D0%B0%D0%B4%D1%81%D0%BA&amp;diff=45590"/>
		<updated>2026-03-27T07:27:01Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: Новая страница: «Coordinate::54.960033758443, 20.47501174861 Friend::Наталья Шенконская PostText::Балтика замерзла PostUrl::https://vk.com/wall4671765_1030 Category:Карта друзей Description::Геометка из поста Натальи Шенконской в Зеленоградске»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Coordinate::54.960033758443, 20.47501174861]]&lt;br /&gt;
[[Friend::Наталья Шенконская]]&lt;br /&gt;
[[PostText::Балтика замерзла]]&lt;br /&gt;
[[PostUrl::https://vk.com/wall4671765_1030]]&lt;br /&gt;
[[Category:Карта друзей]]&lt;br /&gt;
[[Description::Геометка из поста Натальи Шенконской в Зеленоградске]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45572</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45572"/>
		<updated>2026-03-27T06:59:46Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 15px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы [[API]] и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; [[Python]], [[JavaScript]], [[HTML]]/[[CSS]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки [[Python]]:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; [[VK API]], OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; [[GitHub]] Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Диаграмма работы приложения «Карта друзей»&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#mermaid: flowchart TB&lt;br /&gt;
    A[Начало] --&amp;gt; B(Получение токена VK API)&lt;br /&gt;
    B --&amp;gt; C(Запрос списка друзей)&lt;br /&gt;
    C --&amp;gt; D{Есть друзья?}&lt;br /&gt;
    D --&amp;gt;|Нет| E[Завершить]&lt;br /&gt;
    D --&amp;gt;|Да| F[Цикл по каждому другу]&lt;br /&gt;
    F --&amp;gt; G(Запрос последних 30 постов)&lt;br /&gt;
    G --&amp;gt; H{Пост содержит geo?}&lt;br /&gt;
    H --&amp;gt;|Нет| I[Следующий пост]&lt;br /&gt;
    I --&amp;gt; G&lt;br /&gt;
    H --&amp;gt;|Да| J(Сохранить координаты, имя, место, ссылку)&lt;br /&gt;
    J --&amp;gt; K{Все посты проверены?}&lt;br /&gt;
    K --&amp;gt;|Нет| I&lt;br /&gt;
    K --&amp;gt;|Да| L{Все друзья обработаны?}&lt;br /&gt;
    L --&amp;gt;|Нет| F&lt;br /&gt;
    L --&amp;gt;|Да| M(Сохранить данные в JSON-файл)&lt;br /&gt;
    M --&amp;gt; N(Открыть HTML-страницу с картой)&lt;br /&gt;
    N --&amp;gt; O(Загрузить JSON в JavaScript)&lt;br /&gt;
    O --&amp;gt; P(Отрисовать маркеры на карте)&lt;br /&gt;
    P --&amp;gt; Q(Клик по маркеру → всплывающее окно)&lt;br /&gt;
    Q --&amp;gt; R[Готово]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход работы над проектом&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 1. Создание страницы в вики и выбор темы&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 2. Изучение VK API и получение токена&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 3. Установка библиотеки и написание Python-скрипта&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Установила библиотеку vk_api через терминал:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_install.png|500px|center|thumb|Установка библиотеки vk_api]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Написала скрипт, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Авторизуется по токену&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Получает список друзей&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Для каждого друга запрашивает последние 30 постов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
            [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; собрано 18 постов с геометками у 30 обработанных друзей.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 4. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Загружает данные из JSON-файла&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Добавляет маркеры на карту&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    [[Файл:Json data.png|400px|center|thumb|Файл friends_geo.json]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; готовая интерактивная карта с точками всех найденных геометок.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 5. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала файл &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Map code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ИТОГОВЫЙ РЕЗУЛЬТАТ --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #eef2f5; padding: 20px; border-radius: 15px; margin: 30px 0; text-align: center; border-left: 4px solid #3498db;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;Итог проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;font-size: 18px;&amp;quot;&amp;gt;Создан работающий инструмент для сбора и визуализации геоданных из ВКонтакте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;23 друга обработано &amp;amp;nbsp;|&amp;amp;nbsp; 7 геометок собрано &amp;amp;nbsp;|&amp;amp;nbsp; 6 городов на карте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Аналитический дашборд===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dashboard preview.png|700px|center|thumb|Аналитический дашборд «Карта друзей»]]&lt;br /&gt;
&lt;br /&gt;
На основе собранных данных был разработан интерактивный дашборд, который включает:&lt;br /&gt;
&lt;br /&gt;
* Интерактивную карту с маркерами всех найденных мест&lt;br /&gt;
* Блок статистики (количество друзей, геометок, городов, самое популярное место)&lt;br /&gt;
* Гистограмму распределения отметок по городам&lt;br /&gt;
* Круговую диаграмму топ-10 мест по популярности&lt;br /&gt;
* Фильтр по друзьям для детального анализа&lt;br /&gt;
* Список всех мест со ссылками на посты&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;▸ Показать код дашборда (dashboard.html)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;html lang=&amp;quot;ru&amp;quot;&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;head&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;title&amp;amp;gt;Дашборд: Карта друзей&amp;amp;lt;/title&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.css&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script src=&amp;quot;https://cdn.jsdelivr.net/npm/chart.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;style&amp;amp;gt;&lt;br /&gt;
        * { margin: 0; padding: 0; box-sizing: border-box; }&lt;br /&gt;
        body { font-family: &#039;Segoe UI&#039;, Tahoma, Geneva, Verdana, sans-serif; background: #f5f7fa; padding: 20px; }&lt;br /&gt;
        .dashboard { max-width: 1400px; margin: 0 auto; }&lt;br /&gt;
        h1 { color: #2c3e50; margin-bottom: 20px; border-bottom: 3px solid #3498db; padding-bottom: 10px; }&lt;br /&gt;
        .row { display: flex; gap: 20px; margin-bottom: 20px; flex-wrap: wrap; }&lt;br /&gt;
        .card { background: white; border-radius: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); padding: 20px; flex: 1; min-width: 250px; }&lt;br /&gt;
        .map-container { flex: 2; min-width: 500px; }&lt;br /&gt;
        .stats { display: flex; gap: 15px; flex-wrap: wrap; margin-bottom: 20px; }&lt;br /&gt;
        .stat-box { background: white; border-radius: 12px; padding: 20px; text-align: center; flex: 1; min-width: 150px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }&lt;br /&gt;
        .stat-number { font-size: 32px; font-weight: bold; color: #3498db; }&lt;br /&gt;
        .stat-label { color: #7f8c8d; margin-top: 8px; }&lt;br /&gt;
        #map { height: 400px; width: 100%; border-radius: 8px; }&lt;br /&gt;
        canvas { max-height: 300px; }&lt;br /&gt;
        .filter-select { padding: 8px 12px; border-radius: 6px; border: 1px solid #ddd; margin-bottom: 15px; width: 100%; }&lt;br /&gt;
        hr { margin: 15px 0; border: none; border-top: 1px solid #eee; }&lt;br /&gt;
    &amp;amp;lt;/style&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;div class=&amp;quot;dashboard&amp;quot;&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;h1&amp;amp;gt;Карта друзей — аналитический дашборд&amp;amp;lt;/h1&amp;amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;amp;lt;div class=&amp;quot;stats&amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;totalFriends&amp;quot;&amp;amp;gt;0&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;amp;gt;Друзей обработано&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;totalMarkers&amp;quot;&amp;amp;gt;0&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;amp;gt;Геометок найдено&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;totalCities&amp;quot;&amp;amp;gt;0&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;amp;gt;Городов&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;topPlace&amp;quot;&amp;amp;gt;—&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;amp;gt;Самое популярное место&amp;amp;lt;/div&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;amp;lt;div class=&amp;quot;row&amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;card map-container&amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;h3&amp;amp;gt;Карта с отметками&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;div id=&amp;quot;map&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;hr&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;label for=&amp;quot;friendFilter&amp;quot;&amp;amp;gt;Фильтр по другу:&amp;amp;lt;/label&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;select id=&amp;quot;friendFilter&amp;quot; class=&amp;quot;filter-select&amp;quot;&amp;amp;gt;&amp;amp;lt;option value=&amp;quot;all&amp;quot;&amp;amp;gt;Все друзья&amp;amp;lt;/option&amp;amp;gt;&amp;amp;lt;/select&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;card&amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;h3&amp;amp;gt;Города по количеству отметок&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;canvas id=&amp;quot;cityChart&amp;quot;&amp;amp;gt;&amp;amp;lt;/canvas&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;amp;lt;div class=&amp;quot;row&amp;quot;&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;card&amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;h3&amp;amp;gt;Активность по местам&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;canvas id=&amp;quot;placesChart&amp;quot;&amp;amp;gt;&amp;amp;lt;/canvas&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;div class=&amp;quot;card&amp;quot;&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;h3&amp;amp;gt;Список найденных мест&amp;amp;lt;/h3&amp;amp;gt;&lt;br /&gt;
            &amp;amp;lt;div id=&amp;quot;placesList&amp;quot; style=&amp;quot;max-height: 300px; overflow-y: auto;&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
        &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;script&amp;amp;gt;&lt;br /&gt;
const rawData = [&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Наталья Шевковская&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 4671765,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;54.960033758443 20.47501174861&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Зеленоградск&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Балтика замерзла&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall4671765_1030&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
......&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Татьяна Бондаренко&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 131800785,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;52.227369601217 21.003966668331&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Warszawa Poland&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;довольные и счастливые #BGON ❤️&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall131800785_3508&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
let currentFilter = &amp;quot;all&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const uniqueFriends = [...new Set(rawData.map(d =&amp;gt; d.friend_id))];&lt;br /&gt;
const totalFriends = uniqueFriends.length;&lt;br /&gt;
const totalMarkers = rawData.length;&lt;br /&gt;
&lt;br /&gt;
const cityCount = {};&lt;br /&gt;
const placeCount = {};&lt;br /&gt;
rawData.forEach(d =&amp;gt; {&lt;br /&gt;
    const city = d.place.split(&#039;,&#039;)[0] || d.place;&lt;br /&gt;
    cityCount[city] = (cityCount[city] || 0) + 1;&lt;br /&gt;
    placeCount[d.place] = (placeCount[d.place] || 0) + 1;&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
const totalCities = Object.keys(cityCount).length;&lt;br /&gt;
&lt;br /&gt;
let topPlaceName = &amp;quot;—&amp;quot;;&lt;br /&gt;
let topPlaceCount = 0;&lt;br /&gt;
for (const [place, count] of Object.entries(placeCount)) {&lt;br /&gt;
    if (count &amp;gt; topPlaceCount) {&lt;br /&gt;
        topPlaceCount = count;&lt;br /&gt;
        topPlaceName = place;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
document.getElementById(&#039;totalFriends&#039;).innerText = totalFriends;&lt;br /&gt;
document.getElementById(&#039;totalMarkers&#039;).innerText = totalMarkers;&lt;br /&gt;
document.getElementById(&#039;totalCities&#039;).innerText = totalCities;&lt;br /&gt;
document.getElementById(&#039;topPlace&#039;).innerText = topPlaceName.length &amp;gt; 25 ? topPlaceName.slice(0, 25) + &#039;…&#039; : topPlaceName;&lt;br /&gt;
&lt;br /&gt;
const friendSelect = document.getElementById(&#039;friendFilter&#039;);&lt;br /&gt;
const uniqueNames = [...new Map(rawData.map(d =&amp;gt; [d.friend_id, d.friend_name])).entries()];&lt;br /&gt;
uniqueNames.forEach(([id, name]) =&amp;gt; {&lt;br /&gt;
    const option = document.createElement(&#039;option&#039;);&lt;br /&gt;
    option.value = id;&lt;br /&gt;
    option.textContent = name;&lt;br /&gt;
    friendSelect.appendChild(option);&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function getFilteredData() {&lt;br /&gt;
    if (currentFilter === &amp;quot;all&amp;quot;) return rawData;&lt;br /&gt;
    return rawData.filter(d =&amp;gt; d.friend_id == currentFilter);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const cityLabels = Object.keys(cityCount);&lt;br /&gt;
const cityValues = Object.values(cityCount);&lt;br /&gt;
const cityCtx = document.getElementById(&#039;cityChart&#039;).getContext(&#039;2d&#039;);&lt;br /&gt;
let cityChart = new Chart(cityCtx, {&lt;br /&gt;
    type: &#039;bar&#039;,&lt;br /&gt;
    data: { labels: cityLabels, datasets: [{ label: &#039;Количество отметок&#039;, data: cityValues, backgroundColor: &#039;#3498db&#039;, borderRadius: 8 }] },&lt;br /&gt;
    options: { responsive: true, maintainAspectRatio: true, plugins: { legend: { position: &#039;top&#039; } } }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
const sortedPlaces = Object.entries(placeCount).sort((a,b) =&amp;gt; b[1] - a[1]).slice(0, 10);&lt;br /&gt;
const placesLabels = sortedPlaces.map(p =&amp;gt; p[0].length &amp;gt; 20 ? p[0].slice(0, 20) + &#039;…&#039; : p[0]);&lt;br /&gt;
const placesValues = sortedPlaces.map(p =&amp;gt; p[1]);&lt;br /&gt;
const placesCtx = document.getElementById(&#039;placesChart&#039;).getContext(&#039;2d&#039;);&lt;br /&gt;
let placesChart = new Chart(placesCtx, {&lt;br /&gt;
    type: &#039;pie&#039;,&lt;br /&gt;
    data: { labels: placesLabels, datasets: [{ data: placesValues, backgroundColor: [&#039;#3498db&#039;, &#039;#e74c3c&#039;, &#039;#2ecc71&#039;, &#039;#f1c40f&#039;, &#039;#9b59b6&#039;, &#039;#1abc9c&#039;, &#039;#e67e22&#039;, &#039;#34495e&#039;, &#039;#16a085&#039;, &#039;#27ae60&#039;] }] },&lt;br /&gt;
    options: { responsive: true, maintainAspectRatio: true, plugins: { legend: { position: &#039;right&#039;, labels: { boxWidth: 12, font: { size: 10 } } } } }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
function updatePlacesList() {&lt;br /&gt;
    const filtered = getFilteredData();&lt;br /&gt;
    const listContainer = document.getElementById(&#039;placesList&#039;);&lt;br /&gt;
    if (filtered.length === 0) { listContainer.innerHTML = &#039;&amp;lt;p&amp;gt;Нет данных&amp;lt;/p&amp;gt;&#039;; return; }&lt;br /&gt;
    let html = &#039;&amp;lt;ul style=&amp;quot;list-style: none; padding: 0;&amp;quot;&amp;gt;&#039;;&lt;br /&gt;
    filtered.forEach(d =&amp;gt; {&lt;br /&gt;
        const text = d.post_text ? d.post_text.substring(0, 80) : &#039;&#039;;&lt;br /&gt;
        html += `&amp;lt;li style=&amp;quot;padding: 8px 0; border-bottom: 1px solid #eee;&amp;quot;&amp;gt;&amp;lt;b&amp;gt;${d.place}&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;small&amp;gt;${d.friend_name} · ${text ? text + &#039;…&#039; : &#039;&#039;}&amp;lt;br&amp;gt;&amp;lt;a href=&amp;quot;${d.post_url}&amp;quot; target=&amp;quot;_blank&amp;quot; style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;открыть пост&amp;lt;/a&amp;gt;&amp;lt;/small&amp;gt;&amp;lt;/li&amp;gt;`;&lt;br /&gt;
    });&lt;br /&gt;
    html += &#039;&amp;lt;/ul&amp;gt;&#039;;&lt;br /&gt;
    listContainer.innerHTML = html;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
const map = L.map(&#039;map&#039;).setView([55.76, 37.64], 4);&lt;br /&gt;
L.tileLayer(&#039;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#039;, { attribution: &#039;© OpenStreetMap contributors&#039; }).addTo(map);&lt;br /&gt;
let markersLayer = L.layerGroup().addTo(map);&lt;br /&gt;
&lt;br /&gt;
function updateMap() {&lt;br /&gt;
    markersLayer.clearLayers();&lt;br /&gt;
    const filtered = getFilteredData();&lt;br /&gt;
    const bounds = [];&lt;br /&gt;
    filtered.forEach(item =&amp;gt; {&lt;br /&gt;
        const [lat, lng] = item.coordinates.split(&#039; &#039;);&lt;br /&gt;
        const marker = L.marker([parseFloat(lat), parseFloat(lng)]).addTo(markersLayer);&lt;br /&gt;
        const postText = item.post_text ? item.post_text.substring(0, 100) : &#039;&#039;;&lt;br /&gt;
        marker.bindPopup(`&amp;lt;b&amp;gt;${item.friend_name}&amp;lt;/b&amp;gt;&amp;lt;br&amp;gt;&amp;lt;i&amp;gt;${item.place}&amp;lt;/i&amp;gt;&amp;lt;br&amp;gt;${postText}&amp;lt;br&amp;gt;&amp;lt;a href=&amp;quot;${item.post_url}&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;gt;Открыть пост&amp;lt;/a&amp;gt;`);&lt;br /&gt;
        bounds.push([parseFloat(lat), parseFloat(lng)]);&lt;br /&gt;
    });&lt;br /&gt;
    if (bounds.length &amp;gt; 0) map.fitBounds(bounds);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function updateCharts() {&lt;br /&gt;
    const filtered = getFilteredData();&lt;br /&gt;
    const filteredCityCount = {};&lt;br /&gt;
    const filteredPlaceCount = {};&lt;br /&gt;
    filtered.forEach(d =&amp;gt; {&lt;br /&gt;
        const city = d.place.split(&#039;,&#039;)[0] || d.place;&lt;br /&gt;
        filteredCityCount[city] = (filteredCityCount[city] || 0) + 1;&lt;br /&gt;
        filteredPlaceCount[d.place] = (filteredPlaceCount[d.place] || 0) + 1;&lt;br /&gt;
    });&lt;br /&gt;
    cityChart.data.labels = Object.keys(filteredCityCount);&lt;br /&gt;
    cityChart.data.datasets[0].data = Object.values(filteredCityCount);&lt;br /&gt;
    cityChart.update();&lt;br /&gt;
    const newSortedPlaces = Object.entries(filteredPlaceCount).sort((a,b) =&amp;gt; b[1] - a[1]).slice(0, 10);&lt;br /&gt;
    placesChart.data.labels = newSortedPlaces.map(p =&amp;gt; p[0].length &amp;gt; 20 ? p[0].slice(0,20)+&#039;…&#039; : p[0]);&lt;br /&gt;
    placesChart.data.datasets[0].data = newSortedPlaces.map(p =&amp;gt; p[1]);&lt;br /&gt;
    placesChart.update();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
friendSelect.addEventListener(&#039;change&#039;, (e) =&amp;gt; {&lt;br /&gt;
    currentFilter = e.target.value;&lt;br /&gt;
    updateMap();&lt;br /&gt;
    updatePlacesList();&lt;br /&gt;
    updateCharts();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
updateMap();&lt;br /&gt;
updatePlacesList();&lt;br /&gt;
&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ВЫВОДЫ --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Выводы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;В ходе работы над проектом я:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Научилась работать с VK API — получать токен, делать запросы, обрабатывать ответы.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Освоила парсинг JSON-данных и сохранение результатов в файл.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создала интерактивную карту на Leaflet и нанесла на нее реальные геоданные.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Поняла, как устроены современные веб-сервисы, которые собирают данные из разных источников.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Проект можно развивать дальше: добавить тепловую карту, сделать анализ популярных мест, подключить Яндекс.Карты с более детальными данными.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Полный исходный код приложения===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;▸ Показать полный код приложения&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# config.py&lt;br /&gt;
# Токен доступа VK API (получен через standalone-приложение)&lt;br /&gt;
&lt;br /&gt;
TOKEN = &amp;quot;vk1.a.мой_токен_здесь&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# main.py&lt;br /&gt;
import vk_api&lt;br /&gt;
from config import TOKEN&lt;br /&gt;
import json&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
# Авторизация&lt;br /&gt;
vk_session = vk_api.VkApi(token=TOKEN)&lt;br /&gt;
vk = vk_session.get_api()&lt;br /&gt;
&lt;br /&gt;
def get_friends_with_geo():&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Получает список друзей и собирает их посты с геометками&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    print(&amp;quot;Получаю список друзей...&amp;quot;)&lt;br /&gt;
    friends = vk.friends.get(fields=[&#039;first_name&#039;, &#039;last_name&#039;])&lt;br /&gt;
    &lt;br /&gt;
    friends_data = []&lt;br /&gt;
    total_friends = friends[&#039;count&#039;]&lt;br /&gt;
    print(f&amp;quot;Найдено друзей: {total_friends}&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    # Обрабатываем первых 30 друзей&lt;br /&gt;
    for i, friend in enumerate(friends[&#039;items&#039;][:30]):&lt;br /&gt;
        print(f&amp;quot;Обрабатываю друга {i+1}/30: {friend[&#039;first_name&#039;]} {friend[&#039;last_name&#039;]}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        try:&lt;br /&gt;
            # Получаем последние 50 постов друга&lt;br /&gt;
            posts = vk.wall.get(owner_id=friend[&#039;id&#039;], count=50)&lt;br /&gt;
            &lt;br /&gt;
            for post in posts[&#039;items&#039;]:&lt;br /&gt;
                if &#039;geo&#039; in post and post[&#039;geo&#039;]:&lt;br /&gt;
                    geo_data = {&lt;br /&gt;
                        &#039;friend_name&#039;: f&amp;quot;{friend[&#039;first_name&#039;]} {friend[&#039;last_name&#039;]}&amp;quot;,&lt;br /&gt;
                        &#039;friend_id&#039;: friend[&#039;id&#039;],&lt;br /&gt;
                        &#039;coordinates&#039;: post[&#039;geo&#039;][&#039;coordinates&#039;],&lt;br /&gt;
                        &#039;place&#039;: post[&#039;geo&#039;].get(&#039;place&#039;, {}).get(&#039;title&#039;, &#039;Без названия&#039;),&lt;br /&gt;
                        &#039;post_text&#039;: post.get(&#039;text&#039;, &#039;&#039;)[:100],&lt;br /&gt;
                        &#039;post_url&#039;: f&amp;quot;https://vk.com/wall{friend[&#039;id&#039;]}_{post[&#039;id&#039;]}&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                    friends_data.append(geo_data)&lt;br /&gt;
                    print(f&amp;quot;  Найдена геометка: {geo_data[&#039;coordinates&#039;]} - {geo_data[&#039;place&#039;]}&amp;quot;)&lt;br /&gt;
                    &lt;br /&gt;
        except Exception as e:&lt;br /&gt;
            print(f&amp;quot;  Ошибка при обработке: {e}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        time.sleep(0.5)  # пауза, чтобы не спамить API&lt;br /&gt;
    &lt;br /&gt;
    # Сохраняем результат&lt;br /&gt;
    with open(&#039;friends_geo.json&#039;, &#039;w&#039;, encoding=&#039;utf-8&#039;) as f:&lt;br /&gt;
        json.dump(friends_data, f, ensure_ascii=False, indent=4)&lt;br /&gt;
    &lt;br /&gt;
    print(f&amp;quot;\nГотово! Найдено {len(friends_data)} постов с геометками.&amp;quot;)&lt;br /&gt;
    return friends_data&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    get_friends_with_geo()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
# friends_geo.json (пример данных)&lt;br /&gt;
[&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Анна Смирнова&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 123456789,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;55.751244 37.618423&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Красная площадь&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Красота!&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall123456789_123&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Иван Петров&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 987654321,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;55.755814 37.617635&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Парк Горького&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Гуляем с друзьями&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall987654321_456&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
# map.html&lt;br /&gt;
&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;head&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;title&amp;amp;gt;Карта друзей&amp;amp;lt;/title&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.css&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;style&amp;amp;gt;&lt;br /&gt;
        body { margin: 0; padding: 0; }&lt;br /&gt;
        #map { width: 100%; height: 100vh; }&lt;br /&gt;
    &amp;amp;lt;/style&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;div id=&amp;quot;map&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script&amp;amp;gt;&lt;br /&gt;
        const friendsData = [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;friend_name&amp;quot;: &amp;quot;Анна Смирнова&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: &amp;quot;55.751244 37.618423&amp;quot;,&lt;br /&gt;
                &amp;quot;place&amp;quot;: &amp;quot;Красная площадь&amp;quot;,&lt;br /&gt;
                &amp;quot;post_text&amp;quot;: &amp;quot;Красота!&amp;quot;,&lt;br /&gt;
                &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall123456789_123&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;friend_name&amp;quot;: &amp;quot;Иван Петров&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: &amp;quot;55.755814 37.617635&amp;quot;,&lt;br /&gt;
                &amp;quot;place&amp;quot;: &amp;quot;Парк Горького&amp;quot;,&lt;br /&gt;
                &amp;quot;post_text&amp;quot;: &amp;quot;Гуляем с друзьями&amp;quot;,&lt;br /&gt;
                &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall987654321_456&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        const map = L.map(&#039;map&#039;).setView([55.76, 37.64], 10);&lt;br /&gt;
        L.tileLayer(&#039;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#039;, {&lt;br /&gt;
            attribution: &#039;© OpenStreetMap contributors&#039;&lt;br /&gt;
        }).addTo(map);&lt;br /&gt;
&lt;br /&gt;
        friendsData.forEach(item =&amp;gt; {&lt;br /&gt;
            const [lat, lng] = item.coordinates.split(&#039; &#039;);&lt;br /&gt;
            const marker = L.marker([parseFloat(lat), parseFloat(lng)]).addTo(map);&lt;br /&gt;
            marker.bindPopup(`&lt;br /&gt;
                &amp;amp;lt;b&amp;amp;gt;${item.friend_name}&amp;amp;lt;/b&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;i&amp;amp;gt;${item.place}&amp;amp;lt;/i&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                ${item.post_text}&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;a href=&amp;quot;${item.post_url}&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;amp;gt;Открыть пост&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
            `);&lt;br /&gt;
        });&lt;br /&gt;
    &amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# requirements.txt&lt;br /&gt;
vk-api==5.107&lt;br /&gt;
requests==2.31.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Dashboard_preview.png&amp;diff=45566</id>
		<title>Файл:Dashboard preview.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Dashboard_preview.png&amp;diff=45566"/>
		<updated>2026-03-27T06:53:10Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45564</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45564"/>
		<updated>2026-03-27T06:51:27Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 15px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы [[API]] и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; [[Python]], [[JavaScript]], [[HTML]]/[[CSS]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки [[Python]]:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; [[VK API]], OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; [[GitHub]] Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Диаграмма работы приложения «Карта друзей»&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#mermaid: flowchart TB&lt;br /&gt;
    A[Начало] --&amp;gt; B(Получение токена VK API)&lt;br /&gt;
    B --&amp;gt; C(Запрос списка друзей)&lt;br /&gt;
    C --&amp;gt; D{Есть друзья?}&lt;br /&gt;
    D --&amp;gt;|Нет| E[Завершить]&lt;br /&gt;
    D --&amp;gt;|Да| F[Цикл по каждому другу]&lt;br /&gt;
    F --&amp;gt; G(Запрос последних 30 постов)&lt;br /&gt;
    G --&amp;gt; H{Пост содержит geo?}&lt;br /&gt;
    H --&amp;gt;|Нет| I[Следующий пост]&lt;br /&gt;
    I --&amp;gt; G&lt;br /&gt;
    H --&amp;gt;|Да| J(Сохранить координаты, имя, место, ссылку)&lt;br /&gt;
    J --&amp;gt; K{Все посты проверены?}&lt;br /&gt;
    K --&amp;gt;|Нет| I&lt;br /&gt;
    K --&amp;gt;|Да| L{Все друзья обработаны?}&lt;br /&gt;
    L --&amp;gt;|Нет| F&lt;br /&gt;
    L --&amp;gt;|Да| M(Сохранить данные в JSON-файл)&lt;br /&gt;
    M --&amp;gt; N(Открыть HTML-страницу с картой)&lt;br /&gt;
    N --&amp;gt; O(Загрузить JSON в JavaScript)&lt;br /&gt;
    O --&amp;gt; P(Отрисовать маркеры на карте)&lt;br /&gt;
    P --&amp;gt; Q(Клик по маркеру → всплывающее окно)&lt;br /&gt;
    Q --&amp;gt; R[Готово]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход работы над проектом&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 1. Создание страницы в вики и выбор темы&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 2. Изучение VK API и получение токена&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 3. Установка библиотеки и написание Python-скрипта&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Установила библиотеку vk_api через терминал:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_install.png|500px|center|thumb|Установка библиотеки vk_api]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Написала скрипт, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Авторизуется по токену&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Получает список друзей&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Для каждого друга запрашивает последние 30 постов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
            [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; собрано 18 постов с геометками у 30 обработанных друзей.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 4. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Загружает данные из JSON-файла&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Добавляет маркеры на карту&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    [[Файл:Json data.png|400px|center|thumb|Файл friends_geo.json]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; готовая интерактивная карта с точками всех найденных геометок.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 5. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала файл &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Map code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ИТОГОВЫЙ РЕЗУЛЬТАТ --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #eef2f5; padding: 20px; border-radius: 15px; margin: 30px 0; text-align: center; border-left: 4px solid #3498db;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;Итог проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;font-size: 18px;&amp;quot;&amp;gt;Создан работающий инструмент для сбора и визуализации геоданных из ВКонтакте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;23 друга обработано &amp;amp;nbsp;|&amp;amp;nbsp; 7 геометок собрано &amp;amp;nbsp;|&amp;amp;nbsp; 6 городов на карте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt; Аналитический дашборд&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; padding: 15px; border-radius: 10px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;На основе собранных данных был разработан интерактивный дашборд, который включает:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Интерактивную карту с маркерами всех найденных мест&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Блок статистики (количество друзей, геометок, городов, самое популярное место)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt; Гистограмму распределения отметок по городам&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Круговую диаграмму топ-10 мест по популярности&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Фильтр по друзьям для детального анализа&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Список всех мест со ссылками на посты&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;text-align: center; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
    [[Файл:Dashboard_preview.png|700px|center|thumb|Аналитический дашборд «Карта друзей»]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Дашборд позволяет анализировать географию постов друзей, фильтровать данные и просматривать статистику&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot; style=&amp;quot;margin-bottom: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #eef2f5; padding: 10px; border-radius: 8px; cursor: pointer; font-weight: bold;&amp;quot;&amp;gt;&lt;br /&gt;
        Код дашборда (dashboard.html)&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot; style=&amp;quot;background-color: #f8f9fa; padding: 15px; border-radius: 8px; margin-top: 5px; border: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;ru&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Дашборд: Карта друзей&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.css&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;script src=&amp;quot;https://cdn.jsdelivr.net/npm/chart.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        * { margin: 0; padding: 0; box-sizing: border-box; }&lt;br /&gt;
        body { font-family: &#039;Segoe UI&#039;, Tahoma, Geneva, Verdana, sans-serif; background: #f5f7fa; padding: 20px; }&lt;br /&gt;
        .dashboard { max-width: 1400px; margin: 0 auto; }&lt;br /&gt;
        h1 { color: #2c3e50; margin-bottom: 20px; border-bottom: 3px solid #3498db; padding-bottom: 10px; }&lt;br /&gt;
        .row { display: flex; gap: 20px; margin-bottom: 20px; flex-wrap: wrap; }&lt;br /&gt;
        .card { background: white; border-radius: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); padding: 20px; flex: 1; min-width: 250px; }&lt;br /&gt;
        .map-container { flex: 2; min-width: 500px; }&lt;br /&gt;
        .stats { display: flex; gap: 15px; flex-wrap: wrap; margin-bottom: 20px; }&lt;br /&gt;
        .stat-box { background: white; border-radius: 12px; padding: 20px; text-align: center; flex: 1; min-width: 150px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); }&lt;br /&gt;
        .stat-number { font-size: 32px; font-weight: bold; color: #3498db; }&lt;br /&gt;
        .stat-label { color: #7f8c8d; margin-top: 8px; }&lt;br /&gt;
        #map { height: 400px; width: 100%; border-radius: 8px; }&lt;br /&gt;
        canvas { max-height: 300px; }&lt;br /&gt;
        .filter-select { padding: 8px 12px; border-radius: 6px; border: 1px solid #ddd; margin-bottom: 15px; width: 100%; }&lt;br /&gt;
        hr { margin: 15px 0; border: none; border-top: 1px solid #eee; }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;dashboard&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt; Карта друзей — аналитический дашборд&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div class=&amp;quot;stats&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;totalFriends&amp;quot;&amp;gt;0&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;gt;Друзей обработано&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;totalMarkers&amp;quot;&amp;gt;0&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;gt;Геометок найдено&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;totalCities&amp;quot;&amp;gt;0&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;gt;Городов&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;stat-box&amp;quot;&amp;gt;&amp;lt;div class=&amp;quot;stat-number&amp;quot; id=&amp;quot;topPlace&amp;quot;&amp;gt;—&amp;lt;/div&amp;gt;&amp;lt;div class=&amp;quot;stat-label&amp;quot;&amp;gt;Самое популярное место&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;card map-container&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;h3&amp;gt;Карта с отметками&amp;lt;/h3&amp;gt;&lt;br /&gt;
            &amp;lt;div id=&amp;quot;map&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;hr&amp;gt;&lt;br /&gt;
            &amp;lt;label for=&amp;quot;friendFilter&amp;quot;&amp;gt;Фильтр по другу:&amp;lt;/label&amp;gt;&lt;br /&gt;
            &amp;lt;select id=&amp;quot;friendFilter&amp;quot; class=&amp;quot;filter-select&amp;quot;&amp;gt;&amp;lt;option value=&amp;quot;all&amp;quot;&amp;gt;Все друзья&amp;lt;/option&amp;gt;&amp;lt;/select&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;h3&amp;gt;Города по количеству отметок&amp;lt;/h3&amp;gt;&lt;br /&gt;
            &amp;lt;canvas id=&amp;quot;cityChart&amp;quot;&amp;gt;&amp;lt;/canvas&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;h3&amp;gt;Активность по местам&amp;lt;/h3&amp;gt;&lt;br /&gt;
            &amp;lt;canvas id=&amp;quot;placesChart&amp;quot;&amp;gt;&amp;lt;/canvas&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;card&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;h3&amp;gt;Список найденных мест&amp;lt;/h3&amp;gt;&lt;br /&gt;
            &amp;lt;div id=&amp;quot;placesList&amp;quot; style=&amp;quot;max-height: 300px; overflow-y: auto;&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
const rawData = [/* данные из friends_geo.json */];&lt;br /&gt;
// ... полный код дашборда&lt;br /&gt;
&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
        &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;color: #777; font-size: 12px; margin-top: 8px;&amp;quot;&amp;gt;&amp;lt;i&amp;gt;Полный код дашборда доступен в репозитории проекта. Для работы необходимо заменить массив rawData на свои данные из friends_geo.json.&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ВЫВОДЫ --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Выводы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;В ходе работы над проектом я:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Научилась работать с VK API — получать токен, делать запросы, обрабатывать ответы.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Освоила парсинг JSON-данных и сохранение результатов в файл.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создала интерактивную карту на Leaflet и нанесла на нее реальные геоданные.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Поняла, как устроены современные веб-сервисы, которые собирают данные из разных источников.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Проект можно развивать дальше: добавить тепловую карту, сделать анализ популярных мест, подключить Яндекс.Карты с более детальными данными.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Полный исходный код приложения===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;▸ Показать полный код приложения&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# config.py&lt;br /&gt;
# Токен доступа VK API (получен через standalone-приложение)&lt;br /&gt;
&lt;br /&gt;
TOKEN = &amp;quot;vk1.a.мой_токен_здесь&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# main.py&lt;br /&gt;
import vk_api&lt;br /&gt;
from config import TOKEN&lt;br /&gt;
import json&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
# Авторизация&lt;br /&gt;
vk_session = vk_api.VkApi(token=TOKEN)&lt;br /&gt;
vk = vk_session.get_api()&lt;br /&gt;
&lt;br /&gt;
def get_friends_with_geo():&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Получает список друзей и собирает их посты с геометками&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    print(&amp;quot;Получаю список друзей...&amp;quot;)&lt;br /&gt;
    friends = vk.friends.get(fields=[&#039;first_name&#039;, &#039;last_name&#039;])&lt;br /&gt;
    &lt;br /&gt;
    friends_data = []&lt;br /&gt;
    total_friends = friends[&#039;count&#039;]&lt;br /&gt;
    print(f&amp;quot;Найдено друзей: {total_friends}&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    # Обрабатываем первых 30 друзей&lt;br /&gt;
    for i, friend in enumerate(friends[&#039;items&#039;][:30]):&lt;br /&gt;
        print(f&amp;quot;Обрабатываю друга {i+1}/30: {friend[&#039;first_name&#039;]} {friend[&#039;last_name&#039;]}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        try:&lt;br /&gt;
            # Получаем последние 50 постов друга&lt;br /&gt;
            posts = vk.wall.get(owner_id=friend[&#039;id&#039;], count=50)&lt;br /&gt;
            &lt;br /&gt;
            for post in posts[&#039;items&#039;]:&lt;br /&gt;
                if &#039;geo&#039; in post and post[&#039;geo&#039;]:&lt;br /&gt;
                    geo_data = {&lt;br /&gt;
                        &#039;friend_name&#039;: f&amp;quot;{friend[&#039;first_name&#039;]} {friend[&#039;last_name&#039;]}&amp;quot;,&lt;br /&gt;
                        &#039;friend_id&#039;: friend[&#039;id&#039;],&lt;br /&gt;
                        &#039;coordinates&#039;: post[&#039;geo&#039;][&#039;coordinates&#039;],&lt;br /&gt;
                        &#039;place&#039;: post[&#039;geo&#039;].get(&#039;place&#039;, {}).get(&#039;title&#039;, &#039;Без названия&#039;),&lt;br /&gt;
                        &#039;post_text&#039;: post.get(&#039;text&#039;, &#039;&#039;)[:100],&lt;br /&gt;
                        &#039;post_url&#039;: f&amp;quot;https://vk.com/wall{friend[&#039;id&#039;]}_{post[&#039;id&#039;]}&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                    friends_data.append(geo_data)&lt;br /&gt;
                    print(f&amp;quot;  Найдена геометка: {geo_data[&#039;coordinates&#039;]} - {geo_data[&#039;place&#039;]}&amp;quot;)&lt;br /&gt;
                    &lt;br /&gt;
        except Exception as e:&lt;br /&gt;
            print(f&amp;quot;  Ошибка при обработке: {e}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        time.sleep(0.5)  # пауза, чтобы не спамить API&lt;br /&gt;
    &lt;br /&gt;
    # Сохраняем результат&lt;br /&gt;
    with open(&#039;friends_geo.json&#039;, &#039;w&#039;, encoding=&#039;utf-8&#039;) as f:&lt;br /&gt;
        json.dump(friends_data, f, ensure_ascii=False, indent=4)&lt;br /&gt;
    &lt;br /&gt;
    print(f&amp;quot;\nГотово! Найдено {len(friends_data)} постов с геометками.&amp;quot;)&lt;br /&gt;
    return friends_data&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    get_friends_with_geo()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
# friends_geo.json (пример данных)&lt;br /&gt;
[&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Анна Смирнова&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 123456789,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;55.751244 37.618423&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Красная площадь&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Красота!&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall123456789_123&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Иван Петров&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 987654321,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;55.755814 37.617635&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Парк Горького&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Гуляем с друзьями&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall987654321_456&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
# map.html&lt;br /&gt;
&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;head&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;title&amp;amp;gt;Карта друзей&amp;amp;lt;/title&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.css&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;style&amp;amp;gt;&lt;br /&gt;
        body { margin: 0; padding: 0; }&lt;br /&gt;
        #map { width: 100%; height: 100vh; }&lt;br /&gt;
    &amp;amp;lt;/style&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;div id=&amp;quot;map&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script&amp;amp;gt;&lt;br /&gt;
        const friendsData = [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;friend_name&amp;quot;: &amp;quot;Анна Смирнова&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: &amp;quot;55.751244 37.618423&amp;quot;,&lt;br /&gt;
                &amp;quot;place&amp;quot;: &amp;quot;Красная площадь&amp;quot;,&lt;br /&gt;
                &amp;quot;post_text&amp;quot;: &amp;quot;Красота!&amp;quot;,&lt;br /&gt;
                &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall123456789_123&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;friend_name&amp;quot;: &amp;quot;Иван Петров&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: &amp;quot;55.755814 37.617635&amp;quot;,&lt;br /&gt;
                &amp;quot;place&amp;quot;: &amp;quot;Парк Горького&amp;quot;,&lt;br /&gt;
                &amp;quot;post_text&amp;quot;: &amp;quot;Гуляем с друзьями&amp;quot;,&lt;br /&gt;
                &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall987654321_456&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        const map = L.map(&#039;map&#039;).setView([55.76, 37.64], 10);&lt;br /&gt;
        L.tileLayer(&#039;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#039;, {&lt;br /&gt;
            attribution: &#039;© OpenStreetMap contributors&#039;&lt;br /&gt;
        }).addTo(map);&lt;br /&gt;
&lt;br /&gt;
        friendsData.forEach(item =&amp;gt; {&lt;br /&gt;
            const [lat, lng] = item.coordinates.split(&#039; &#039;);&lt;br /&gt;
            const marker = L.marker([parseFloat(lat), parseFloat(lng)]).addTo(map);&lt;br /&gt;
            marker.bindPopup(`&lt;br /&gt;
                &amp;amp;lt;b&amp;amp;gt;${item.friend_name}&amp;amp;lt;/b&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;i&amp;amp;gt;${item.place}&amp;amp;lt;/i&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                ${item.post_text}&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;a href=&amp;quot;${item.post_url}&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;amp;gt;Открыть пост&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
            `);&lt;br /&gt;
        });&lt;br /&gt;
    &amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# requirements.txt&lt;br /&gt;
vk-api==5.107&lt;br /&gt;
requests==2.31.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45551</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45551"/>
		<updated>2026-03-27T06:34:17Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;padding: 15px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы [[API]] и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; [[Python]], [[JavaScript]], [[HTML]]/[[CSS]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки [[Python]]:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; [[VK API]], OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; [[GitHub]] Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Диаграмма работы приложения «Карта друзей»&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#mermaid: flowchart TB&lt;br /&gt;
    A[Начало] --&amp;gt; B(Получение токена VK API)&lt;br /&gt;
    B --&amp;gt; C(Запрос списка друзей)&lt;br /&gt;
    C --&amp;gt; D{Есть друзья?}&lt;br /&gt;
    D --&amp;gt;|Нет| E[Завершить]&lt;br /&gt;
    D --&amp;gt;|Да| F[Цикл по каждому другу]&lt;br /&gt;
    F --&amp;gt; G(Запрос последних 30 постов)&lt;br /&gt;
    G --&amp;gt; H{Пост содержит geo?}&lt;br /&gt;
    H --&amp;gt;|Нет| I[Следующий пост]&lt;br /&gt;
    I --&amp;gt; G&lt;br /&gt;
    H --&amp;gt;|Да| J(Сохранить координаты, имя, место, ссылку)&lt;br /&gt;
    J --&amp;gt; K{Все посты проверены?}&lt;br /&gt;
    K --&amp;gt;|Нет| I&lt;br /&gt;
    K --&amp;gt;|Да| L{Все друзья обработаны?}&lt;br /&gt;
    L --&amp;gt;|Нет| F&lt;br /&gt;
    L --&amp;gt;|Да| M(Сохранить данные в JSON-файл)&lt;br /&gt;
    M --&amp;gt; N(Открыть HTML-страницу с картой)&lt;br /&gt;
    N --&amp;gt; O(Загрузить JSON в JavaScript)&lt;br /&gt;
    O --&amp;gt; P(Отрисовать маркеры на карте)&lt;br /&gt;
    P --&amp;gt; Q(Клик по маркеру → всплывающее окно)&lt;br /&gt;
    Q --&amp;gt; R[Готово]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход работы над проектом&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 1. Создание страницы в вики и выбор темы&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 2. Изучение VK API и получение токена&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 3. Установка библиотеки и написание Python-скрипта&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Установила библиотеку vk_api через терминал:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_install.png|500px|center|thumb|Установка библиотеки vk_api]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Написала скрипт, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Авторизуется по токену&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Получает список друзей&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Для каждого друга запрашивает последние 30 постов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
            [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; собрано 18 постов с геометками у 30 обработанных друзей.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 4. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Загружает данные из JSON-файла&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Добавляет маркеры на карту&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    [[Файл:Json data.png|400px|center|thumb|Файл friends_geo.json]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; готовая интерактивная карта с точками всех найденных геометок.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 5. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала файл &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Map code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ИТОГОВЫЙ РЕЗУЛЬТАТ --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #eef2f5; padding: 20px; border-radius: 15px; margin: 30px 0; text-align: center; border-left: 4px solid #3498db;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;Итог проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;font-size: 18px;&amp;quot;&amp;gt;Создан работающий инструмент для сбора и визуализации геоданных из ВКонтакте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;23 друга обработано &amp;amp;nbsp;|&amp;amp;nbsp; 7 геометок собрано &amp;amp;nbsp;|&amp;amp;nbsp; 6 городов на карте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Аналитика собранных данных&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; padding: 15px; border-radius: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tr style=&amp;quot;background-color: #3598db; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 10px; text-align: left;&amp;quot;&amp;gt;Показатель&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 10px; text-align: left;&amp;quot;&amp;gt;Значение&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Всего друзей обработано&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;23&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Постов с геометками&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;7&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Уникальных мест&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;5&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Уникальных городов&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Самый популярный город&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Москва (4 метки)&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Самый частый тип места&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Кафе/рестораны&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ВЫВОДЫ --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Выводы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;В ходе работы над проектом я:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Научилась работать с VK API — получать токен, делать запросы, обрабатывать ответы.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Освоила парсинг JSON-данных и сохранение результатов в файл.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создала интерактивную карту на Leaflet и нанесла на нее реальные геоданные.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Поняла, как устроены современные веб-сервисы, которые собирают данные из разных источников.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Проект можно развивать дальше: добавить тепловую карту, сделать анализ популярных мест, подключить Яндекс.Карты с более детальными данными.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Полный исходный код приложения===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;▸ Показать полный код приложения&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# config.py&lt;br /&gt;
# Токен доступа VK API (получен через standalone-приложение)&lt;br /&gt;
&lt;br /&gt;
TOKEN = &amp;quot;vk1.a.мой_токен_здесь&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# main.py&lt;br /&gt;
import vk_api&lt;br /&gt;
from config import TOKEN&lt;br /&gt;
import json&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
# Авторизация&lt;br /&gt;
vk_session = vk_api.VkApi(token=TOKEN)&lt;br /&gt;
vk = vk_session.get_api()&lt;br /&gt;
&lt;br /&gt;
def get_friends_with_geo():&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Получает список друзей и собирает их посты с геометками&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    print(&amp;quot;Получаю список друзей...&amp;quot;)&lt;br /&gt;
    friends = vk.friends.get(fields=[&#039;first_name&#039;, &#039;last_name&#039;])&lt;br /&gt;
    &lt;br /&gt;
    friends_data = []&lt;br /&gt;
    total_friends = friends[&#039;count&#039;]&lt;br /&gt;
    print(f&amp;quot;Найдено друзей: {total_friends}&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    # Обрабатываем первых 30 друзей&lt;br /&gt;
    for i, friend in enumerate(friends[&#039;items&#039;][:30]):&lt;br /&gt;
        print(f&amp;quot;Обрабатываю друга {i+1}/30: {friend[&#039;first_name&#039;]} {friend[&#039;last_name&#039;]}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        try:&lt;br /&gt;
            # Получаем последние 50 постов друга&lt;br /&gt;
            posts = vk.wall.get(owner_id=friend[&#039;id&#039;], count=50)&lt;br /&gt;
            &lt;br /&gt;
            for post in posts[&#039;items&#039;]:&lt;br /&gt;
                if &#039;geo&#039; in post and post[&#039;geo&#039;]:&lt;br /&gt;
                    geo_data = {&lt;br /&gt;
                        &#039;friend_name&#039;: f&amp;quot;{friend[&#039;first_name&#039;]} {friend[&#039;last_name&#039;]}&amp;quot;,&lt;br /&gt;
                        &#039;friend_id&#039;: friend[&#039;id&#039;],&lt;br /&gt;
                        &#039;coordinates&#039;: post[&#039;geo&#039;][&#039;coordinates&#039;],&lt;br /&gt;
                        &#039;place&#039;: post[&#039;geo&#039;].get(&#039;place&#039;, {}).get(&#039;title&#039;, &#039;Без названия&#039;),&lt;br /&gt;
                        &#039;post_text&#039;: post.get(&#039;text&#039;, &#039;&#039;)[:100],&lt;br /&gt;
                        &#039;post_url&#039;: f&amp;quot;https://vk.com/wall{friend[&#039;id&#039;]}_{post[&#039;id&#039;]}&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                    friends_data.append(geo_data)&lt;br /&gt;
                    print(f&amp;quot;  Найдена геометка: {geo_data[&#039;coordinates&#039;]} - {geo_data[&#039;place&#039;]}&amp;quot;)&lt;br /&gt;
                    &lt;br /&gt;
        except Exception as e:&lt;br /&gt;
            print(f&amp;quot;  Ошибка при обработке: {e}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        time.sleep(0.5)  # пауза, чтобы не спамить API&lt;br /&gt;
    &lt;br /&gt;
    # Сохраняем результат&lt;br /&gt;
    with open(&#039;friends_geo.json&#039;, &#039;w&#039;, encoding=&#039;utf-8&#039;) as f:&lt;br /&gt;
        json.dump(friends_data, f, ensure_ascii=False, indent=4)&lt;br /&gt;
    &lt;br /&gt;
    print(f&amp;quot;\nГотово! Найдено {len(friends_data)} постов с геометками.&amp;quot;)&lt;br /&gt;
    return friends_data&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    get_friends_with_geo()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
# friends_geo.json (пример данных)&lt;br /&gt;
[&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Анна Смирнова&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 123456789,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;55.751244 37.618423&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Красная площадь&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Красота!&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall123456789_123&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Иван Петров&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 987654321,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;55.755814 37.617635&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Парк Горького&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Гуляем с друзьями&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall987654321_456&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
# map.html&lt;br /&gt;
&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;head&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;title&amp;amp;gt;Карта друзей&amp;amp;lt;/title&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.css&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;style&amp;amp;gt;&lt;br /&gt;
        body { margin: 0; padding: 0; }&lt;br /&gt;
        #map { width: 100%; height: 100vh; }&lt;br /&gt;
    &amp;amp;lt;/style&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;div id=&amp;quot;map&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script&amp;amp;gt;&lt;br /&gt;
        const friendsData = [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;friend_name&amp;quot;: &amp;quot;Анна Смирнова&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: &amp;quot;55.751244 37.618423&amp;quot;,&lt;br /&gt;
                &amp;quot;place&amp;quot;: &amp;quot;Красная площадь&amp;quot;,&lt;br /&gt;
                &amp;quot;post_text&amp;quot;: &amp;quot;Красота!&amp;quot;,&lt;br /&gt;
                &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall123456789_123&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;friend_name&amp;quot;: &amp;quot;Иван Петров&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: &amp;quot;55.755814 37.617635&amp;quot;,&lt;br /&gt;
                &amp;quot;place&amp;quot;: &amp;quot;Парк Горького&amp;quot;,&lt;br /&gt;
                &amp;quot;post_text&amp;quot;: &amp;quot;Гуляем с друзьями&amp;quot;,&lt;br /&gt;
                &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall987654321_456&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        const map = L.map(&#039;map&#039;).setView([55.76, 37.64], 10);&lt;br /&gt;
        L.tileLayer(&#039;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#039;, {&lt;br /&gt;
            attribution: &#039;© OpenStreetMap contributors&#039;&lt;br /&gt;
        }).addTo(map);&lt;br /&gt;
&lt;br /&gt;
        friendsData.forEach(item =&amp;gt; {&lt;br /&gt;
            const [lat, lng] = item.coordinates.split(&#039; &#039;);&lt;br /&gt;
            const marker = L.marker([parseFloat(lat), parseFloat(lng)]).addTo(map);&lt;br /&gt;
            marker.bindPopup(`&lt;br /&gt;
                &amp;amp;lt;b&amp;amp;gt;${item.friend_name}&amp;amp;lt;/b&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;i&amp;amp;gt;${item.place}&amp;amp;lt;/i&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                ${item.post_text}&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;a href=&amp;quot;${item.post_url}&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;amp;gt;Открыть пост&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
            `);&lt;br /&gt;
        });&lt;br /&gt;
    &amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# requirements.txt&lt;br /&gt;
vk-api==5.107&lt;br /&gt;
requests==2.31.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45550</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45550"/>
		<updated>2026-03-27T06:32:59Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы [[API]] и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; [[Python]], [[JavaScript]], [[HTML]]/[[CSS]]&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки [[Python]]:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; [[VK API]], OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; [[GitHub]] Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Диаграмма работы приложения «Карта друзей»&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#mermaid: flowchart TB&lt;br /&gt;
    A[Начало] --&amp;gt; B(Получение токена VK API)&lt;br /&gt;
    B --&amp;gt; C(Запрос списка друзей)&lt;br /&gt;
    C --&amp;gt; D{Есть друзья?}&lt;br /&gt;
    D --&amp;gt;|Нет| E[Завершить]&lt;br /&gt;
    D --&amp;gt;|Да| F[Цикл по каждому другу]&lt;br /&gt;
    F --&amp;gt; G(Запрос последних 30 постов)&lt;br /&gt;
    G --&amp;gt; H{Пост содержит geo?}&lt;br /&gt;
    H --&amp;gt;|Нет| I[Следующий пост]&lt;br /&gt;
    I --&amp;gt; G&lt;br /&gt;
    H --&amp;gt;|Да| J(Сохранить координаты, имя, место, ссылку)&lt;br /&gt;
    J --&amp;gt; K{Все посты проверены?}&lt;br /&gt;
    K --&amp;gt;|Нет| I&lt;br /&gt;
    K --&amp;gt;|Да| L{Все друзья обработаны?}&lt;br /&gt;
    L --&amp;gt;|Нет| F&lt;br /&gt;
    L --&amp;gt;|Да| M(Сохранить данные в JSON-файл)&lt;br /&gt;
    M --&amp;gt; N(Открыть HTML-страницу с картой)&lt;br /&gt;
    N --&amp;gt; O(Загрузить JSON в JavaScript)&lt;br /&gt;
    O --&amp;gt; P(Отрисовать маркеры на карте)&lt;br /&gt;
    P --&amp;gt; Q(Клик по маркеру → всплывающее окно)&lt;br /&gt;
    Q --&amp;gt; R[Готово]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход работы над проектом&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 1. Создание страницы в вики и выбор темы&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 2. Изучение VK API и получение токена&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 3. Установка библиотеки и написание Python-скрипта&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Установила библиотеку vk_api через терминал:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_install.png|500px|center|thumb|Установка библиотеки vk_api]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Написала скрипт, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Авторизуется по токену&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Получает список друзей&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Для каждого друга запрашивает последние 30 постов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
            [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; собрано 18 постов с геометками у 30 обработанных друзей.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 4. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Загружает данные из JSON-файла&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Добавляет маркеры на карту&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    [[Файл:Json data.png|400px|center|thumb|Файл friends_geo.json]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; готовая интерактивная карта с точками всех найденных геометок.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 5. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала файл &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Map code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ИТОГОВЫЙ РЕЗУЛЬТАТ --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #eef2f5; padding: 20px; border-radius: 15px; margin: 30px 0; text-align: center; border-left: 4px solid #3498db;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;Итог проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;font-size: 18px;&amp;quot;&amp;gt;Создан работающий инструмент для сбора и визуализации геоданных из ВКонтакте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;23 друга обработано &amp;amp;nbsp;|&amp;amp;nbsp; 7 геометок собрано &amp;amp;nbsp;|&amp;amp;nbsp; 6 городов на карте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Аналитика собранных данных&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; padding: 15px; border-radius: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tr style=&amp;quot;background-color: #3598db; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 10px; text-align: left;&amp;quot;&amp;gt;Показатель&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 10px; text-align: left;&amp;quot;&amp;gt;Значение&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Всего друзей обработано&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;23&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Постов с геометками&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;7&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Уникальных мест&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;5&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Уникальных городов&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Самый популярный город&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Москва (4 метки)&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Самый частый тип места&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Кафе/рестораны&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ВЫВОДЫ --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Выводы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;В ходе работы над проектом я:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Научилась работать с VK API — получать токен, делать запросы, обрабатывать ответы.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Освоила парсинг JSON-данных и сохранение результатов в файл.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создала интерактивную карту на Leaflet и нанесла на нее реальные геоданные.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Поняла, как устроены современные веб-сервисы, которые собирают данные из разных источников.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Проект можно развивать дальше: добавить тепловую карту, сделать анализ популярных мест, подключить Яндекс.Карты с более детальными данными.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Полный исходный код приложения===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;▸ Показать полный код приложения&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# config.py&lt;br /&gt;
# Токен доступа VK API (получен через standalone-приложение)&lt;br /&gt;
&lt;br /&gt;
TOKEN = &amp;quot;vk1.a.мой_токен_здесь&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# main.py&lt;br /&gt;
import vk_api&lt;br /&gt;
from config import TOKEN&lt;br /&gt;
import json&lt;br /&gt;
import time&lt;br /&gt;
&lt;br /&gt;
# Авторизация&lt;br /&gt;
vk_session = vk_api.VkApi(token=TOKEN)&lt;br /&gt;
vk = vk_session.get_api()&lt;br /&gt;
&lt;br /&gt;
def get_friends_with_geo():&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    Получает список друзей и собирает их посты с геометками&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    print(&amp;quot;Получаю список друзей...&amp;quot;)&lt;br /&gt;
    friends = vk.friends.get(fields=[&#039;first_name&#039;, &#039;last_name&#039;])&lt;br /&gt;
    &lt;br /&gt;
    friends_data = []&lt;br /&gt;
    total_friends = friends[&#039;count&#039;]&lt;br /&gt;
    print(f&amp;quot;Найдено друзей: {total_friends}&amp;quot;)&lt;br /&gt;
    &lt;br /&gt;
    # Обрабатываем первых 30 друзей&lt;br /&gt;
    for i, friend in enumerate(friends[&#039;items&#039;][:30]):&lt;br /&gt;
        print(f&amp;quot;Обрабатываю друга {i+1}/30: {friend[&#039;first_name&#039;]} {friend[&#039;last_name&#039;]}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        try:&lt;br /&gt;
            # Получаем последние 50 постов друга&lt;br /&gt;
            posts = vk.wall.get(owner_id=friend[&#039;id&#039;], count=50)&lt;br /&gt;
            &lt;br /&gt;
            for post in posts[&#039;items&#039;]:&lt;br /&gt;
                if &#039;geo&#039; in post and post[&#039;geo&#039;]:&lt;br /&gt;
                    geo_data = {&lt;br /&gt;
                        &#039;friend_name&#039;: f&amp;quot;{friend[&#039;first_name&#039;]} {friend[&#039;last_name&#039;]}&amp;quot;,&lt;br /&gt;
                        &#039;friend_id&#039;: friend[&#039;id&#039;],&lt;br /&gt;
                        &#039;coordinates&#039;: post[&#039;geo&#039;][&#039;coordinates&#039;],&lt;br /&gt;
                        &#039;place&#039;: post[&#039;geo&#039;].get(&#039;place&#039;, {}).get(&#039;title&#039;, &#039;Без названия&#039;),&lt;br /&gt;
                        &#039;post_text&#039;: post.get(&#039;text&#039;, &#039;&#039;)[:100],&lt;br /&gt;
                        &#039;post_url&#039;: f&amp;quot;https://vk.com/wall{friend[&#039;id&#039;]}_{post[&#039;id&#039;]}&amp;quot;&lt;br /&gt;
                    }&lt;br /&gt;
                    friends_data.append(geo_data)&lt;br /&gt;
                    print(f&amp;quot;  Найдена геометка: {geo_data[&#039;coordinates&#039;]} - {geo_data[&#039;place&#039;]}&amp;quot;)&lt;br /&gt;
                    &lt;br /&gt;
        except Exception as e:&lt;br /&gt;
            print(f&amp;quot;  Ошибка при обработке: {e}&amp;quot;)&lt;br /&gt;
        &lt;br /&gt;
        time.sleep(0.5)  # пауза, чтобы не спамить API&lt;br /&gt;
    &lt;br /&gt;
    # Сохраняем результат&lt;br /&gt;
    with open(&#039;friends_geo.json&#039;, &#039;w&#039;, encoding=&#039;utf-8&#039;) as f:&lt;br /&gt;
        json.dump(friends_data, f, ensure_ascii=False, indent=4)&lt;br /&gt;
    &lt;br /&gt;
    print(f&amp;quot;\nГотово! Найдено {len(friends_data)} постов с геометками.&amp;quot;)&lt;br /&gt;
    return friends_data&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    get_friends_with_geo()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&lt;br /&gt;
# friends_geo.json (пример данных)&lt;br /&gt;
[&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Анна Смирнова&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 123456789,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;55.751244 37.618423&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Красная площадь&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Красота!&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall123456789_123&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;friend_name&amp;quot;: &amp;quot;Иван Петров&amp;quot;,&lt;br /&gt;
        &amp;quot;friend_id&amp;quot;: 987654321,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot;: &amp;quot;55.755814 37.617635&amp;quot;,&lt;br /&gt;
        &amp;quot;place&amp;quot;: &amp;quot;Парк Горького&amp;quot;,&lt;br /&gt;
        &amp;quot;post_text&amp;quot;: &amp;quot;Гуляем с друзьями&amp;quot;,&lt;br /&gt;
        &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall987654321_456&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
# map.html&lt;br /&gt;
&amp;amp;lt;!DOCTYPE html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;html&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;head&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;title&amp;amp;gt;Карта друзей&amp;amp;lt;/title&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;link rel=&amp;quot;stylesheet&amp;quot; href=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.css&amp;quot; /&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script src=&amp;quot;https://unpkg.com/leaflet@1.7.1/dist/leaflet.js&amp;quot;&amp;amp;gt;&amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;style&amp;amp;gt;&lt;br /&gt;
        body { margin: 0; padding: 0; }&lt;br /&gt;
        #map { width: 100%; height: 100vh; }&lt;br /&gt;
    &amp;amp;lt;/style&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/head&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;body&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;div id=&amp;quot;map&amp;quot;&amp;amp;gt;&amp;amp;lt;/div&amp;amp;gt;&lt;br /&gt;
    &amp;amp;lt;script&amp;amp;gt;&lt;br /&gt;
        const friendsData = [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;friend_name&amp;quot;: &amp;quot;Анна Смирнова&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: &amp;quot;55.751244 37.618423&amp;quot;,&lt;br /&gt;
                &amp;quot;place&amp;quot;: &amp;quot;Красная площадь&amp;quot;,&lt;br /&gt;
                &amp;quot;post_text&amp;quot;: &amp;quot;Красота!&amp;quot;,&lt;br /&gt;
                &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall123456789_123&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;friend_name&amp;quot;: &amp;quot;Иван Петров&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: &amp;quot;55.755814 37.617635&amp;quot;,&lt;br /&gt;
                &amp;quot;place&amp;quot;: &amp;quot;Парк Горького&amp;quot;,&lt;br /&gt;
                &amp;quot;post_text&amp;quot;: &amp;quot;Гуляем с друзьями&amp;quot;,&lt;br /&gt;
                &amp;quot;post_url&amp;quot;: &amp;quot;https://vk.com/wall987654321_456&amp;quot;&lt;br /&gt;
            }&lt;br /&gt;
        ];&lt;br /&gt;
&lt;br /&gt;
        const map = L.map(&#039;map&#039;).setView([55.76, 37.64], 10);&lt;br /&gt;
        L.tileLayer(&#039;https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png&#039;, {&lt;br /&gt;
            attribution: &#039;© OpenStreetMap contributors&#039;&lt;br /&gt;
        }).addTo(map);&lt;br /&gt;
&lt;br /&gt;
        friendsData.forEach(item =&amp;gt; {&lt;br /&gt;
            const [lat, lng] = item.coordinates.split(&#039; &#039;);&lt;br /&gt;
            const marker = L.marker([parseFloat(lat), parseFloat(lng)]).addTo(map);&lt;br /&gt;
            marker.bindPopup(`&lt;br /&gt;
                &amp;amp;lt;b&amp;amp;gt;${item.friend_name}&amp;amp;lt;/b&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;i&amp;amp;gt;${item.place}&amp;amp;lt;/i&amp;amp;gt;&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                ${item.post_text}&amp;amp;lt;br&amp;amp;gt;&lt;br /&gt;
                &amp;amp;lt;a href=&amp;quot;${item.post_url}&amp;quot; target=&amp;quot;_blank&amp;quot;&amp;amp;gt;Открыть пост&amp;amp;lt;/a&amp;amp;gt;&lt;br /&gt;
            `);&lt;br /&gt;
        });&lt;br /&gt;
    &amp;amp;lt;/script&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/body&amp;amp;gt;&lt;br /&gt;
&amp;amp;lt;/html&amp;amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;text&amp;quot;&amp;gt;&lt;br /&gt;
# requirements.txt&lt;br /&gt;
vk-api==5.107&lt;br /&gt;
requests==2.31.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45532</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45532"/>
		<updated>2026-03-27T06:19:50Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы [[API]] и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Диаграмма работы приложения «Карта друзей»&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#mermaid: flowchart TB&lt;br /&gt;
    A[Начало] --&amp;gt; B(Получение токена VK API)&lt;br /&gt;
    B --&amp;gt; C(Запрос списка друзей)&lt;br /&gt;
    C --&amp;gt; D{Есть друзья?}&lt;br /&gt;
    D --&amp;gt;|Нет| E[Завершить]&lt;br /&gt;
    D --&amp;gt;|Да| F[Цикл по каждому другу]&lt;br /&gt;
    F --&amp;gt; G(Запрос последних 30 постов)&lt;br /&gt;
    G --&amp;gt; H{Пост содержит geo?}&lt;br /&gt;
    H --&amp;gt;|Нет| I[Следующий пост]&lt;br /&gt;
    I --&amp;gt; G&lt;br /&gt;
    H --&amp;gt;|Да| J(Сохранить координаты, имя, место, ссылку)&lt;br /&gt;
    J --&amp;gt; K{Все посты проверены?}&lt;br /&gt;
    K --&amp;gt;|Нет| I&lt;br /&gt;
    K --&amp;gt;|Да| L{Все друзья обработаны?}&lt;br /&gt;
    L --&amp;gt;|Нет| F&lt;br /&gt;
    L --&amp;gt;|Да| M(Сохранить данные в JSON-файл)&lt;br /&gt;
    M --&amp;gt; N(Открыть HTML-страницу с картой)&lt;br /&gt;
    N --&amp;gt; O(Загрузить JSON в JavaScript)&lt;br /&gt;
    O --&amp;gt; P(Отрисовать маркеры на карте)&lt;br /&gt;
    P --&amp;gt; Q(Клик по маркеру → всплывающее окно)&lt;br /&gt;
    Q --&amp;gt; R[Готово]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход работы над проектом&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 1. Создание страницы в вики и выбор темы&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте. Получила комментарий от преподавателя, исправила категорию на «Работа с API».&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 2. Изучение VK API и получение токена&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 3. Установка библиотеки и написание Python-скрипта&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Установила библиотеку vk_api через терминал:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_install.png|500px|center|thumb|Установка библиотеки vk_api]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Написала скрипт, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Авторизуется по токену&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Получает список друзей&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Для каждого друга запрашивает последние 30 постов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
            [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; собрано 18 постов с геометками у 30 обработанных друзей.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 4. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Загружает данные из JSON-файла&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Добавляет маркеры на карту&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    [[Файл:Json data.png|400px|center|thumb|Файл friends_geo.json]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; готовая интерактивная карта с точками всех найденных геометок.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 5. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала файл &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Map code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ИТОГОВЫЙ РЕЗУЛЬТАТ --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #eef2f5; padding: 20px; border-radius: 15px; margin: 30px 0; text-align: center; border-left: 4px solid #3498db;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;Итог проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;font-size: 18px;&amp;quot;&amp;gt;Создан работающий инструмент для сбора и визуализации геоданных из ВКонтакте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;23 друга обработано &amp;amp;nbsp;|&amp;amp;nbsp; 7 геометок собрано &amp;amp;nbsp;|&amp;amp;nbsp; 6 городов на карте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Аналитика собранных данных&amp;lt;/h3&amp;gt;&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; padding: 15px; border-radius: 10px;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tr style=&amp;quot;background-color: #3598db; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 10px; text-align: left;&amp;quot;&amp;gt;Показатель&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 10px; text-align: left;&amp;quot;&amp;gt;Значение&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Всего друзей обработано&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;23&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Постов с геометками&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;7&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Уникальных мест&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;5&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Уникальных городов&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;3&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr style=&amp;quot;border-bottom: 1px solid #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Самый популярный город&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Москва (4 метки)&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
         &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Самый частый тип места&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px;&amp;quot;&amp;gt;Кафе/рестораны&amp;lt;/td&amp;gt;&lt;br /&gt;
         &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ВЫВОДЫ --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Выводы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;В ходе работы над проектом я:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Научилась работать с VK API — получать токен, делать запросы, обрабатывать ответы.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Освоила парсинг JSON-данных и сохранение результатов в файл.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создала интерактивную карту на Leaflet и нанесла на нее реальные геоданные.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Поняла, как устроены современные веб-сервисы, которые собирают данные из разных источников.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Проект можно развивать дальше: добавить тепловую карту, сделать анализ популярных мест, подключить Яндекс.Карты с более детальными данными.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45063</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45063"/>
		<updated>2026-03-22T19:50:43Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы [[API]] и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Диаграмма работы приложения «Карта друзей»&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#mermaid: flowchart TB&lt;br /&gt;
    A[Начало] --&amp;gt; B(Получение токена VK API)&lt;br /&gt;
    B --&amp;gt; C(Запрос списка друзей)&lt;br /&gt;
    C --&amp;gt; D{Есть друзья?}&lt;br /&gt;
    D --&amp;gt;|Нет| E[Завершить]&lt;br /&gt;
    D --&amp;gt;|Да| F[Цикл по каждому другу]&lt;br /&gt;
    F --&amp;gt; G(Запрос последних 30 постов)&lt;br /&gt;
    G --&amp;gt; H{Пост содержит geo?}&lt;br /&gt;
    H --&amp;gt;|Нет| I[Следующий пост]&lt;br /&gt;
    I --&amp;gt; G&lt;br /&gt;
    H --&amp;gt;|Да| J(Сохранить координаты, имя, место, ссылку)&lt;br /&gt;
    J --&amp;gt; K{Все посты проверены?}&lt;br /&gt;
    K --&amp;gt;|Нет| I&lt;br /&gt;
    K --&amp;gt;|Да| L{Все друзья обработаны?}&lt;br /&gt;
    L --&amp;gt;|Нет| F&lt;br /&gt;
    L --&amp;gt;|Да| M(Сохранить данные в JSON-файл)&lt;br /&gt;
    M --&amp;gt; N(Открыть HTML-страницу с картой)&lt;br /&gt;
    N --&amp;gt; O(Загрузить JSON в JavaScript)&lt;br /&gt;
    O --&amp;gt; P(Отрисовать маркеры на карте)&lt;br /&gt;
    P --&amp;gt; Q(Клик по маркеру → всплывающее окно)&lt;br /&gt;
    Q --&amp;gt; R[Готово]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход работы над проектом&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 1. Создание страницы в вики и выбор темы&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте. Получила комментарий от преподавателя, исправила категорию на «Работа с API».&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 2. Изучение VK API и получение токена&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 3. Установка библиотеки и написание Python-скрипта&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Установила библиотеку vk_api через терминал:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_install.png|500px|center|thumb|Установка библиотеки vk_api]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Написала скрипт, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Авторизуется по токену&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Получает список друзей&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Для каждого друга запрашивает последние 30 постов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
            [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; собрано 18 постов с геометками у 30 обработанных друзей.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 4. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Загружает данные из JSON-файла&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Добавляет маркеры на карту&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    [[Файл:Json data.png|400px|center|thumb|Файл friends_geo.json]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; готовая интерактивная карта с точками всех найденных геометок.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 5. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала файл &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Map code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ИТОГОВЫЙ РЕЗУЛЬТАТ --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #eef2f5; padding: 20px; border-radius: 15px; margin: 30px 0; text-align: center; border-left: 4px solid #3498db;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;Итог проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;font-size: 18px;&amp;quot;&amp;gt;Создан работающий инструмент для сбора и визуализации геоданных из ВКонтакте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;23 друга обработано &amp;amp;nbsp;|&amp;amp;nbsp; 7 геометок собрано &amp;amp;nbsp;|&amp;amp;nbsp; 6 городов на карте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ВЫВОДЫ --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Выводы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;В ходе работы над проектом я:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Научилась работать с VK API — получать токен, делать запросы, обрабатывать ответы.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Освоила парсинг JSON-данных и сохранение результатов в файл.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создала интерактивную карту на Leaflet и нанесла на нее реальные геоданные.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Поняла, как устроены современные веб-сервисы, которые собирают данные из разных источников.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Проект можно развивать дальше: добавить тепловую карту, сделать анализ популярных мест, подключить Яндекс.Карты с более детальными данными.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45062</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45062"/>
		<updated>2026-03-22T17:25:38Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Диаграмма работы приложения «Карта друзей»&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{#mermaid: flowchart TB&lt;br /&gt;
    A[Начало] --&amp;gt; B(Получение токена VK API)&lt;br /&gt;
    B --&amp;gt; C(Запрос списка друзей)&lt;br /&gt;
    C --&amp;gt; D{Есть друзья?}&lt;br /&gt;
    D --&amp;gt;|Нет| E[Завершить]&lt;br /&gt;
    D --&amp;gt;|Да| F[Цикл по каждому другу]&lt;br /&gt;
    F --&amp;gt; G(Запрос последних 30 постов)&lt;br /&gt;
    G --&amp;gt; H{Пост содержит geo?}&lt;br /&gt;
    H --&amp;gt;|Нет| I[Следующий пост]&lt;br /&gt;
    I --&amp;gt; G&lt;br /&gt;
    H --&amp;gt;|Да| J(Сохранить координаты, имя, место, ссылку)&lt;br /&gt;
    J --&amp;gt; K{Все посты проверены?}&lt;br /&gt;
    K --&amp;gt;|Нет| I&lt;br /&gt;
    K --&amp;gt;|Да| L{Все друзья обработаны?}&lt;br /&gt;
    L --&amp;gt;|Нет| F&lt;br /&gt;
    L --&amp;gt;|Да| M(Сохранить данные в JSON-файл)&lt;br /&gt;
    M --&amp;gt; N(Открыть HTML-страницу с картой)&lt;br /&gt;
    N --&amp;gt; O(Загрузить JSON в JavaScript)&lt;br /&gt;
    O --&amp;gt; P(Отрисовать маркеры на карте)&lt;br /&gt;
    P --&amp;gt; Q(Клик по маркеру → всплывающее окно)&lt;br /&gt;
    Q --&amp;gt; R[Готово]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход работы над проектом&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 1. Создание страницы в вики и выбор темы&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте. Получила комментарий от преподавателя, исправила категорию на «Работа с API».&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 2. Изучение VK API и получение токена&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 3. Установка библиотеки и написание Python-скрипта&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Установила библиотеку vk_api через терминал:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_install.png|500px|center|thumb|Установка библиотеки vk_api]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Написала скрипт, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Авторизуется по токену&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Получает список друзей&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Для каждого друга запрашивает последние 30 постов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
            [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; собрано 18 постов с геометками у 30 обработанных друзей.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 4. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Загружает данные из JSON-файла&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Добавляет маркеры на карту&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    [[Файл:Json data.png|400px|center|thumb|Файл friends_geo.json]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; готовая интерактивная карта с точками всех найденных геометок.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 5. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала файл &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Map code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ИТОГОВЫЙ РЕЗУЛЬТАТ --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #eef2f5; padding: 20px; border-radius: 15px; margin: 30px 0; text-align: center; border-left: 4px solid #3498db;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;Итог проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;font-size: 18px;&amp;quot;&amp;gt;Создан работающий инструмент для сбора и визуализации геоданных из ВКонтакте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;23 друга обработано &amp;amp;nbsp;|&amp;amp;nbsp; 7 геометок собрано &amp;amp;nbsp;|&amp;amp;nbsp; 6 городов на карте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ВЫВОДЫ --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Выводы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;В ходе работы над проектом я:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Научилась работать с VK API — получать токен, делать запросы, обрабатывать ответы.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Освоила парсинг JSON-данных и сохранение результатов в файл.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создала интерактивную карту на Leaflet и нанесла на нее реальные геоданные.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Поняла, как устроены современные веб-сервисы, которые собирают данные из разных источников.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Проект можно развивать дальше: добавить тепловую карту, сделать анализ популярных мест, подключить Яндекс.Карты с более детальными данными.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45061</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45061"/>
		<updated>2026-03-22T17:17:02Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Группа:&amp;lt;/b&amp;gt; АДЭУ-221&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; Выполнен&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход работы над проектом&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 1. Создание страницы в вики и выбор темы&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте. Получила комментарий от преподавателя, исправила категорию на «Работа с API».&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 2. Изучение VK API и получение токена&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 3. Установка библиотеки и написание Python-скрипта&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Установила библиотеку vk_api через терминал:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_install.png|500px|center|thumb|Установка библиотеки vk_api]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Написала скрипт, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Авторизуется по токену&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Получает список друзей&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Для каждого друга запрашивает последние 30 постов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
            [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; собрано 18 постов с геометками у 30 обработанных друзей.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 4. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Загружает данные из JSON-файла&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Добавляет маркеры на карту&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    [[Файл:Json data.png|400px|center|thumb|Файл friends_geo.json]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; готовая интерактивная карта с точками всех найденных геометок.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 5. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала файл &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Map code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ИТОГОВЫЙ РЕЗУЛЬТАТ --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #eef2f5; padding: 20px; border-radius: 15px; margin: 30px 0; text-align: center; border-left: 4px solid #3498db;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;Итог проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;font-size: 18px;&amp;quot;&amp;gt;Создан работающий инструмент для сбора и визуализации геоданных из ВКонтакте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;23 друга обработано &amp;amp;nbsp;|&amp;amp;nbsp; 7 геометок собрано &amp;amp;nbsp;|&amp;amp;nbsp; 6 городов на карте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ВЫВОДЫ --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Выводы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;В ходе работы над проектом я:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Научилась работать с VK API — получать токен, делать запросы, обрабатывать ответы.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Освоила парсинг JSON-данных и сохранение результатов в файл.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создала интерактивную карту на Leaflet и нанесла на нее реальные геоданные.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Поняла, как устроены современные веб-сервисы, которые собирают данные из разных источников.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Проект можно развивать дальше: добавить тепловую карту, сделать анализ популярных мест, подключить Яндекс.Карты с более детальными данными.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45060</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45060"/>
		<updated>2026-03-22T17:16:09Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход работы над проектом&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 1. Создание страницы в вики и выбор темы&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте. Получила комментарий от преподавателя, исправила категорию на «Работа с API».&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 2. Изучение VK API и получение токена&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 3. Установка библиотеки и написание Python-скрипта&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Установила библиотеку vk_api через терминал:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_install.png|500px|center|thumb|Установка библиотеки vk_api]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Написала скрипт, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Авторизуется по токену&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Получает список друзей&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Для каждого друга запрашивает последние 30 постов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
            [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; собрано 18 постов с геометками у 30 обработанных друзей.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 4. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Загружает данные из JSON-файла&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Добавляет маркеры на карту&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    [[Файл:Json data.png|400px|center|thumb|Файл friends_geo.json]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; готовая интерактивная карта с точками всех найденных геометок.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 5. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала файл &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Map code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ИТОГОВЫЙ РЕЗУЛЬТАТ --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #eef2f5; padding: 20px; border-radius: 15px; margin: 30px 0; text-align: center; border-left: 4px solid #3498db;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: black;&amp;quot;&amp;gt;Итог проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;font-size: 18px;&amp;quot;&amp;gt;Создан работающий инструмент для сбора и визуализации геоданных из ВКонтакте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;23 друга обработано &amp;amp;nbsp;|&amp;amp;nbsp; 7 геометок собрано &amp;amp;nbsp;|&amp;amp;nbsp; 6 городов на карте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ВЫВОДЫ --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Выводы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;В ходе работы над проектом я:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Научилась работать с VK API — получать токен, делать запросы, обрабатывать ответы.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Освоила парсинг JSON-данных и сохранение результатов в файл.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создала интерактивную карту на Leaflet и нанесла на нее реальные геоданные.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Поняла, как устроены современные веб-сервисы, которые собирают данные из разных источников.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Проект можно развивать дальше: добавить тепловую карту, сделать анализ популярных мест, подключить Яндекс.Карты с более детальными данными.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45059</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45059"/>
		<updated>2026-03-22T17:14:35Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход работы над проектом&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 1. Создание страницы в вики и выбор темы&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте. Получила комментарий от преподавателя, исправила категорию на «Работа с API».&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 2. Изучение VK API и получение токена&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 3. Установка библиотеки и написание Python-скрипта&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Установила библиотеку vk_api через терминал:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_install.png|500px|center|thumb|Установка библиотеки vk_api]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Написала скрипт, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Авторизуется по токену&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Получает список друзей&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Для каждого друга запрашивает последние 30 постов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
            [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; собрано 18 постов с геометками у 30 обработанных друзей.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 4. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Загружает данные из JSON-файла&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Добавляет маркеры на карту&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    [[Файл:Json data.png|400px|center|thumb|Файл friends_geo.json]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; готовая интерактивная карта с точками всех найденных геометок.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 5. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала файл &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Map code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ИТОГОВЫЙ РЕЗУЛЬТАТ --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); padding: 20px; border-radius: 15px; margin: 30px 0; color: white; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h3 style=&amp;quot;color: white;&amp;quot;&amp;gt;Итог проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
        &amp;lt;p style=&amp;quot;font-size: 18px;&amp;quot;&amp;gt;Создан работающий инструмент для сбора и визуализации геоданных из ВКонтакте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;23 друга обработано &amp;amp;nbsp;|&amp;amp;nbsp; 7 геометок собрано &amp;amp;nbsp;|&amp;amp;nbsp; 6 городов на карте&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;small&amp;gt;Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»&amp;lt;/small&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ВЫВОДЫ --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Выводы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;В ходе работы над проектом я:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Научилась работать с VK API — получать токен, делать запросы, обрабатывать ответы.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Освоила парсинг JSON-данных и сохранение результатов в файл.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создала интерактивную карту на Leaflet и нанесла на нее реальные геоданные.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Поняла, как устроены современные веб-сервисы, которые собирают данные из разных источников.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Проект можно развивать дальше: добавить тепловую карту, сделать анализ популярных мест, подключить Яндекс.Карты с более детальными данными.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- ПРИМЕР КОДА --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Пример кода (Python)&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;pre style=&amp;quot;background-color: #f4f4f4; padding: 15px; border-radius: 8px; overflow-x: auto;&amp;quot;&amp;gt;&amp;lt;code&amp;gt;&lt;br /&gt;
import vk_api&lt;br /&gt;
&lt;br /&gt;
# Получаем посты друга и проверяем геометки&lt;br /&gt;
posts = vk.wall.get(owner_id=friend_id, count=50)&lt;br /&gt;
&lt;br /&gt;
for post in posts[&#039;items&#039;]:&lt;br /&gt;
    if &#039;geo&#039; in post and post[&#039;geo&#039;]:&lt;br /&gt;
        coordinates = post[&#039;geo&#039;][&#039;coordinates&#039;]&lt;br /&gt;
        print(f&amp;quot;Найдена геометка: {coordinates}&amp;quot;)&lt;br /&gt;
    &amp;lt;/code&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45058</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45058"/>
		<updated>2026-03-22T17:11:30Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход работы над проектом&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 1. Создание страницы в вики и выбор темы&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте. Получила комментарий от преподавателя, исправила категорию на «Работа с API».&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 2. Изучение VK API и получение токена&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 3. Установка библиотеки и написание Python-скрипта&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Установила библиотеку vk_api через терминал:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_install.png|500px|center|thumb|Установка библиотеки vk_api]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Написала скрипт, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Авторизуется по токену&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Получает список друзей&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Для каждого друга запрашивает последние 30 постов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
            [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; собрано 18 постов с геометками у 30 обработанных друзей.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 4. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Загружает данные из JSON-файла&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Добавляет маркеры на карту&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    [[Файл:Json data.png|400px|center|thumb|Файл friends_geo.json]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; готовая интерактивная карта с точками всех найденных геометок.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 5. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала файл &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Map code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45057</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45057"/>
		<updated>2026-03-22T17:08:56Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📁 Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход работы над проектом&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 1. Создание страницы в вики и выбор темы&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте. Получила комментарий от преподавателя, исправила категорию на «Работа с API».&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 2. Изучение VK API и получение токена&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 3. Установка библиотеки и написание Python-скрипта&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Установила библиотеку vk_api через терминал:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_install.png|500px|center|thumb|Установка библиотеки vk_api]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Написала скрипт, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Авторизуется по токену&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Получает список друзей&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Для каждого друга запрашивает последние 30 постов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
            [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; собрано 18 постов с геометками у 30 обработанных друзей.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 4. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Загружает данные из JSON-файла&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Добавляет маркеры на карту&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    [[Файл:Json data.png|400px|center|thumb|Файл friends_geo.json]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; готовая интерактивная карта с точками всех найденных геометок.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 5. Оформление страницы в вики&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Добавила на страницу проекта:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Блок с результатами (сколько друзей, сколько меток, сколько городов)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Скриншот карты&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Обновлённую таблицу хода выполнения&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Пример кода на Python&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Выводы и планы по развитию&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Удалила лишнюю форму DigitalTool, оставила только категорию «Работа с API».&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 6. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала файл &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Map code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Вставь сюда скриншот: 1) код карты, 2) финальный вид карты в браузере&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 7. Коммуникация с преподавателем и завершение проекта&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Map code1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    [[Файл:Карта_друзей.png|мини]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45056</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45056"/>
		<updated>2026-03-22T17:06:29Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Структура проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📁 Структура проекта&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход работы над проектом&amp;lt;/h3&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 1. Создание страницы в вики и выбор темы&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте. Получила комментарий от преподавателя, исправила категорию на «Работа с API».&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 2. Изучение VK API и получение токена&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 3. Установка библиотеки и написание Python-скрипта&amp;lt;/h4&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Установила библиотеку vk_api через терминал:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_install.png|500px|center|thumb|Установка библиотеки vk_api]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;Написала скрипт, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Авторизуется по токену&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Получает список друзей&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Для каждого друга запрашивает последние 30 постов&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Проверяет наличие поля &amp;lt;code&amp;gt;geo&amp;lt;/code&amp;gt; в каждом посте&amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;/ul&amp;gt;&lt;br /&gt;
        &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            [[Файл:Terminal_result1.png|400px|center|thumb|Процесс поиска данных в терминале]]&lt;br /&gt;
            [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]]&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; собрано 7 постов с геометками у 23 обработанных друзей.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 4. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Загружает данные из JSON-файла&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Разбирает координаты (формат &amp;quot;широта долгота&amp;quot;)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Добавляет маркеры на карту&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    [[Файл:Json data.png|400px|center|thumb|Файл friends_geo.json]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Результат:&amp;lt;/b&amp;gt; готовая интерактивная карта с точками всех найденных геометок.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 5. Оформление страницы в вики&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Добавила на страницу проекта:&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Блок с результатами (сколько друзей, сколько меток, сколько городов)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Скриншот карты&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Обновлённую таблицу хода выполнения&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Пример кода на Python&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Выводы и планы по развитию&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Удалила лишнюю форму DigitalTool, оставила только категорию «Работа с API».&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 6. Создание интерактивной карты&amp;lt;/h4&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Создала файл &amp;lt;code&amp;gt;map.html&amp;lt;/code&amp;gt; с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;text-align: center; margin: 15px 0;&amp;quot;&amp;gt;&lt;br /&gt;
        [[Файл:Map code1.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]]&lt;br /&gt;
        [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]]&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Вставь сюда скриншот: 1) код карты, 2) финальный вид карты в браузере&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;h4 style=&amp;quot;color: #3498db;&amp;quot;&amp;gt;Этап 7. Коммуникация с преподавателем и завершение проекта&amp;lt;/h4&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Файл:Map code1.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    [[Файл:Карта_друзей.png|мини]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Terminal_install.png&amp;diff=45055</id>
		<title>Файл:Terminal install.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Terminal_install.png&amp;diff=45055"/>
		<updated>2026-03-22T17:05:12Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Project_folder.png&amp;diff=45054</id>
		<title>Файл:Project folder.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Project_folder.png&amp;diff=45054"/>
		<updated>2026-03-22T17:04:15Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Json_data.png&amp;diff=45053</id>
		<title>Файл:Json data.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Json_data.png&amp;diff=45053"/>
		<updated>2026-03-22T16:57:31Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Terminal_result2.png&amp;diff=45052</id>
		<title>Файл:Terminal result2.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Terminal_result2.png&amp;diff=45052"/>
		<updated>2026-03-22T16:56:13Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Terminal_result1.png&amp;diff=45051</id>
		<title>Файл:Terminal result1.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Terminal_result1.png&amp;diff=45051"/>
		<updated>2026-03-22T16:55:57Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Map_result.png&amp;diff=45050</id>
		<title>Файл:Map result.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Map_result.png&amp;diff=45050"/>
		<updated>2026-03-22T16:53:51Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Map_code2.png&amp;diff=45049</id>
		<title>Файл:Map code2.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Map_code2.png&amp;diff=45049"/>
		<updated>2026-03-22T16:53:10Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Map_code1.png&amp;diff=45048</id>
		<title>Файл:Map code1.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Map_code1.png&amp;diff=45048"/>
		<updated>2026-03-22T16:51:16Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45047</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45047"/>
		<updated>2026-03-22T16:27:44Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ход работы (прогресс) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ход выполнения&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tr style=&amp;quot;background-color: #3498db; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Этап&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Статус&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Комментарий&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Создание страницы проекта в вики&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Страница зарегистрирована в форме DigitalTool&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Получение токена VK API&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Написание скрипта сбора данных&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ В процессе&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ссылки (пока пусто) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Ссылки&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на репозиторий появится после создания GitHub&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на демо-карту появится после публикации&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Раздел для заметок --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;Заметки по разработке&amp;lt;/h3&amp;gt;&lt;br /&gt;
    [[Файл:Карта_друзей.png|мини]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Здесь будет появляться полезная информация, ход работы и примеры кода. Возможно, что-то еще интересное &amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45046</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45046"/>
		<updated>2026-03-22T16:26:56Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🎯 Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📋 Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;⚙️ Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ход работы (прогресс) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🚀 Ход выполнения&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tr style=&amp;quot;background-color: #3498db; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Этап&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Статус&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Комментарий&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Создание страницы проекта в вики&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Страница зарегистрирована в форме DigitalTool&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Получение токена VK API&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Написание скрипта сбора данных&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ В процессе&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ссылки (пока пусто) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🔗 Ссылки&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на репозиторий появится после создания GitHub&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на демо-карту появится после публикации&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Раздел для заметок --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📝 Заметки по разработке&amp;lt;/h3&amp;gt;&lt;br /&gt;
    [[Файл:Карта_друзей.png|мини]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Здесь будет появляться полезная информация, ход работы и примеры кода. Возможно, что-то еще интересное 🗺️&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9_(API_%D1%81%D0%BE%D1%86._%D1%81%D0%B5%D1%82%D0%B5%D0%B9)&amp;diff=45045</id>
		<title>Карта друзей (API соц. сетей)</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9_(API_%D1%81%D0%BE%D1%86._%D1%81%D0%B5%D1%82%D0%B5%D0%B9)&amp;diff=45045"/>
		<updated>2026-03-22T16:23:47Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: MukhanovaAI переименовал страницу Карта друзей (API соц. сетей) в Карта друзей&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Карта друзей]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45044</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=45044"/>
		<updated>2026-03-22T16:23:47Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: MukhanovaAI переименовал страницу Карта друзей (API соц. сетей) в Карта друзей&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DigitalTool&lt;br /&gt;
|Description=Карта друзей на основе API. &lt;br /&gt;
Интерактивная карта, отображающая геолокацию публичных постов друзей из ВКонтакте. Проект демонстрирует работу с API социальных сетей и визуализацию геоданных.&lt;br /&gt;
|Affordances=Сбор публичных постов с геометками через VK API. Сохранение координат в JSON. Визуализация точек на интерактивной карте. Отображение информации о месте и авторе поста при клике на маркер.&lt;br /&gt;
|Difficult=Требуется токен доступа VK (с ограниченным сроком жизни). Работает только с публичными постами (не со всеми друзьями). Зависит от стабильности API ВКонтакте. Не предназначен для слежки в реальном времени, только для анализа исторических открытых данных.&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Большие данные, Картография, Статистика, Моделирование&lt;br /&gt;
|Область применения=Учебный проект&lt;br /&gt;
|End users=Учащиеся, Разработчики&lt;br /&gt;
|Developer=Муханова Анна АДЭУ-221&lt;br /&gt;
|launch year=2026&lt;br /&gt;
|distant_collab=Нет&lt;br /&gt;
|Language_Ru_Eng=Русский, Python/JavaScript&lt;br /&gt;
|AI=Нет&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🎯 Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📋 Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;⚙️ Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ход работы (прогресс) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🚀 Ход выполнения&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tr style=&amp;quot;background-color: #3498db; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Этап&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Статус&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Комментарий&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Создание страницы проекта в вики&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Страница зарегистрирована в форме DigitalTool&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Получение токена VK API&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Написание скрипта сбора данных&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ В процессе&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ссылки (пока пусто) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🔗 Ссылки&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на репозиторий появится после создания GitHub&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на демо-карту появится после публикации&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Раздел для заметок --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📝 Заметки по разработке&amp;lt;/h3&amp;gt;&lt;br /&gt;
    [[Файл:Карта_друзей.png|мини]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Здесь будет появляться полезная информация, ход работы и примеры кода. Возможно, что-то еще интересное 🗺️&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:MukhanovaAI&amp;diff=45043</id>
		<title>Обсуждение участника:MukhanovaAI</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:MukhanovaAI&amp;diff=45043"/>
		<updated>2026-03-22T16:23:02Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: /* Ответ на комментарий */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Карта друзей (API соц. сетей) ==&lt;br /&gt;
&lt;br /&gt;
[[Карта друзей (API соц. сетей)]] - хороший по замыслу, только Вы его почему-то в категорию цифровые средства записали. Это нестрашно, поправим потом, просто чтобы категории не путать. Успеха! --[[Участник:Patarakin|Patarakin]] ([[Обсуждение участника:Patarakin|обсуждение]]) 17:20, 28 февраля 2026 (MSK)&lt;br /&gt;
&lt;br /&gt;
Спасибо за комментарий!&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:MukhanovaAI&amp;diff=44601</id>
		<title>Обсуждение участника:MukhanovaAI</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5_%D1%83%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA%D0%B0:MukhanovaAI&amp;diff=44601"/>
		<updated>2026-02-28T20:32:09Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: /* Ответ на комментарий */ новая тема&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Карта друзей (API соц. сетей) ==&lt;br /&gt;
&lt;br /&gt;
[[Карта друзей (API соц. сетей)]] - хороший по замыслу, только Вы его почему-то в категорию цифровые средства записали. Это нестрашно, поправим потом, просто чтобы категории не путать. Успеха! --[[Участник:Patarakin|Patarakin]] ([[Обсуждение участника:Patarakin|обсуждение]]) 17:20, 28 февраля 2026 (MSK)&lt;br /&gt;
&lt;br /&gt;
== Ответ на комментарий ==&lt;br /&gt;
&lt;br /&gt;
Спасибо за комментарий! &lt;br /&gt;
&lt;br /&gt;
Я попыталась исправить категорию.&lt;br /&gt;
Рада, что замысел понравился. Буду дальше работать над проектом.&lt;br /&gt;
&lt;br /&gt;
С уважением, Анна Муханова&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44600</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44600"/>
		<updated>2026-02-28T20:25:50Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DigitalTool&lt;br /&gt;
|Description=Карта друзей на основе API. &lt;br /&gt;
Интерактивная карта, отображающая геолокацию публичных постов друзей из ВКонтакте. Проект демонстрирует работу с API социальных сетей и визуализацию геоданных.&lt;br /&gt;
|Affordances=Сбор публичных постов с геометками через VK API. Сохранение координат в JSON. Визуализация точек на интерактивной карте. Отображение информации о месте и авторе поста при клике на маркер.&lt;br /&gt;
|Difficult=Требуется токен доступа VK (с ограниченным сроком жизни). Работает только с публичными постами (не со всеми друзьями). Зависит от стабильности API ВКонтакте. Не предназначен для слежки в реальном времени, только для анализа исторических открытых данных.&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Большие данные, Картография, Статистика, Моделирование&lt;br /&gt;
|Область применения=Учебный проект&lt;br /&gt;
|End users=Учащиеся, Разработчики&lt;br /&gt;
|Developer=Муханова Анна АДЭУ-221&lt;br /&gt;
|launch year=2026&lt;br /&gt;
|distant_collab=Нет&lt;br /&gt;
|Language_Ru_Eng=Русский, Python/JavaScript&lt;br /&gt;
|AI=Нет&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🎯 Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📋 Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;⚙️ Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ход работы (прогресс) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🚀 Ход выполнения&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tr style=&amp;quot;background-color: #3498db; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Этап&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Статус&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Комментарий&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Создание страницы проекта в вики&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Страница зарегистрирована в форме DigitalTool&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Получение токена VK API&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Написание скрипта сбора данных&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ В процессе&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ссылки (пока пусто) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🔗 Ссылки&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на репозиторий появится после создания GitHub&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на демо-карту появится после публикации&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Раздел для заметок --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📝 Заметки по разработке&amp;lt;/h3&amp;gt;&lt;br /&gt;
    [[Файл:Карта_друзей.png|мини]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Здесь будет появляться полезная информация, ход работы и примеры кода. Возможно, что-то еще интересное 🗺️&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44599</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44599"/>
		<updated>2026-02-28T20:25:37Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{&lt;br /&gt;
|Description=Карта друзей на основе API. &lt;br /&gt;
Интерактивная карта, отображающая геолокацию публичных постов друзей из ВКонтакте. Проект демонстрирует работу с API социальных сетей и визуализацию геоданных.&lt;br /&gt;
|Affordances=Сбор публичных постов с геометками через VK API. Сохранение координат в JSON. Визуализация точек на интерактивной карте. Отображение информации о месте и авторе поста при клике на маркер.&lt;br /&gt;
|Difficult=Требуется токен доступа VK (с ограниченным сроком жизни). Работает только с публичными постами (не со всеми друзьями). Зависит от стабильности API ВКонтакте. Не предназначен для слежки в реальном времени, только для анализа исторических открытых данных.&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Большие данные, Картография, Статистика, Моделирование&lt;br /&gt;
|Область применения=Учебный проект&lt;br /&gt;
|End users=Учащиеся, Разработчики&lt;br /&gt;
|Developer=Муханова Анна АДЭУ-221&lt;br /&gt;
|launch year=2026&lt;br /&gt;
|distant_collab=Нет&lt;br /&gt;
|Language_Ru_Eng=Русский, Python/JavaScript&lt;br /&gt;
|AI=Нет&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🎯 Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📋 Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;⚙️ Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ход работы (прогресс) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🚀 Ход выполнения&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tr style=&amp;quot;background-color: #3498db; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Этап&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Статус&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Комментарий&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Создание страницы проекта в вики&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Страница зарегистрирована в форме DigitalTool&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Получение токена VK API&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Написание скрипта сбора данных&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ В процессе&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ссылки (пока пусто) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🔗 Ссылки&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на репозиторий появится после создания GitHub&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на демо-карту появится после публикации&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Раздел для заметок --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📝 Заметки по разработке&amp;lt;/h3&amp;gt;&lt;br /&gt;
    [[Файл:Карта_друзей.png|мини]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Здесь будет появляться полезная информация, ход работы и примеры кода. Возможно, что-то еще интересное 🗺️&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44598</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44598"/>
		<updated>2026-02-28T20:19:13Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DigitalTool&lt;br /&gt;
|Description=Карта друзей на основе API. &lt;br /&gt;
Интерактивная карта, отображающая геолокацию публичных постов друзей из ВКонтакте. Проект демонстрирует работу с API социальных сетей и визуализацию геоданных.&lt;br /&gt;
|Affordances=Сбор публичных постов с геометками через VK API. Сохранение координат в JSON. Визуализация точек на интерактивной карте. Отображение информации о месте и авторе поста при клике на маркер.&lt;br /&gt;
|Difficult=Требуется токен доступа VK (с ограниченным сроком жизни). Работает только с публичными постами (не со всеми друзьями). Зависит от стабильности API ВКонтакте. Не предназначен для слежки в реальном времени, только для анализа исторических открытых данных.&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Большие данные, Картография, Статистика, Моделирование&lt;br /&gt;
|Область применения=Учебный проект&lt;br /&gt;
|End users=Учащиеся, Разработчики&lt;br /&gt;
|Developer=Муханова Анна АДЭУ-221&lt;br /&gt;
|launch year=2026&lt;br /&gt;
|distant_collab=Нет&lt;br /&gt;
|Language_Ru_Eng=Русский, Python/JavaScript&lt;br /&gt;
|AI=Нет&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🎯 Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📋 Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;⚙️ Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ход работы (прогресс) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🚀 Ход выполнения&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tr style=&amp;quot;background-color: #3498db; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Этап&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Статус&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Комментарий&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Создание страницы проекта в вики&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Страница зарегистрирована в форме DigitalTool&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Получение токена VK API&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Написание скрипта сбора данных&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ В процессе&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ссылки (пока пусто) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🔗 Ссылки&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на репозиторий появится после создания GitHub&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на демо-карту появится после публикации&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Раздел для заметок --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📝 Заметки по разработке&amp;lt;/h3&amp;gt;&lt;br /&gt;
    [[Файл:Карта_друзей.png|мини]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Здесь будет появляться полезная информация, ход работы и примеры кода. Возможно, что-то еще интересное 🗺️&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44597</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44597"/>
		<updated>2026-02-28T20:18:50Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DigitalTool&lt;br /&gt;
|Description=Карта друзей на основе API. &lt;br /&gt;
Интерактивная карта, отображающая геолокацию публичных постов друзей из ВКонтакте. Проект демонстрирует работу с API социальных сетей и визуализацию геоданных.&lt;br /&gt;
|Affordances=Сбор публичных постов с геометками через VK API. Сохранение координат в JSON. Визуализация точек на интерактивной карте. Отображение информации о месте и авторе поста при клике на маркер.&lt;br /&gt;
|Difficult=Требуется токен доступа VK (с ограниченным сроком жизни). Работает только с публичными постами (не со всеми друзьями). Зависит от стабильности API ВКонтакте. Не предназначен для слежки в реальном времени, только для анализа исторических открытых данных.&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Большие данные, Картография, Статистика, Моделирование&lt;br /&gt;
|Область применения=Учебный проект&lt;br /&gt;
|End users=Учащиеся, Разработчики&lt;br /&gt;
|Developer=Муханова Анна АДЭУ-221&lt;br /&gt;
|launch year=2026&lt;br /&gt;
|distant_collab=Нет&lt;br /&gt;
|Language_Ru_Eng=Русский, Python/JavaScript&lt;br /&gt;
|AI=Нет&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🎯 Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📋 Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;⚙️ Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ход работы (прогресс) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🚀 Ход выполнения&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tr style=&amp;quot;background-color: #3498db; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Этап&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Статус&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Комментарий&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Создание страницы проекта в вики&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Страница зарегистрирована в форме DigitalTool&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Получение токена VK API&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Написание скрипта сбора данных&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ В процессе&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ссылки (пока пусто) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🔗 Ссылки&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на репозиторий появится после создания GitHub&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на демо-карту появится после публикации&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Раздел для заметок --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📝 Заметки по разработке&amp;lt;/h3&amp;gt;&lt;br /&gt;
    [[Файл:Карта_друзей.png|мини]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Здесь будет появляться полезная информация, ход работы и примеры кода. Возможно, что-то еще интересное 🗺️&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44596</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44596"/>
		<updated>2026-02-28T20:17:17Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DigitalTool&lt;br /&gt;
|Description=Карта друзей на основе API. &lt;br /&gt;
Интерактивная карта, отображающая геолокацию публичных постов друзей из ВКонтакте. Проект демонстрирует работу с API социальных сетей и визуализацию геоданных.&lt;br /&gt;
|Affordances=Сбор публичных постов с геометками через VK API. Сохранение координат в JSON. Визуализация точек на интерактивной карте. Отображение информации о месте и авторе поста при клике на маркер.&lt;br /&gt;
|Difficult=Требуется токен доступа VK (с ограниченным сроком жизни). Работает только с публичными постами (не со всеми друзьями). Зависит от стабильности API ВКонтакте. Не предназначен для слежки в реальном времени, только для анализа исторических открытых данных.&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Большие данные, Картография, Статистика, Моделирование&lt;br /&gt;
|Область применения=Учебный проект&lt;br /&gt;
|End users=Учащиеся, Разработчики&lt;br /&gt;
|Developer=Муханова Анна АДЭУ-221&lt;br /&gt;
|launch year=2026&lt;br /&gt;
|distant_collab=Нет&lt;br /&gt;
|Language_Ru_Eng=Русский, Python/JavaScript&lt;br /&gt;
|AI=Нет&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🎯 Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📋 Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;⚙️ Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ход работы (прогресс) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🚀 Ход выполнения&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tr style=&amp;quot;background-color: #3498db; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Этап&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Статус&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Комментарий&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Создание страницы проекта в вики&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Страница зарегистрирована в форме DigitalTool&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Получение токена VK API&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ Ожидает&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Написание скрипта сбора данных&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ Ожидает&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ссылки (пока пусто) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🔗 Ссылки&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на репозиторий появится после создания GitHub&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на демо-карту появится после публикации&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Раздел для заметок --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📝 Заметки по разработке&amp;lt;/h3&amp;gt;&lt;br /&gt;
    [[Файл:Карта_друзей.png|мини]]&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Здесь будет появляться полезная информация, найденная в документации, и примеры кода.&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9.png&amp;diff=44595</id>
		<title>Файл:Карта друзей.png</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9.png&amp;diff=44595"/>
		<updated>2026-02-28T20:14:57Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:MukhanovaAI&amp;diff=44589</id>
		<title>Участник:MukhanovaAI</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:MukhanovaAI&amp;diff=44589"/>
		<updated>2026-02-28T11:55:25Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Description=Студентка АДЭУ-221&lt;br /&gt;
|Field_of_knowledge=Информатика, Экономика, Искусственный интеллект, Управление, Интернет вещей, Обществознание, Большие данные, Спорт&lt;br /&gt;
|Environment=SQL, Python, PostgreSQL&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Экономика&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
|Working_On=Трекер настроения, Карта друзей (API соц. сетей)&lt;br /&gt;
}}&lt;br /&gt;
[[Категория: UserMGPU]]&lt;br /&gt;
[[Категория: АДЭУ-221]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:MukhanovaAI&amp;diff=44588</id>
		<title>Участник:MukhanovaAI</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A3%D1%87%D0%B0%D1%81%D1%82%D0%BD%D0%B8%D0%BA:MukhanovaAI&amp;diff=44588"/>
		<updated>2026-02-28T11:55:03Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UserMGPU&lt;br /&gt;
|Description=Студентка АДЭУ-221&lt;br /&gt;
|Field_of_knowledge=Информатика, Экономика, Искусственный интеллект, Управление, Интернет вещей, Обществознание, Большие данные, Спорт&lt;br /&gt;
|Environment=SQL, Python, PostgreSQL&lt;br /&gt;
|Position=Бакалавриат&lt;br /&gt;
|Profile=Экономика&lt;br /&gt;
|PedDirection=Нет&lt;br /&gt;
|Working_On=Трекер настроения, Карта друзей&lt;br /&gt;
}}&lt;br /&gt;
[[Категория: UserMGPU]]&lt;br /&gt;
[[Категория: АДЭУ-221]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:_%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9_(API_%D1%81%D0%BE%D1%86._%D1%81%D0%B5%D1%82%D0%B5%D0%B9)&amp;diff=44587</id>
		<title>Проект: Карта друзей (API соц. сетей)</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9F%D1%80%D0%BE%D0%B5%D0%BA%D1%82:_%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9_(API_%D1%81%D0%BE%D1%86._%D1%81%D0%B5%D1%82%D0%B5%D0%B9)&amp;diff=44587"/>
		<updated>2026-02-28T11:53:59Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: MukhanovaAI переименовал страницу Проект: Карта друзей (API соц. сетей) в Карта друзей (API соц. сетей)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Карта друзей (API соц. сетей)]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44586</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44586"/>
		<updated>2026-02-28T11:53:59Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: MukhanovaAI переименовал страницу Проект: Карта друзей (API соц. сетей) в Карта друзей (API соц. сетей)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DigitalTool&lt;br /&gt;
|Description=Карта друзей на основе API. &lt;br /&gt;
Интерактивная карта, отображающая геолокацию публичных постов друзей из ВКонтакте. Проект демонстрирует работу с API социальных сетей и визуализацию геоданных.&lt;br /&gt;
|Affordances=Сбор публичных постов с геометками через VK API. Сохранение координат в JSON. Визуализация точек на интерактивной карте. Отображение информации о месте и авторе поста при клике на маркер.&lt;br /&gt;
|Difficult=Требуется токен доступа VK (с ограниченным сроком жизни). Работает только с публичными постами (не со всеми друзьями). Зависит от стабильности API ВКонтакте. Не предназначен для слежки в реальном времени, только для анализа исторических открытых данных.&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Большие данные, Картография, Статистика, Моделирование&lt;br /&gt;
|Область применения=Учебный проект&lt;br /&gt;
|End users=Учащиеся, Разработчики&lt;br /&gt;
|Developer=Муханова Анна АДЭУ-221&lt;br /&gt;
|launch year=2026&lt;br /&gt;
|distant_collab=Нет&lt;br /&gt;
|Language_Ru_Eng=Русский, Python/JavaScript&lt;br /&gt;
|AI=Нет&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🎯 Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📋 Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;⚙️ Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ход работы (прогресс) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🚀 Ход выполнения&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tr style=&amp;quot;background-color: #3498db; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Этап&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Статус&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Комментарий&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Создание страницы проекта в вики&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Страница зарегистрирована в форме DigitalTool&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Получение токена VK API&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ Ожидает&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Написание скрипта сбора данных&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ Ожидает&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ссылки (пока пусто) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🔗 Ссылки&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на репозиторий появится после создания GitHub&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на демо-карту появится после публикации&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Раздел для заметок --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📝 Заметки по разработке&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Здесь будет появляться полезная информация, найденная в документации, и примеры кода.&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44585</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44585"/>
		<updated>2026-02-28T11:53:11Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DigitalTool&lt;br /&gt;
|Description=Карта друзей на основе API. &lt;br /&gt;
Интерактивная карта, отображающая геолокацию публичных постов друзей из ВКонтакте. Проект демонстрирует работу с API социальных сетей и визуализацию геоданных.&lt;br /&gt;
|Affordances=Сбор публичных постов с геометками через VK API. Сохранение координат в JSON. Визуализация точек на интерактивной карте. Отображение информации о месте и авторе поста при клике на маркер.&lt;br /&gt;
|Difficult=Требуется токен доступа VK (с ограниченным сроком жизни). Работает только с публичными постами (не со всеми друзьями). Зависит от стабильности API ВКонтакте. Не предназначен для слежки в реальном времени, только для анализа исторических открытых данных.&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Большие данные, Картография, Статистика, Моделирование&lt;br /&gt;
|Область применения=Учебный проект&lt;br /&gt;
|End users=Учащиеся, Разработчики&lt;br /&gt;
|Developer=Муханова Анна АДЭУ-221&lt;br /&gt;
|launch year=2026&lt;br /&gt;
|distant_collab=Нет&lt;br /&gt;
|Language_Ru_Eng=Русский, Python/JavaScript&lt;br /&gt;
|AI=Нет&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🎯 Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📋 Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;⚙️ Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ход работы (прогресс) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🚀 Ход выполнения&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tr style=&amp;quot;background-color: #3498db; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Этап&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Статус&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Комментарий&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Создание страницы проекта в вики&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Страница зарегистрирована в форме DigitalTool&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Получение токена VK API&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ Ожидает&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Написание скрипта сбора данных&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ Ожидает&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ссылки (пока пусто) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🔗 Ссылки&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на репозиторий появится после создания GitHub&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на демо-карту появится после публикации&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Раздел для заметок --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📝 Заметки по разработке&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Здесь будет появляться полезная информация, найденная в документации, и примеры кода.&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:Работа с API]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44584</id>
		<title>Карта друзей</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%D0%B4%D1%80%D1%83%D0%B7%D0%B5%D0%B9&amp;diff=44584"/>
		<updated>2026-02-28T11:48:37Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: Новая страница: «{{DigitalTool |Description=Карта друзей на основе API.   Интерактивная карта, отображающая геолокацию публичных постов друзей из ВКонтакте. Проект демонстрирует работу с API социальных сетей и визуализацию геоданных. |Affordances=Сбор публичных постов с геометками через VK...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DigitalTool&lt;br /&gt;
|Description=Карта друзей на основе API. &lt;br /&gt;
Интерактивная карта, отображающая геолокацию публичных постов друзей из ВКонтакте. Проект демонстрирует работу с API социальных сетей и визуализацию геоданных.&lt;br /&gt;
|Affordances=Сбор публичных постов с геометками через VK API. Сохранение координат в JSON. Визуализация точек на интерактивной карте. Отображение информации о месте и авторе поста при клике на маркер.&lt;br /&gt;
|Difficult=Требуется токен доступа VK (с ограниченным сроком жизни). Работает только с публичными постами (не со всеми друзьями). Зависит от стабильности API ВКонтакте. Не предназначен для слежки в реальном времени, только для анализа исторических открытых данных.&lt;br /&gt;
|Field_of_knowledge=Информатика, Образование, Большие данные, Картография, Статистика, Моделирование&lt;br /&gt;
|Область применения=Учебный проект&lt;br /&gt;
|End users=Учащиеся, Разработчики&lt;br /&gt;
|Developer=Муханова Анна АДЭУ-221&lt;br /&gt;
|launch year=2026&lt;br /&gt;
|distant_collab=Нет&lt;br /&gt;
|Language_Ru_Eng=Русский, Python/JavaScript&lt;br /&gt;
|AI=Нет&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-family: Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Карточка проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h2 style=&amp;quot;color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;&amp;quot;&amp;gt;🗺️ Карта друзей&amp;lt;/h2&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Автор:&amp;lt;/b&amp;gt; Анна Муханова&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Дисциплина:&amp;lt;/b&amp;gt; Работа с API социальных сетей и облачных сервисов&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&amp;lt;b&amp;gt;Статус проекта:&amp;lt;/b&amp;gt; В разработке&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Цель проекта --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🎯 Цель работы&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Задачи --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📋 Задачи&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ol&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Изучить документацию VK API.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Получить токен доступа для работы с данными.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Сохранить полученные координаты в формате JSON.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Создать веб-страницу с картой (Leaflet) и нанести на нее точки.&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;Опубликовать результат.&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ol&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Планируемый стек технологий --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;⚙️ Технологии&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Языки:&amp;lt;/b&amp;gt; Python, JavaScript, HTML/CSS&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Библиотеки Python:&amp;lt;/b&amp;gt; requests, vk_api&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;API:&amp;lt;/b&amp;gt; VK API, OpenStreetMap (через Leaflet)&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;b&amp;gt;Хостинг:&amp;lt;/b&amp;gt; GitHub Pages (для карты)&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ход работы (прогресс) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🚀 Ход выполнения&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;table style=&amp;quot;width: 100%; border-collapse: collapse;&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;tr style=&amp;quot;background-color: #3498db; color: white;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Этап&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Статус&amp;lt;/th&amp;gt;&lt;br /&gt;
            &amp;lt;th style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Комментарий&amp;lt;/th&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Создание страницы проекта в вики&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #90ee90;&amp;quot;&amp;gt;✅ Выполнено&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Страница зарегистрирована в форме DigitalTool&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Получение токена VK API&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ Ожидает&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
        &amp;lt;tr&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;Написание скрипта сбора данных&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd; background-color: #ffb6c1;&amp;quot;&amp;gt;⏳ Ожидает&amp;lt;/td&amp;gt;&lt;br /&gt;
            &amp;lt;td style=&amp;quot;padding: 8px; border: 1px solid #ddd;&amp;quot;&amp;gt;-&amp;lt;/td&amp;gt;&lt;br /&gt;
        &amp;lt;/tr&amp;gt;&lt;br /&gt;
    &amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Ссылки (пока пусто) --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;🔗 Ссылки&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;ul&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на репозиторий появится после создания GitHub&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
        &amp;lt;li&amp;gt;&amp;lt;i&amp;gt;Ссылка на демо-карту появится после публикации&amp;lt;/i&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Раздел для заметок --&amp;gt;&lt;br /&gt;
    &amp;lt;h3 style=&amp;quot;color: #34495e;&amp;quot;&amp;gt;📝 Заметки по разработке&amp;lt;/h3&amp;gt;&lt;br /&gt;
    &amp;lt;p&amp;gt;&amp;lt;i&amp;gt;Здесь будет появляться полезная информация, найденная в документации, и примеры кода.&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Google_sheet&amp;diff=29051</id>
		<title>Google sheet</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Google_sheet&amp;diff=29051"/>
		<updated>2025-05-17T07:12:08Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: MukhanovaAI переименовал страницу Google sheet в Googlesheet MoodTrack&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#перенаправление [[Googlesheet MoodTrack]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=Googlesheet_MoodTrack&amp;diff=29050</id>
		<title>Googlesheet MoodTrack</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=Googlesheet_MoodTrack&amp;diff=29050"/>
		<updated>2025-05-17T07:12:08Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: MukhanovaAI переименовал страницу Google sheet в Googlesheet MoodTrack&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Файл:Google sheet mdtrck.png|мини|альт=Google таблица с данными пользователся за время его пользования приложением|Google таблица с данными пользователся за время его пользования приложением]]&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A2%D1%80%D0%B5%D0%BA%D0%B5%D1%80_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=29049</id>
		<title>Трекер настроения</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A2%D1%80%D0%B5%D0%BA%D0%B5%D1%80_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=29049"/>
		<updated>2025-05-17T07:09:48Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: /* Google таблица с выгруженными данными пользователя */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scripting Tutorials&lt;br /&gt;
|Description=Подготовлено Мухановой Анной&lt;br /&gt;
✨MoodTrack — дневник настроения. Это простое и дружелюбное приложение для отслеживания своего настроения каждый день. Пользователь выбирает кнопку с описанием настроения, которая отражает его эмоции, указывает дату (сегодняшнюю или любую другую), и сохраняет это в личную историю.🌻&lt;br /&gt;
На отдельных страницах можно просматривать свои прошлые записи, анализировать, как менялось настроение со временем.&lt;br /&gt;
|Field_of_knowledge=Информатика, Психология, Социология, Управление, Моделирование&lt;br /&gt;
|FieldActivity=Digital Citizen&lt;br /&gt;
|Возрастная категория=14&lt;br /&gt;
|similar_concepts=Дневник настроения, Трекеры привычек (habit tracker), Mental health apps&lt;br /&gt;
|Environment=Thunkable, Google Sheets, AirTable&lt;br /&gt;
}}&lt;br /&gt;
==Приложение &amp;quot;MoodTrack&amp;quot;==  &lt;br /&gt;
Ссылка на приложение:&lt;br /&gt;
https://x.thunkable.com/copy/2b5a10b15a5391519e44481ccd3bb16eㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ&lt;br /&gt;
либо&lt;br /&gt;
https://x.thunkable.com/projectPage/6827c381d7604f6d73056cbd&lt;br /&gt;
&lt;br /&gt;
==Диаграмма работы приложения &amp;quot;MoodTrack&amp;quot;==&lt;br /&gt;
&amp;lt;graphviz&amp;gt;&lt;br /&gt;
digraph MoodApp {&lt;br /&gt;
    rankdir=TB;&lt;br /&gt;
    node [fontsize=12, shape=&amp;quot;ellipse&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;Приложение&amp;quot; -&amp;gt; &amp;quot;Главный экран&amp;quot; [label=&amp;quot;открывает&amp;quot;];&lt;br /&gt;
    &amp;quot;Главный экран&amp;quot; -&amp;gt; &amp;quot;Выбор даты&amp;quot; [label=&amp;quot;пользователь выбирает&amp;quot;];&lt;br /&gt;
    &amp;quot;Главный экран&amp;quot; -&amp;gt; &amp;quot;Выбор кнопки с описанием&amp;quot; [label=&amp;quot;пользователь выбирает&amp;quot;];&lt;br /&gt;
    &amp;quot;Выбор кнопки с описанием&amp;quot; -&amp;gt; &amp;quot;Кнопка Сохранить&amp;quot; [label=&amp;quot;нажимает&amp;quot;];&lt;br /&gt;
    &amp;quot;Кнопка Сохранить&amp;quot; -&amp;gt; &amp;quot;Сохраняем в таблицу&amp;quot; [label=&amp;quot;добавляем&amp;quot;];&lt;br /&gt;
    &amp;quot;Сохраняем в таблицу&amp;quot; -&amp;gt; &amp;quot;Показываем сообщение\nи анимацию&amp;quot; [label=&amp;quot;выполняем&amp;quot;];&lt;br /&gt;
    &amp;quot;Главный экран&amp;quot; -&amp;gt; &amp;quot;Экран истории&amp;quot; [label=&amp;quot;можно перейти&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран истории&amp;quot; -&amp;gt; &amp;quot;Показываем данные\nиз таблицы&amp;quot; [label=&amp;quot;загружаем&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/graphviz&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Описание приложения == &lt;br /&gt;
Это простое и дружелюбное приложение для отслеживания своего настроения каждый день. Пользователь выбирает кнопку с описанием настроения, которая отражает его эмоции, указывает дату (сегодняшнюю или любую другую), и сохраняет это в личную историю.🌻&lt;br /&gt;
На отдельных страницах можно просматривать свои прошлые записи, анализировать, как менялось настроение со временем.&lt;br /&gt;
&lt;br /&gt;
==Thunkable и как им пользоваться== &lt;br /&gt;
* [[Ликбез по инструменту Thunkable]]&lt;br /&gt;
&lt;br /&gt;
==Функциональные разделы и описание приложения MoodTrack==&lt;br /&gt;
💢Целью проекта является создание простого и интуитивно понятного мобильного приложения для отслеживания настроения пользователя. Приложение позволяет:&lt;br /&gt;
&lt;br /&gt;
Выбирать и сохранять настроение с помощью простого интерфейса;&lt;br /&gt;
&lt;br /&gt;
Указывать дату (текущую или прошедшую) для каждого настроения;&lt;br /&gt;
&lt;br /&gt;
Сохранять данные во внутреннюю таблицу;&lt;br /&gt;
&lt;br /&gt;
Просматривать историю настроений на отдельном экране;&lt;br /&gt;
&lt;br /&gt;
Добавить визуальные элементы и уведомления для улучшения пользовательского опыта.&lt;br /&gt;
&lt;br /&gt;
Приложение ориентировано на пользователей, желающих &#039;&#039;отслеживать своё эмоциональное состояние в формате простого ежедневника-настроений, с возможностью анализа данных в будущем.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Главная страница приложения:===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Glav page.png|&amp;lt;small&amp;gt;Главная_страница&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На главной странице пользователь может:&lt;br /&gt;
&lt;br /&gt;
Выбрать своё текущее настроение, нажав на одну из кнопок с описанием настроения.&lt;br /&gt;
Указать дату, к которой относится настроение (например, прошедший день, прошедший месяц и тд).&lt;br /&gt;
Нажать кнопку «Сохранить», чтобы сохранить настроение в личную таблицу.&lt;br /&gt;
Получить подтверждение о сохранении (с помощью метки с анимацией).&lt;br /&gt;
Перейти на страницу «История настроений», чтобы просмотреть весь список своих записей.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Notif label.png|&amp;lt;small&amp;gt;Лэйбл с успехом&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При успешном сохранении информации за определенный день выскакивает окно с &amp;quot;успехом&amp;quot;, длительность его видимости у пользователя - &#039;&#039;3 секунды&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Программный блок данной страницы выглядит так:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Blocks glav page.png|&amp;lt;small&amp;gt;Блоки главной страницы&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экран «История настроений»===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
История_настроений.png|&amp;lt;small&amp;gt;История настроений&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На этом экране отображается список всех записанных настроений. Здесь можно:&lt;br /&gt;
&lt;br /&gt;
Просмотреть дату и соответствующее ей настроение.&lt;br /&gt;
Убедиться, что данные были корректно сохранены.&lt;br /&gt;
Используется компонент &#039;&#039;Data Viewer List&#039;&#039; для наглядного отображения информации.&lt;br /&gt;
&lt;br /&gt;
===Экран с дашбордом анализа настроения===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Экран дашборд1.jpg|&amp;lt;small&amp;gt;Экран дашборда&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Экран дашборд2.jpg|&amp;lt;small&amp;gt;Экран дашборда&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Экран дашборд3.jpg|&amp;lt;small&amp;gt;Экран дашборда&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Экран дашборд4.jpg|&amp;lt;small&amp;gt;Экран дашборда&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этот экран предназначен для наглядной визуализации истории настроений с помощью встроенного дашборда, созданного в [[AirTable]]. Здесь пользователь может:&lt;br /&gt;
&lt;br /&gt;
Видеть диаграммы и графики, отображающие частоту различных состояний за выбранный период.&lt;br /&gt;
Анализировать, в какие дни настроение было наиболее позитивным или негативным.&lt;br /&gt;
Оценивать динамику эмоционального состояния на основе исторических данных.&lt;br /&gt;
Использовать фильтры в [[AirTable]] для более гибкого просмотра информации.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Технически Airtable-доска встроена с помощью компонента Web Viewer в Thunkable, что позволяет отображать дашборд в реальном времени прямо в приложении.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Google таблица с выгруженными данными пользователя===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Google sheet mdtrck.png|&amp;lt;small&amp;gt;Google таблица с данными пользователя&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Все данные пользователя выгружаются в Google таблицу, которая хранит эти данные, а также передает AirTable для построений более подробных дашбордов и анализа настроения человека. При желании, в дальнейшем, &#039;&#039;продвинутый&#039;&#039; пользователь сможет либо самостоятельно составлять себе различные визуализации и анализировать своё настроение, либо же будет обращаться к специалисту для дальнейшей проработки собственного ментального здоровья.🌟&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
	<entry>
		<id>http://digida.mgpu.ru/index.php?title=%D0%A2%D1%80%D0%B5%D0%BA%D0%B5%D1%80_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=29048</id>
		<title>Трекер настроения</title>
		<link rel="alternate" type="text/html" href="http://digida.mgpu.ru/index.php?title=%D0%A2%D1%80%D0%B5%D0%BA%D0%B5%D1%80_%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B5%D0%BD%D0%B8%D1%8F&amp;diff=29048"/>
		<updated>2025-05-17T07:05:14Z</updated>

		<summary type="html">&lt;p&gt;MukhanovaAI: /* Google таблица с выгруженными данными пользователя */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Scripting Tutorials&lt;br /&gt;
|Description=Подготовлено Мухановой Анной&lt;br /&gt;
✨MoodTrack — дневник настроения. Это простое и дружелюбное приложение для отслеживания своего настроения каждый день. Пользователь выбирает кнопку с описанием настроения, которая отражает его эмоции, указывает дату (сегодняшнюю или любую другую), и сохраняет это в личную историю.🌻&lt;br /&gt;
На отдельных страницах можно просматривать свои прошлые записи, анализировать, как менялось настроение со временем.&lt;br /&gt;
|Field_of_knowledge=Информатика, Психология, Социология, Управление, Моделирование&lt;br /&gt;
|FieldActivity=Digital Citizen&lt;br /&gt;
|Возрастная категория=14&lt;br /&gt;
|similar_concepts=Дневник настроения, Трекеры привычек (habit tracker), Mental health apps&lt;br /&gt;
|Environment=Thunkable, Google Sheets, AirTable&lt;br /&gt;
}}&lt;br /&gt;
==Приложение &amp;quot;MoodTrack&amp;quot;==  &lt;br /&gt;
Ссылка на приложение:&lt;br /&gt;
https://x.thunkable.com/copy/2b5a10b15a5391519e44481ccd3bb16eㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ&lt;br /&gt;
либо&lt;br /&gt;
https://x.thunkable.com/projectPage/6827c381d7604f6d73056cbd&lt;br /&gt;
&lt;br /&gt;
==Диаграмма работы приложения &amp;quot;MoodTrack&amp;quot;==&lt;br /&gt;
&amp;lt;graphviz&amp;gt;&lt;br /&gt;
digraph MoodApp {&lt;br /&gt;
    rankdir=TB;&lt;br /&gt;
    node [fontsize=12, shape=&amp;quot;ellipse&amp;quot;];&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;Приложение&amp;quot; -&amp;gt; &amp;quot;Главный экран&amp;quot; [label=&amp;quot;открывает&amp;quot;];&lt;br /&gt;
    &amp;quot;Главный экран&amp;quot; -&amp;gt; &amp;quot;Выбор даты&amp;quot; [label=&amp;quot;пользователь выбирает&amp;quot;];&lt;br /&gt;
    &amp;quot;Главный экран&amp;quot; -&amp;gt; &amp;quot;Выбор кнопки с описанием&amp;quot; [label=&amp;quot;пользователь выбирает&amp;quot;];&lt;br /&gt;
    &amp;quot;Выбор кнопки с описанием&amp;quot; -&amp;gt; &amp;quot;Кнопка Сохранить&amp;quot; [label=&amp;quot;нажимает&amp;quot;];&lt;br /&gt;
    &amp;quot;Кнопка Сохранить&amp;quot; -&amp;gt; &amp;quot;Сохраняем в таблицу&amp;quot; [label=&amp;quot;добавляем&amp;quot;];&lt;br /&gt;
    &amp;quot;Сохраняем в таблицу&amp;quot; -&amp;gt; &amp;quot;Показываем сообщение\nи анимацию&amp;quot; [label=&amp;quot;выполняем&amp;quot;];&lt;br /&gt;
    &amp;quot;Главный экран&amp;quot; -&amp;gt; &amp;quot;Экран истории&amp;quot; [label=&amp;quot;можно перейти&amp;quot;];&lt;br /&gt;
    &amp;quot;Экран истории&amp;quot; -&amp;gt; &amp;quot;Показываем данные\nиз таблицы&amp;quot; [label=&amp;quot;загружаем&amp;quot;];&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/graphviz&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Описание приложения == &lt;br /&gt;
Это простое и дружелюбное приложение для отслеживания своего настроения каждый день. Пользователь выбирает кнопку с описанием настроения, которая отражает его эмоции, указывает дату (сегодняшнюю или любую другую), и сохраняет это в личную историю.🌻&lt;br /&gt;
На отдельных страницах можно просматривать свои прошлые записи, анализировать, как менялось настроение со временем.&lt;br /&gt;
&lt;br /&gt;
==Thunkable и как им пользоваться== &lt;br /&gt;
* [[Ликбез по инструменту Thunkable]]&lt;br /&gt;
&lt;br /&gt;
==Функциональные разделы и описание приложения MoodTrack==&lt;br /&gt;
💢Целью проекта является создание простого и интуитивно понятного мобильного приложения для отслеживания настроения пользователя. Приложение позволяет:&lt;br /&gt;
&lt;br /&gt;
Выбирать и сохранять настроение с помощью простого интерфейса;&lt;br /&gt;
&lt;br /&gt;
Указывать дату (текущую или прошедшую) для каждого настроения;&lt;br /&gt;
&lt;br /&gt;
Сохранять данные во внутреннюю таблицу;&lt;br /&gt;
&lt;br /&gt;
Просматривать историю настроений на отдельном экране;&lt;br /&gt;
&lt;br /&gt;
Добавить визуальные элементы и уведомления для улучшения пользовательского опыта.&lt;br /&gt;
&lt;br /&gt;
Приложение ориентировано на пользователей, желающих &#039;&#039;отслеживать своё эмоциональное состояние в формате простого ежедневника-настроений, с возможностью анализа данных в будущем.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Главная страница приложения:===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Glav page.png|&amp;lt;small&amp;gt;Главная_страница&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На главной странице пользователь может:&lt;br /&gt;
&lt;br /&gt;
Выбрать своё текущее настроение, нажав на одну из кнопок с описанием настроения.&lt;br /&gt;
Указать дату, к которой относится настроение (например, прошедший день, прошедший месяц и тд).&lt;br /&gt;
Нажать кнопку «Сохранить», чтобы сохранить настроение в личную таблицу.&lt;br /&gt;
Получить подтверждение о сохранении (с помощью метки с анимацией).&lt;br /&gt;
Перейти на страницу «История настроений», чтобы просмотреть весь список своих записей.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Notif label.png|&amp;lt;small&amp;gt;Лэйбл с успехом&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При успешном сохранении информации за определенный день выскакивает окно с &amp;quot;успехом&amp;quot;, длительность его видимости у пользователя - &#039;&#039;3 секунды&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Программный блок данной страницы выглядит так:&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Blocks glav page.png|&amp;lt;small&amp;gt;Блоки главной страницы&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Экран «История настроений»===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
История_настроений.png|&amp;lt;small&amp;gt;История настроений&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На этом экране отображается список всех записанных настроений. Здесь можно:&lt;br /&gt;
&lt;br /&gt;
Просмотреть дату и соответствующее ей настроение.&lt;br /&gt;
Убедиться, что данные были корректно сохранены.&lt;br /&gt;
Используется компонент &#039;&#039;Data Viewer List&#039;&#039; для наглядного отображения информации.&lt;br /&gt;
&lt;br /&gt;
===Экран с дашбордом анализа настроения===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Экран дашборд1.jpg|&amp;lt;small&amp;gt;Экран дашборда&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Экран дашборд2.jpg|&amp;lt;small&amp;gt;Экран дашборда&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Экран дашборд3.jpg|&amp;lt;small&amp;gt;Экран дашборда&amp;lt;/small&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Экран дашборд4.jpg|&amp;lt;small&amp;gt;Экран дашборда&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Этот экран предназначен для наглядной визуализации истории настроений с помощью встроенного дашборда, созданного в [[AirTable]]. Здесь пользователь может:&lt;br /&gt;
&lt;br /&gt;
Видеть диаграммы и графики, отображающие частоту различных состояний за выбранный период.&lt;br /&gt;
Анализировать, в какие дни настроение было наиболее позитивным или негативным.&lt;br /&gt;
Оценивать динамику эмоционального состояния на основе исторических данных.&lt;br /&gt;
Использовать фильтры в [[AirTable]] для более гибкого просмотра информации.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Технически Airtable-доска встроена с помощью компонента Web Viewer в Thunkable, что позволяет отображать дашборд в реальном времени прямо в приложении.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Google таблица с выгруженными данными пользователя===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Google sheet mdtrck.png|&amp;lt;small&amp;gt;Google таблица с данными пользователя&amp;lt;/small&amp;gt;&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Google sheet mdtrck.png&lt;br /&gt;
Все данные пользователя выгружаются в Google таблицу, которая хранит эти данные, а также передает AirTable для построений более подробных дашбордов и анализа настроения человека. При желании, в дальнейшем, &#039;&#039;продвинутый&#039;&#039; пользователь сможет либо самостоятельно составлять себе различные визуализации и анализировать своё настроение, либо же будет обращаться к специалисту для дальнейшей проработки собственного ментального здоровья.🌟&lt;/div&gt;</summary>
		<author><name>MukhanovaAI</name></author>
	</entry>
</feed>