sample JSON structure
{
"videoId": "abc123",
"title": "placeholder title",
"channel": "channel name",
"subtitles": [
{ "start": 0.0, "text": "..." }
]
}Собрал субтитры и метаданные более чем из 2900 видео YouTube и подготовил структурированные JSON-датасеты для дальнейшего анализа.
Клиенту нужно было собрать и структурировать материалы с нескольких YouTube-каналов, чтобы анализировать повторяющиеся темы и обсуждения в индустрии. Целью было подготовить датасет для дальнейшего текстового анализа.
Я разработал CLI-пайплайн на TypeScript и Node.js. Скрипт получает метаданные видео, извлекает автосубтитры, сохраняет каждый ролик отдельным JSON-файлом и затем объединяет данные в датасеты на уровне каналов.
Массовый сбор данных с YouTube требует учета ограничений платформы и нестабильности доступа. Чтобы пайплайн работал стабильно при длительных прогонах, была добавлена логика повторных попыток, случайных задержек, cooldown-периодов, ротации API-ключей и user-agent, а также реестр статусов обработки.
В репозитории зафиксирована обработка более 2900 видео по трём каналам. Итоговые данные экспортированы в структурированные JSON-датасеты общим объёмом около 164 МБ и могут использоваться для анализа тем, ключевых слов и кластеризации контента.
{
"videoId": "abc123",
"title": "placeholder title",
"channel": "channel name",
"subtitles": [
{ "start": 0.0, "text": "..." }
]
}channel-a.json
channel-b.json
channel-c.json
videos: 2900+
size: ~164 MBchannels -> metadata fetch -> subtitle extraction -> per-video JSON -> channel dataset export