Твиттер парсер / twitter scrapper
Мы ищем специалиста для разработки и создания сервиса, который может выполнять скрейпинг Twitter (X) и быть доступным через API-интерфейс. Сервис должен выполнять следующие функции:
Получение 10 последних твитов аккаунта.
Возможность фильтрации по типу твита: твит, ретвит, цитата или все.
Для данного твита — получение списка аккаунтов, которые ретвитнули или процитировали его.
Возможность фильтрации по ретвитам, цитатам или всем действиям.*Получение всех аккаунтов, на которые подписан данный аккаунт.*Получение всех подписчиков аккаунта.
Проверка, подписан ли аккаунт A на аккаунт B.
Возвращение метаданных аккаунта (имя пользователя, ID пользователя, возраст аккаунта, статус верификации, ссылки на изображения и т.д.).* Эти функции не должны возвращать ответ немедленно, но должны быть надежными. Для аккаунтов с большим количеством подписчиков результат не должен занимать больше одного часа. Как только набор результатов будет готов, сервис должен отправить уведомление/вебхук/HTTP-запрос.
Дополнительные требования:
Сервис должен поддерживать аккаунты с количеством подписчиков до 1 миллиона.
Должен быть достаточно надежным (99% успешных вызовов).
Использование ротации между различными аккаунтами и прокси для повышения надежности и скорости. Мы можем предоставить Twitter-аккаунты, API для решения капчи и прокси при необходимости.
Логирование аккаунтов или прокси, которые были ограничены.
Вход в Twitter-аккаунт не должен требовать кода из электронной почты (можем использовать 2FA-код).
Технические требования:
Сервис должен быть реализован как Docker-сервис, который можно легко развернуть в облачной инфраструктуре.
RESTful сервис.
Должен принимать учетные данные API-ключа.
Предпочтительно написание на TypeScript (или Python).
Комментарии в коде, если они есть, должны быть на английском языке.
Ответы должны быть в формате JSON.
За исключением особых указаний, использование платных сервисов/API не допускается.
Архитектура и код должны быть чистыми и хорошо структурированными.
Проект должен быть завершен в течение 1 недели.