Skip to content

DimDimi4-and-fixiki/avito_task

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API для отслеживания числа объявлений на avito.ru

Технологии:

  • Python 3.7
  • FastAPI
  • Selenium для парсинга.
  • SQLite для хранения данных сервиса
  • Docker
  • Pydantic для создания моделей

Методы:

  • /add- Метод регистрирует пару. Принимает два значения: phrase (string) и region (string), возвращает id добавленной пары. Если пара была в системе ранее то вернется существующее ранее id, если она новая, то значения будут добавлены в базу данных и вернется id новой пары. После добавления дла пары каждый час будут считаться топ 5 объявлений и число объявлений.

  • /stat - Метод возвращает пары (временная_метка: счетчик_числа_объявлений). Число объявлений вычисляется каждый час и добавляется в базу данных в таблицу TimeStamps. На вход методу подается id (string) пары, зарегистрированной в системе

  • /get_top - Метод возвращает список ссылок на топ-5 объявлений. Принимает id (string) пары, которая зарегистрированна в системе

Примеры работы методов:

  • При вызове /add("Диван", "Москва") вернется результат:
{  
	"id": "1"  
}
  • При вызове /stat("1") вернется результат:
{
  "result": {
    "1607427986.62899": "44187"
  }
}
  • При вызове /get_top("1") вернется результат:
{
  "result": [
    "https://www.avito.ru/moskva/mebel_i_interer/divan_1661672386",
    "https://www.avito.ru/moskva/mebel_i_interer/divan_1807130361",
    "https://www.avito.ru/moskva/mebel_i_interer/divan_chesterfild_uglovoy_raskladnoy_akvamarin_1597487357",
    "https://www.avito.ru/moskva/mebel_i_interer/uglovoy_divan_2057617591",
    "https://www.avito.ru/moskva/mebel_i_interer/divan_s_mehanizmom_delfin_2039315793"
  ]
}

Docker:

  • Для сбоки и запуска нужно выполнить команду docker-compose up (можно и даже лучше docker-compose up --build).
    После чего будут загружены все нужные библиотеки,
    chromedriver, google chrome, созданы таблицы в базе данных. Сам API использует 80ый порт.
    Сборка Docker была проверена на Ubuntu.

Тесты:

  • API было протестировано на 600 запросах add/, из которых некоторые имели 0 объявлений и некоректные регионы, на 600 stat/, и на 400 get_top/.
  • Тесты можно посмотреть в папке tests
  • Для тестирования использовалась библиотека pytest и плагин -cov
  • Покрытие составило 100%

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages