Карта друзей: различия между версиями
Нет описания правки |
Нет описания правки |
||
| (не показано 6 промежуточных версий этого же участника) | |||
| Строка 5: | Строка 5: | ||
<h2 style="color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;">🗺️ Карта друзей</h2> | <h2 style="color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;">🗺️ Карта друзей</h2> | ||
<p><b>Автор:</b> Анна Муханова</p> | <p><b>Автор:</b> Анна Муханова</p> | ||
<p><b>Группа:</b> АДЭУ-221</p> | |||
<p><b>Дисциплина:</b> Работа с API социальных сетей и облачных сервисов</p> | <p><b>Дисциплина:</b> Работа с API социальных сетей и облачных сервисов</p> | ||
<p><b>Статус проекта:</b> | <p><b>Статус проекта:</b> Выполнен</p> | ||
</div> | </div> | ||
<!-- Цель проекта --> | <!-- Цель проекта --> | ||
<h3 style="color: #34495e;">Цель работы</h3> | <h3 style="color: #34495e;">Цель работы</h3> | ||
<p>Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.</p> | <p>Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы [[API]] и создания интерактивных карт.</p> | ||
<!-- Задачи --> | <!-- Задачи --> | ||
| Строка 32: | Строка 33: | ||
<li><b>Хостинг:</b> GitHub Pages (для карты)</li> | <li><b>Хостинг:</b> GitHub Pages (для карты)</li> | ||
</ul> | </ul> | ||
<h3 style="color: #34495e;">Диаграмма работы приложения «Карта друзей»</h3> | |||
{{#mermaid: flowchart TB | |||
A[Начало] --> B(Получение токена VK API) | |||
B --> C(Запрос списка друзей) | |||
C --> D{Есть друзья?} | |||
D -->|Нет| E[Завершить] | |||
D -->|Да| F[Цикл по каждому другу] | |||
F --> G(Запрос последних 30 постов) | |||
G --> H{Пост содержит geo?} | |||
H -->|Нет| I[Следующий пост] | |||
I --> G | |||
H -->|Да| J(Сохранить координаты, имя, место, ссылку) | |||
J --> K{Все посты проверены?} | |||
K -->|Нет| I | |||
K -->|Да| L{Все друзья обработаны?} | |||
L -->|Нет| F | |||
L -->|Да| M(Сохранить данные в JSON-файл) | |||
M --> N(Открыть HTML-страницу с картой) | |||
N --> O(Загрузить JSON в JavaScript) | |||
O --> P(Отрисовать маркеры на карте) | |||
P --> Q(Клик по маркеру → всплывающее окно) | |||
Q --> R[Готово] | |||
}} | |||
<!-- Структура проекта --> | <!-- Структура проекта --> | ||
<h3 style="color: #34495e;"> | <h3 style="color: #34495e;">Структура проекта</h3> | ||
<div style="text-align: center; margin: 15px 0;"> | <div style="text-align: center; margin: 15px 0;"> | ||
[[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]] | [[Файл:Project_folder.png|500px|center|thumb|Папка проекта в VS Code]] | ||
| Строка 67: | Строка 93: | ||
[[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]] | [[Файл:Terminal_result2.png|400px|center|thumb|Результат работы скрипта]] | ||
</div> | </div> | ||
<p><b>Результат:</b> собрано | <p><b>Результат:</b> собрано 18 постов с геометками у 30 обработанных друзей.</p> | ||
<h4 style="color: #3498db;">Этап 4. Создание интерактивной карты</h4> | <h4 style="color: #3498db;">Этап 4. Создание интерактивной карты</h4> | ||
<p>Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:</p> | <p>Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:</p> | ||
| Строка 79: | Строка 105: | ||
<p><b>Результат:</b> готовая интерактивная карта с точками всех найденных геометок.</p> | <p><b>Результат:</b> готовая интерактивная карта с точками всех найденных геометок.</p> | ||
<h4 style="color: #3498db;">Этап 5 | <h4 style="color: #3498db;">Этап 5. Создание интерактивной карты</h4> | ||
<p>Создала файл <code>map.html</code> с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.</p> | <p>Создала файл <code>map.html</code> с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.</p> | ||
<div style="text-align: center; margin: 15px 0;"> | <div style="text-align: center; margin: 15px 0;"> | ||
| Строка 96: | Строка 111: | ||
[[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]] | [[Файл:Map code2.png|400px|center|thumb|Код JavaScript для отображения маркеров]] | ||
[[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]] | [[Файл:map_result.png|400px|center|thumb|Готовая карта с точками]] | ||
</div> | </div> | ||
< | <!-- ИТОГОВЫЙ РЕЗУЛЬТАТ --> | ||
<div style="background-color: #eef2f5; padding: 20px; border-radius: 15px; margin: 30px 0; text-align: center; border-left: 4px solid #3498db;"> | |||
<h3 style="color: black;">Итог проекта</h3> | |||
<p style="font-size: 18px;">Создан работающий инструмент для сбора и визуализации геоданных из ВКонтакте</p> | |||
<p>23 друга обработано | 7 геометок собрано | 6 городов на карте</p> | |||
<p><small>Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»</small></p> | |||
</div> | |||
<!-- ВЫВОДЫ --> | |||
</ | <h3 style="color: #34495e;">Выводы</h3> | ||
<p>В ходе работы над проектом я:</p> | |||
<ul> | |||
<li>Научилась работать с VK API — получать токен, делать запросы, обрабатывать ответы.</li> | |||
<li>Освоила парсинг JSON-данных и сохранение результатов в файл.</li> | |||
<li>Создала интерактивную карту на Leaflet и нанесла на нее реальные геоданные.</li> | |||
<li>Поняла, как устроены современные веб-сервисы, которые собирают данные из разных источников.</li> | |||
</ul> | |||
<p>Проект можно развивать дальше: добавить тепловую карту, сделать анализ популярных мест, подключить Яндекс.Карты с более детальными данными.</p> | |||
Текущая версия от 22:50, 22 марта 2026
🗺️ Карта друзей
Автор: Анна Муханова
Группа: АДЭУ-221
Дисциплина: Работа с API социальных сетей и облачных сервисов
Статус проекта: Выполнен
Цель работы
Разработать инструмент для сбора и визуализации геоданных из открытых источников (VK) с целью изучения принципов работы API и создания интерактивных карт.
Задачи
- Изучить документацию VK API.
- Получить токен доступа для работы с данными.
- Написать скрипт на Python для сбора ID друзей и их публичных постов с геометками.
- Сохранить полученные координаты в формате JSON.
- Создать веб-страницу с картой (Leaflet) и нанести на нее точки.
- Опубликовать результат.
Технологии
- Языки: Python, JavaScript, HTML/CSS
- Библиотеки Python: requests, vk_api
- API: VK API, OpenStreetMap (через Leaflet)
- Хостинг: GitHub Pages (для карты)
Диаграмма работы приложения «Карта друзей»
Структура проекта

Файлы проекта: config.py (токен), main.py (скрипт), friends_geo.json (результат), map.html (карта)
Ход работы над проектом
Этап 1. Создание страницы в вики и выбор темы
Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «Карта друзей» — сбор и визуализация геолокаций из постов ВКонтакте. Получила комментарий от преподавателя, исправила категорию на «Работа с API».
Этап 2. Изучение VK API и получение токена
Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение.
Этап 3. Установка библиотеки и написание Python-скрипта
Установила библиотеку vk_api через терминал:
Написала скрипт, который:
- Авторизуется по токену
- Получает список друзей
- Для каждого друга запрашивает последние 30 постов
- Проверяет наличие поля
geoв каждом посте - Сохраняет координаты, имя друга, текст поста и ссылку в JSON-файл
Результат: собрано 18 постов с геометками у 30 обработанных друзей.
Этап 4. Создание интерактивной карты
Создала HTML-страницу с картой на базе библиотеки Leaflet (OpenStreetMap). Написала JavaScript-код, который:
- Загружает данные из JSON-файла
- Разбирает координаты (формат "широта долгота")
- Добавляет маркеры на карту
- При клике на маркер показывает всплывающее окно с именем друга, местом и ссылкой на пост

Результат: готовая интерактивная карта с точками всех найденных геометок.
Этап 5. Создание интерактивной карты
Создала файл map.html с картой на базе Leaflet (OpenStreetMap). Написала JavaScript-код, который загружает данные из JSON и добавляет маркеры на карту. При клике на маркер открывается окошко с именем друга, названием места и ссылкой на пост.



Итог проекта
Создан работающий инструмент для сбора и визуализации геоданных из ВКонтакте
23 друга обработано | 7 геометок собрано | 6 городов на карте
Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»
Выводы
В ходе работы над проектом я:
- Научилась работать с VK API — получать токен, делать запросы, обрабатывать ответы.
- Освоила парсинг JSON-данных и сохранение результатов в файл.
- Создала интерактивную карту на Leaflet и нанесла на нее реальные геоданные.
- Поняла, как устроены современные веб-сервисы, которые собирают данные из разных источников.
Проект можно развивать дальше: добавить тепловую карту, сделать анализ популярных мест, подключить Яндекс.Карты с более детальными данными.



