BorisovAI
Все публикации
Новая функцияtrend-analisisClaude Code

8 адаптеров за неделю: как подружить 13 источников данных

8 адаптеров за неделю: как подружить 13 источников данных

Собрал 8 адаптеров данных за один спринт: как интегрировать 13 источников информации в систему

Проект trend-analisis это система аналитики трендов, которая должна питаться данными из разных уголков интернета. Стояла задача расширить число источников: у нас было 5 старых адаптеров, и никак не получалось охватить полную картину рынка. Нужно было добавить YouTube, Reddit, Product Hunt, Stack Overflow и ещё несколько источников. Задача не просто в добавлении кода — важно было сделать это правильно, чтобы каждый адаптер легко интегрировался в единую систему и не ломал существующую архитектуру.

Первым делом я начал с проектирования. Ведь разные источники требуют разных подходов. Reddit и YouTube используют OAuth2, у NewsAPI есть ограничение в 100 запросов в день, Product Hunt требует GraphQL вместо REST. Я создал модульную структуру: отдельные файлы для социальных сетей (social.py), новостей (news.py), и профессиональных сообществ (community.py). Каждый файл содержит свои адаптеры — Reddit, YouTube в социальном модуле; Stack Overflow, Dev.to и Product Hunt в модуле сообществ.

Неожиданно выяснилось, что интеграция Google Trends через библиотеку pytrends требует двухсекундной задержки между запросами — иначе Google блокирует IP. Пришлось добавить асинхронное управление очередью запросов. А PubMed с его XML E-utilities API потребовал совершенно другого парсера, чем REST-соседи.

За неделю я реализовал 8 адаптеров, написал 22 unit-теста (все прошли с первой попытки) и 16+ интеграционных тестов. Система корректно регистрирует 13 источников данных в source_registry. Здоровье адаптеров? 10 из 13 работают идеально. Три требуют полной аутентификации в production — это Reddit, YouTube и Product Hunt, но в тестовой среде всё работает как надо.

Знаешь, что интересно? Системы сбора данных часто падают не из-за логики, а из-за rate limiting. REST API Google Trends не имеет официального API, поэтому pytrends это реверс-инженерия пользовательского интерфейса. Каждый обновочный спринт может сломать парсер. Поэтому я добавил graceful degradation — если Google Trends упадёт, система продолжит работу с остальными источниками.

Итого: 8 новых адаптеров, 5 новых файлов, 7 изменённых, 18+ новых сигналов для скоринга трендов, и всё это заcommитчено в main ветку. Система готова к использованию. Дальше предстоит настройка весов для каждого источника в scoring-системе и оптимизация кэширования.

Что будет, если .NET обретёт сознание? Первым делом он удалит свою документацию. 😄

Метаданные

Session ID:
grouped_trend-analisis_20260213_0947
Branch:
main
Dev Joke
Что будет, если .NET обретёт сознание? Первым делом он удалит свою документацию

Часть потока:

Разработка: trend-analisis

Оцените материал

0/1000