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

Материал из Поле цифровой дидактики
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
== VK Video Analytics — Анализ видеоконтента ==


    <!-- Карточка проекта -->
'''Автор:''' Светлана Селиверстова
    <div style="background-color: #f0f8ff; padding: 15px; border-radius: 10px; margin-bottom: 25px;">
'''Группа:''' АДЭУ-221
        <h2 style="color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 8px;">🎬 VK Video Analytics — Анализ видеоконтента</h2>
'''Дисциплина:''' Работа с API социальных сетей и облачных сервисов
        <p><b>Автор:</b> Светлана Селиверстова </p>
'''Статус проекта:''' Выполнен
        <p><b>Группа:</b> АДЭУ-221</p>
        <p><b>Дисциплина:</b> Работа с API социальных сетей и облачных сервисов</p>
        <p><b>Статус проекта:</b> Выполнен</p>
    </div>


    <!-- Цель проекта -->
== Цель работы ==
    <h3 style="color: #34495e;">Цель работы</h3>
Разработать инструмент для анализа видеоконтента из открытых источников (VK) с целью выявления актуальных тем, изучения принципов работы [[API]] и создания интерактивного веб-интерфейса для визуализации метрик.
    <p>Разработать инструмент для анализа видеоконтента из открытых источников (VK) с целью выявления актуальных тем, изучения принципов работы [[API]] и создания интерактивного веб-интерфейса для визуализации метрик.</p>


    <!-- Задачи -->
== Задачи ==
    <h3 style="color: #34495e;">Задачи</h3>
# Изучить документацию VK API (методы <code>video.get</code>, <code>users.get</code>, <code>groups.getById</code>, <code>utils.resolveScreenName</code>).
    <ol>
# Получить токен доступа для работы с данными.
        <li>Изучить документацию VK API (методы <code>video.get</code>, <code>users.get</code>, <code>groups.getById</code>, <code>utils.resolveScreenName</code>).</li>
# Написать скрипт на Python для сбора до 500 видео из сообщества с пагинацией.
        <li>Получить токен доступа для работы с данными.</li>
# Реализовать фильтрацию «лишних» слов (местоимения, глаголы, вводные конструкции) для выделения смысловых тем.
        <li>Написать скрипт на Python для сбора до 500 видео из сообщества с пагинацией.</li>
# Построить графики: топ-10 видео, анализ длительности, временная активность, облако ключевых слов, вовлечённость.
        <li>Реализовать фильтрацию «лишних» слов (местоимения, глаголы, вводные конструкции) для выделения смысловых тем.</li>
# Создать веб-интерфейс на Flask для отображения аналитики в браузере (localhost).
        <li>Построить графики: топ-10 видео, анализ длительности, временная активность, облако ключевых слов, вовлечённость.</li>
# Оформить результаты в виде отчёта.
        <li>Создать веб-интерфейс на Flask для отображения аналитики в браузере (localhost).</li>
        <li>Оформить результаты в виде отчёта.</li>
    </ol>


    <!-- Планируемый стек технологий -->
== Технологии ==
    <h3 style="color: #34495e;">Технологии</h3>
* '''Языки:''' Python, JavaScript, HTML/CSS
    <ul>
* '''Библиотеки Python:''' requests, pandas, matplotlib, seaborn, wordcloud, flask
        <li><b>Языки:</b> Python, JavaScript, HTML/CSS</li>
* '''API:''' VK API (видео, пользователи, группы, разрешение имён)
        <li><b>Библиотеки Python:</b> requests, pandas, matplotlib, seaborn, wordcloud, flask</li>
* '''Визуализация:''' Matplotlib, Seaborn, WordCloud
        <li><b>API:</b> VK API (видео, пользователи, группы, разрешение имён)</li>
* '''Веб-фреймворк:''' Flask
        <li><b>Визуализация:</b> Matplotlib, Seaborn, WordCloud</li>
        <li><b>Веб-фреймворк:</b> Flask</li>
    </ul>


    <!-- Диаграмма работы приложения -->
== Диаграмма работы приложения «VK Video Analytics» ==
    <h3 style="color: #34495e;">Диаграмма работы приложения «VK Video Analytics»</h3>


{{#mermaid:
{{#mermaid:
Строка 57: Строка 46:
}}
}}


    <!-- Структура проекта -->
== Структура проекта ==
    <h3 style="color: #34495e;">Структура проекта</h3>
 
    <pre style="background: #2d2d2d; color: #f8f8f2; padding: 15px; border-radius: 10px; overflow-x: auto;">
<pre>
vk_video_analytics/
vk_video_analytics/
├── config.py                # настройки: токен, ссылка, лимиты
├── config.py                # настройки: токен, ссылка, лимиты
Строка 73: Строка 62:
│  └── *.json                # инсайты и тренды
│  └── *.json                # инсайты и тренды
└── requirements.txt          # зависимости
└── requirements.txt          # зависимости
    </pre>
</pre>
 
== Ход работы над проектом ==
 
=== Этап 1. Написание Python-скрипта для сбора данных ===
Установила необходимые библиотеки:
<pre>pip install requests pandas matplotlib seaborn wordcloud flask</pre>


    <!-- Ход работы над проектом -->
Написала клиент для VK API с поддержкой:
    <h3 style="color: #34495e;">Ход работы над проектом</h3>
* Преобразования ссылки в ID через <code>utils.resolveScreenName</code>
* Пагинации для получения до 500 видео
* Сбора информации об авторах (пользователи и группы)


    <div style="background-color: #f9f9f9; border-radius: 10px; padding: 20px; margin: 20px 0;">
'''Результат:''' собран DataFrame с полями: <code>title</code>, <code>views</code>, <code>duration</code>, <code>date</code>, <code>engagement</code> и др.
        <h4 style="color: #3498db;">Этап 1. Написание Python-скрипта для сбора данных</h4>
        <p>Установила необходимые библиотеки:</p>
        <pre style="background: #2d2d2d; color: #f8f8f2; padding: 10px; border-radius: 5px;">pip install requests pandas matplotlib seaborn wordcloud flask</pre>
        <p>Написала клиент для VK API с поддержкой:</p>
        <ul>
            <li>Преобразования ссылки в ID через <code>utils.resolveScreenName</code></li>
            <li>Пагинации для получения до 500 видео</li>
            <li>Сбора информации об авторах (пользователи и группы)</li>
        </ul>
        <p><b>Результат:</b> собран DataFrame с полями: <code>title</code>, <code>views</code>, <code>duration</code>, <code>date</code>, <code>engagement</code> и др.</p>


        <h4 style="color: #3498db;">Этап 2. Реализация фильтрации «лишних» слов</h4>
=== Этап 2. Реализация фильтрации «лишних» слов ===
        <p>Создала список стоп-слов, включающий:</p>
Создала список стоп-слов, включающий:
        <ul>
* Местоимения (твой, мой, его, их, я, ты, мы)
            <li>Местоимения (твой, мой, его, их, я, ты, мы)</li>
* Глаголы (быть, сказать, делать, хотеть, любить, идти, работать)
            <li>Глаголы (быть, сказать, делать, хотеть, любить, идти, работать)</li>
* Вводные конструкции (кстати, наверное, конечно, по-моему)
            <li>Вводные конструкции (кстати, наверное, конечно, по-моему)</li>
* Частицы, предлоги, союзы (в, на, и, а, но, или)
            <li>Частицы, предлоги, союзы (в, на, и, а, но, или)</li>
* Общие слова (самый, хороший, новый, легко, сейчас)
            <li>Общие слова (самый, хороший, новый, легко, сейчас)</li>
        </ul>
        <p>При построении облака слов и поиске трендовых тем эти слова исключаются, остаются только смысловые ключевые слова.</p>


        <h4 style="color: #3498db;">Этап 3. Создание графиков и визуализации</h4>
При построении облака слов и поиске трендовых тем эти слова исключаются, остаются только смысловые ключевые слова.
        <p>Реализовала модуль визуализации, который строит:</p>
        <ul>
            <li><b>Топ-10 видео по просмотрам</b> (горизонтальная столбчатая диаграмма)</li>
            <li><b>Анализ длительности</b> — средние просмотры и распределение по категориям</li>
            <li><b>Временной анализ</b> — средние просмотры по часам и дням недели</li>
            <li><b>Облако ключевых слов</b> (только значимые слова после фильтрации)</li>
            <li><b>Анализ вовлечённости</b> — зависимость вовлечённости от просмотров и по длительности</li>
        </ul>


        <h4 style="color: #3498db;">Этап 4. Создание веб-интерфейса на Flask</h4>
=== Этап 3. Создание графиков и визуализации ===
        <p>Разработала веб-приложение на Flask с маршрутами:</p>
Реализовала модуль визуализации, который строит:
        <ul>
* '''Топ-10 видео по просмотрам''' (горизонтальная столбчатая диаграмма)
            <li><code>/</code> — главная страница с аналитикой</li>
* '''Анализ длительности''' средние просмотры и распределение по категориям
            <li><code>/api/insights</code> — JSON с ключевыми инсайтами</li>
* '''Временной анализ''' средние просмотры по часам и дням недели
            <li><code>/api/trending</code> — JSON с трендовыми темами</li>
* '''Облако ключевых слов''' (только значимые слова после фильтрации)
            <li><code>/api/top_videos</code> — JSON с топ-20 видео</li>
* '''Анализ вовлечённости''' — зависимость вовлечённости от просмотров и по длительности
            <li><code>/api/chart/&lt;name&gt;</code> отдача PNG-графиков</li>
            <li><code>/refresh</code> принудительное обновление данных</li>
        </ul>
        <p>HTML-шаблон адаптивный, отображает все графики и тренды в удобной сетке.</p>


        <h4 style="color: #3498db;">Этап 5. Тестирование и отладка</h4>
=== Этап 4. Создание веб-интерфейса на Flask ===
        <p>Провела тестирование на сообществе <code>https://vk.com/vkvideo</code>. Собрано 500 видео, построены графики. Проверила фильтрацию стоп-слов — в облаке слов и трендах остались только смысловые темы (например, «кино», «сериал», «премьера», «трейлер»).</p>
Разработала веб-приложение на Flask с маршрутами:
    </div>
* <code>/</code> — главная страница с аналитикой
* <code>/api/insights</code> — JSON с ключевыми инсайтами
* <code>/api/trending</code> — JSON с трендовыми темами
* <code>/api/top_videos</code> — JSON с топ-20 видео
* <code>/api/chart/&lt;name&gt;</code> — отдача PNG-графиков
* <code>/refresh</code> — принудительное обновление данных


    <!-- ВЫВОДЫ -->
HTML-шаблон адаптивный, отображает все графики и тренды в удобной сетке.
    <h3 style="color: #34495e;">Выводы</h3>
 
    <p>В ходе работы над проектом я:</p>
=== Этап 5. Тестирование и отладка ===
    <ul>
Провела тестирование на сообществе <code>https://vk.com/vkvideo</code>. Собрано 500 видео, построены графики. Проверила фильтрацию стоп-слов — в облаке слов и трендах остались только смысловые темы (например, «кино», «сериал», «премьера», «трейлер»).
        <li>Научилась работать с VK API — получать токен, делать запросы с пагинацией, обрабатывать ответы, использовать <code>resolveScreenName</code> для преобразования ссылок.</li>
 
        <li>Освоила очистку текстовых данных: фильтрацию стоп-слов (местоимения, глаголы, вводные конструкции) для выделения смысловых тем.</li>
== Выводы ==
        <li>Создала комплексную аналитику видеоконтента: топ видео, анализ длительности, временную активность, вовлечённость, облако ключевых слов.</li>
В ходе работы над проектом я:
        <li>Разработала веб-приложение на Flask с интерактивным интерфейсом и графиками.</li>
* Научилась работать с VK API — получать токен, делать запросы с пагинацией, обрабатывать ответы, использовать <code>resolveScreenName</code> для преобразования ссылок.
        <li>Поняла, как устроены современные сервисы аналитики контента, собирающие данные через открытые API.</li>
* Освоила очистку текстовых данных: фильтрацию стоп-слов (местоимения, глаголы, вводные конструкции) для выделения смысловых тем.
    </ul>
* Создала комплексную аналитику видеоконтента: топ видео, анализ длительности, временную активность, вовлечённость, облако ключевых слов.
    <!-- Скриншоты проекта-->
* Разработала веб-приложение на Flask с интерактивным интерфейсом и графиками.
    <h3 style="color: #34495e;">Скриншоты проекта</h3>
* Поняла, как устроены современные сервисы аналитики контента, собирающие данные через открытые API.
 
 
== Скриншоты проекта ==
[[Файл:Photo 5343610813345896930 w.jpg|800px]]
[[Файл:Photo 5343610813345896930 w.jpg|800px]]


Строка 145: Строка 123:


[[Файл:Photo 5343610813345896929 w.jpg|800px]]
[[Файл:Photo 5343610813345896929 w.jpg|800px]]
</div>


[[Категория:Работа с API]]
[[Категория:Работа с API]]

Версия от 09:25, 27 марта 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. Реализация фильтрации «лишних» слов

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

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

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

Этап 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 видео, построены графики. Проверила фильтрацию стоп-слов — в облаке слов и трендах остались только смысловые темы (например, «кино», «сериал», «премьера», «трейлер»).

Выводы

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

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

Скриншоты проекта