Анализ видеоконтента: различия между версиями

Материал из Поле цифровой дидактики
Нет описания правки
Нет описания правки
Строка 81: Строка 81:
     <div style="background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;">
     <div style="background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;">


        <h4 style="color: #3498db;">Этап 1. Создание страницы в вики и выбор темы</h4>
        <p>Создала страницу проекта на Digida MGPU через форму DigitalTool. Тема: «VK Video Analytics» — анализ видеоконтента ВКонтакте для поиска актуальных тем. Получила комментарий от преподавателя, уточнила требования к объёму выборки (до 500 видео) и фильтрации «водяных» слов.</p>


         <h4 style="color: #3498db;">Этап 2. Изучение VK API и получение токена</h4>
         <h4 style="color: #3498db;">Этап 1. Написание Python-скрипта для сбора данных</h4>
        <p>Изучила документацию VK API. Пыталась создать приложение, но столкнулась с трудностями. Использовала сервис vkhost.github.io для получения временного токена. Позже разобралась с созданием собственного приложения, получила стабильный токен через standalone-приложение. Необходимые права: <code>video</code>, <code>groups</code>, <code>users</code>.</p>
 
        <h4 style="color: #3498db;">Этап 3. Написание Python-скрипта для сбора данных</h4>
         <p>Установила необходимые библиотеки:</p>
         <p>Установила необходимые библиотеки:</p>
         <pre style="background: #2d2d2d; color: #f8f8f2; padding: 10px; border-radius: 5px;">pip install requests pandas matplotlib seaborn wordcloud flask</pre>
         <pre style="background: #2d2d2d; color: #f8f8f2; padding: 10px; border-radius: 5px;">pip install requests pandas matplotlib seaborn wordcloud flask</pre>
Строка 98: Строка 93:
         <p><b>Результат:</b> собран DataFrame с полями: <code>title</code>, <code>views</code>, <code>duration</code>, <code>date</code>, <code>engagement</code> и др.</p>
         <p><b>Результат:</b> собран DataFrame с полями: <code>title</code>, <code>views</code>, <code>duration</code>, <code>date</code>, <code>engagement</code> и др.</p>


         <h4 style="color: #3498db;">Этап 4. Реализация фильтрации «водяных» слов</h4>
         <h4 style="color: #3498db;">Этап 2. Реализация фильтрации «водяных» слов</h4>
         <p>Создала список стоп-слов из 425 единиц, включающий:</p>
         <p>Создала список стоп-слов из 425 единиц, включающий:</p>
         <ul>
         <ul>
Строка 109: Строка 104:
         <p>При построении облака слов и поиске трендовых тем эти слова исключаются, остаются только смысловые ключевые слова.</p>
         <p>При построении облака слов и поиске трендовых тем эти слова исключаются, остаются только смысловые ключевые слова.</p>


         <h4 style="color: #3498db;">Этап 5. Создание графиков и визуализации</h4>
         <h4 style="color: #3498db;">Этап 3. Создание графиков и визуализации</h4>
         <p>Реализовала модуль визуализации, который строит:</p>
         <p>Реализовала модуль визуализации, который строит:</p>
         <ul>
         <ul>
Строка 119: Строка 114:
         </ul>
         </ul>


         <h4 style="color: #3498db;">Этап 6. Создание веб-интерфейса на Flask</h4>
         <h4 style="color: #3498db;">Этап 4. Создание веб-интерфейса на Flask</h4>
         <p>Разработала веб-приложение на Flask с маршрутами:</p>
         <p>Разработала веб-приложение на Flask с маршрутами:</p>
         <ul>
         <ul>
Строка 131: Строка 126:
         <p>HTML-шаблон адаптивный, отображает все графики и тренды в удобной сетке.</p>
         <p>HTML-шаблон адаптивный, отображает все графики и тренды в удобной сетке.</p>


         <h4 style="color: #3498db;">Этап 7. Тестирование и отладка</h4>
         <h4 style="color: #3498db;">Этап 5. Тестирование и отладка</h4>
         <p>Провела тестирование на сообществе <code>https://vk.com/vkvideo</code>. Собрано 500 видео, построены графики. Проверила фильтрацию стоп-слов — в облаке слов и трендах остались только смысловые темы (например, «кино», «сериал», «премьера», «трейлер»).</p>
         <p>Провела тестирование на сообществе <code>https://vk.com/vkvideo</code>. Собрано 500 видео, построены графики. Проверила фильтрацию стоп-слов — в облаке слов и трендах остались только смысловые темы (например, «кино», «сериал», «премьера», «трейлер»).</p>
     </div>
     </div>

Версия от 23:20, 26 марта 2026

🎬 VK Video Analytics — Анализ видеоконтента

Автор: Светлана Селиверстова

Группа: АДЭУ-221

Дисциплина: Работа с API социальных сетей и облачных сервисов

Статус проекта: Выполнен

Цель работы

Разработать инструмент для анализа видеоконтента из открытых источников (VK) с целью выявления актуальных тем, изучения принципов работы API и создания интерактивного веб-интерфейса для визуализации метрик.

Задачи

  1. Изучить документацию VK API (методы video.get, users.get, groups.getById, utils.resolveScreenName).
  2. Получить токен доступа для работы с данными.
  3. Написать скрипт на Python для сбора до 500 видео из сообщества с пагинацией.
  4. Реализовать фильтрацию «водяных» слов (местоимения, глаголы, вводные конструкции) для выделения смысловых тем.
  5. Построить графики: топ-10 видео, анализ длительности, временная активность, облако ключевых слов, вовлечённость.
  6. Создать веб-интерфейс на Flask для отображения аналитики в браузере (localhost).
  7. Оформить результаты в виде отчёта.

Технологии

  • Языки: Python, JavaScript, HTML/CSS
  • Библиотеки Python: requests, pandas, matplotlib, seaborn, wordcloud, flask
  • API: VK API (видео, пользователи, группы, разрешение имён)
  • Визуализация: Matplotlib, Seaborn, WordCloud
  • Веб-фреймворк: Flask

Диаграмма работы приложения «VK Video Analytics»

Структура проекта

vk_video_analytics/
├── config.py                 # настройки: токен, ссылка, лимиты
├── vk_api_client.py          # работа с VK API (пагинация, resolveScreenName)
├── analyzer.py               # аналитика: DataFrame, стоп-слова, тренды
├── visualizer.py             # построение графиков (matplotlib, wordcloud)
├── app.py                    # веб-сервер Flask
├── templates/
│   └── index.html            # HTML-шаблон с графиками и трендами
├── results/                  # папка с результатами (создаётся автоматически)
│   ├── videos_data.csv       # все собранные данные
│   ├── *.png                 # графики
│   └── *.json                # инсайты и тренды
└── requirements.txt          # зависимости
    

Ход работы над проектом


Этап 1. Написание Python-скрипта для сбора данных

Установила необходимые библиотеки:

pip install requests pandas matplotlib seaborn wordcloud flask

Написала клиент для VK API с поддержкой:

  • Преобразования ссылки в ID через utils.resolveScreenName
  • Пагинации для получения до 500 видео
  • Сбора информации об авторах (пользователи и группы)

Результат: собран DataFrame с полями: title, views, duration, date, engagement и др.

Этап 2. Реализация фильтрации «водяных» слов

Создала список стоп-слов из 425 единиц, включающий:

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

При построении облака слов и поиске трендовых тем эти слова исключаются, остаются только смысловые ключевые слова.

Этап 3. Создание графиков и визуализации

Реализовала модуль визуализации, который строит:

  • Топ-10 видео по просмотрам (горизонтальная столбчатая диаграмма)
  • Анализ длительности — средние просмотры и распределение по категориям
  • Временной анализ — средние просмотры по часам и дням недели
  • Облако ключевых слов (только значимые слова после фильтрации)
  • Анализ вовлечённости — зависимость вовлечённости от просмотров и по длительности

Этап 4. Создание веб-интерфейса на Flask

Разработала веб-приложение на Flask с маршрутами:

  • / — главная страница с аналитикой
  • /api/insights — JSON с ключевыми инсайтами
  • /api/trending — JSON с трендовыми темами
  • /api/top_videos — JSON с топ-20 видео
  • /api/chart/<name> — отдача PNG-графиков
  • /refresh — принудительное обновление данных

HTML-шаблон адаптивный, отображает все графики и тренды в удобной сетке.

Этап 5. Тестирование и отладка

Провела тестирование на сообществе https://vk.com/vkvideo. Собрано 500 видео, построены графики. Проверила фильтрацию стоп-слов — в облаке слов и трендах остались только смысловые темы (например, «кино», «сериал», «премьера», «трейлер»).

Итог проекта

Создан работающий инструмент для анализа видеоконтента ВКонтакте с веб-интерфейсом

До 500 видео анализируется  |  5 типов графиков  |  425 стоп-слов для фильтрации  |  Автоматическое определение сообщества по ссылке

Проект выполнен в рамках дисциплины «Работа с API социальных сетей и облачных сервисов»

Выводы

В ходе работы над проектом я:

  • Научилась работать с VK API — получать токен, делать запросы с пагинацией, обрабатывать ответы, использовать resolveScreenName для преобразования ссылок.
  • Освоила очистку текстовых данных: фильтрацию стоп-слов (местоимения, глаголы, вводные конструкции) для выделения смысловых тем.
  • Создала комплексную аналитику видеоконтента: топ видео, анализ длительности, временную активность, вовлечённость, облако ключевых слов.
  • Разработала веб-приложение на Flask с интерактивным интерфейсом и графиками.
  • Поняла, как устроены современные сервисы аналитики контента, собирающие данные через открытые API.

Проект можно развивать дальше: добавить анализ хэштегов, прогнозирование виральности на основе нейросетей, интеграцию с другими соцсетями (YouTube, Telegram), экспорт отчётов в PDF.