Этот проект представляет собой парсер, который собирает информацию о топ-100 репозиториев GitHub и их активности. Данные сохраняются в базе данных PostgreSQL, а затем предоставляются через API FastAPI.
- Ежедневно извлекает список топ-100 репозиториев GitHub по количеству звезд.
- Собирает информацию о каждом репозитории, включая:
- Имя
- Владелец
- Текущая позиция в топе
- Предыдущая позиция в топе
- Количество звезд
- Количество watchers
- Количество forks
- Количество открытых issue
- Язык программирования
- Собирает данные об активности репозиториев, включая:
- Дату
- Количество коммитов
- Список авторов
- Обновляет существующие записи в базе данных или добавляет новые, если репозиторий не найден.
Предоставляет два эндпоинта:
- /api/repos/top100: Возвращает список топ-100 репозиториев с подробной информацией.
- /api/{owner}/{repo}/activity?since={date1}&until={date2}: Возвращает активность репозитория за указанный период.
- Python 3.12
- FastAPI
- asyncpg (асинхронный драйвер PostgreSQL)
- aiohttp
- Pydantic
- Docker
- Docker Compose
pip install -r requirements.txt
Добавьте следующие переменные окружения
POSTGRES_USER = <логин>
POSTGRES_PASSWORD = <пароль>
POSTGRES_HOST = <хост подключения, по умолчанию ставить "localhost">
POSTGRES_PORT = <порт подключения, по умолчанию ставить 5432>
POSTGRES_DB = <название базы данных>
GITHUB_TOKEN = <токен авторизации GitHub>
Узнать как получить токен авторизации можно ЗДЕСЬ
- Для запуска API:
cd api/
uvicorn main:app --host 0.0.0.0 --port 8000
- Для запуска парсера:
cd parser/
python main.py
1. Объявить необходимые переменные окружения Как тут
- Для запуска API:
docker-compose up (для Windows)
docker compose up (для Unix)
Парсер можно развернуть на Yandex Cloud Function при помощи скрипта deploy_parser_yc.sh
Для этого:
- Необходимо установить и настроить Yandex Cloud CLI согласно официальной документации
- Убедиться что установлен Docker и Docker Compose
- Настроить Docker при помощи команды
yc container registry configure-docker
- Убедиться что пользователь добавлен в docker-группу
- Выполнить авторизацию Docker в Yandex Container Registry любым удобным способом
- Отредактировать скрипт
deploy_parser_yc.sh
установив собсвтенные значения для подключения к БД и ID сервисного аккаунта - Выдать права запуска скрипту и запустить
chmod +x deploy_parser_yc.sh
./deploy_parser_yc.sh