perekrestok_api.abstraction

Classes

Any(*args, **kwargs)

Special type indicating an unconstrained type.

BannerPlace()

Место показа баннера

CatalogFeedFilter()

Фильтры каталога с параметрами

CatalogFeedSort()

Опции сортировки для фидов каталога товаров.

GeolocationPointSort()

Опции сортировки для точек геолокации.

Geoposition(*args[, longitude, latitude, ...])

Класс для работы с географическими координатами.

QualifierFeatureKey()

Ключи функционала API

SortOption(order_by)

Базовый класс для создания опций сортировки с направлениями ASC/DESC.

class BannerPlace[source][source]

Bases: object

Место показа баннера

MAIN_BANNERS = 'main_web_banners'

Главные баннеры

BRANDS = 'web_brands'

Бренды

CATEGORY = 'web_category'

Категория

class SpecialCategory[source][source]

Bases: object

Специальная категория

TITLE = 'web_spec_category_title'

Заголовок специальной категории

LEFT = 'web_spec_category_left'

Левый баннер специальной категории

RIGHT = 'web_spec_category_right'

Правый баннер специальной категории

class QualifierFeatureKey[source][source]

Bases: object

Ключи функционала API

VIRTUAL_CARD_BLOCK = 'virtual_card_block'

Блокировка виртуальной карты

BASKET_DELIVERY_BANNER = 'basket_delivery_banner_web'

Баннер доставки корзины

STICKERS_AVAILABILITY = 'stickers_availability'

Доступность стикеров

SPAM_TRAP = 'spam_trap'

Механизм защиты от спама

AB_EXP = 'ab_exp_web'

Эксперименты A/B тестирования

PRODUCT_REVIEW_UPLOAD_IMAGE = 'product_review_upload_image'

Загрузка изображений в отзыве о продукте

PARTNERS = 'partners'

Список партнёров

CHARITY = 'charity'

Функционал благотворительности

CARD_ACTIVATION_UNAVAILABLE = 'card_activation_unavailable'

Недоступность активации карты

LOYALTY_CARD_NOTIFICATION = 'loyalty_card_notification'

Уведомление о лояльности карты

PURCHASE_HISTORY_NOTIFICATION = 'purchase_history_notification'

Уведомление о истории покупок

LOYALTY_LEVELS = 'loyalty_levels'

Уровни лояльности

LOYALTY_ACHIEVEMENT = 'loyalty_achievement'

Достижения в лояльности

TAG_TREES = 'tag_trees'

Дерево тегов

PRODUCT_REVIEW = 'product_review_web'

Отзыв о продукте

CHECKOUT_PROMO = 'checkout_promo'

Промоакции на этапе оформления заказа

NEW_GENERAL_CHAT = 'new_general_chat'

Новый общий чат

PHOTO_REVIEW = 'photo_review'

Фотоотзыв о продукте

PREORDER_X5D = 'preorder_x5d'

Предпросмотр заказа X5D

class EPL[source][source]

Bases: object

Ключи функционала EPL

PARTNERS = 'partners_web_epl'

Партнёры EPL

BAR_CLUB = 'bar_club_web_epl'

Бар-клуб EPL

EDINYI_RAZDEL_X5 = 'edinyi_razdel_x5_epl'

Единый раздел X5 в EPL

ORANGE_BANNER = 'orange_banner_epl'

Оранжевый баннер EPL

ORANGE_CASHBACK = 'orange_cashback_epl'

Оранжевый кэшбэк EPL

DISCOUNT_DETAILS = 'discount_details_epl'

Детали скидки EPL

VIP_DETAILS = 'vip_details_epl'

Детали VIP EPL

X5_BANNER = 'x5_banner_web_epl'

Баннер X5 в EPL

PACKET_PROMO = 'packet_promo_web_epl'

Промо-пакет EPL

VIRTUAL_ORANGE = 'virtual_orange_web_epl'

Виртуальный оранжевый EPL

BAR_CLUB_FORMS = 'bar_club_forms_epl'

Формы бар-клуба EPL

FAVORITE_CATEGORY_V2 = 'favorite_category_v2_epl'

Избранная категория V2 EPL

class Emergency[source][source]

Bases: object

Экстренные ключи

DISABLE_LOGIN = 'emergency_disable_login'

Отключение авторизации

DISABLE_CHECKOUT = 'emergency_disable_checkout'

Отключение оформления заказа

static get_all() list[str][source][source]

Собирает все значения из QualifierFeatureKey

class CatalogFeedFilter[source][source]

Bases: object

Фильтры каталога с параметрами

set_price_range(
lowest: float,
highest: float,
) None[source][source]

Устанавливает диапазон цен.

Parameters:
  • lowest (float) – Минимальная цена.

  • highest (float) – Максимальная цена.

as_dict(
use_hidden_key: bool = True,
) dict[source][source]

Преобразует фильтры в словарь для использования в API запросах.

Является в большей степени внутренним методом.

Parameters:

use_hidden_key – Использовать скрытые ключи API вместо понятных имён. hidden_key - это имя фильтра воспринимаемое сервером Перекрестка. Внутри библиотеки создана обёртка с другими неймами для удобства и ясности.

class Filter(
default_value: Any,
property_type: type,
hidden_key: str,
)[source][source]

Bases: object

Фильтр с параметрами value и hidden_key

property value: Any

Возвращает текущее значение фильтра.

property hidden_key: str

Возвращает ключ фильтра, используемый в запросах к API.

property property_type: type

Возвращает тип значения фильтра.

class FeaturesFilter(
default_value,
property_type: type,
hidden_key: str,
)[source][source]

Bases: Filter

Класс для работы с фильтром FEATURES.

add(key: str, value: str)[source][source]

Добавляет новую особенность в FEATURES.

Parameters:
  • key – Ключ особенности (например, “brand”)

  • value – Значение особенности (например, “Nike”)

remove(
key: str,
value: str,
)[source][source]

Удаляет особенность из FEATURES.

Parameters:
  • key – Ключ особенности для удаления

  • value – Значение особенности для удаления

to_list() list[dict[str, str]][source][source]

Конвертирует структуру FEATURES в список словарей для API.

CATEGORY_ID

ID категорий бывают 2 видов - главные и дочерние. По сути они имеют одинаковый и равный статус для системы.

PROMO_LISTING

Работает как фильтр (при != -1), т.е. отбраковываются товары не учавствующие в акции. От куда брать доступные id остаётся загадкой. Можно просто перебрать id от 1 до N (пару сотен, думаю, достаточно).

FROM_PEREKRESTOK

Исключает товары не являющиеся внутренним брендом сети (только СТМ).

ONLY_DISCOUNT

Исключает товары без скидки (по регулярной цене).

ONLY_WITH_REVIEWS

без отзывов или без оценок).

Type:

Исключает товары без отзывов (требуется уточнение

LOWEST_PRICE

Фильтр исключающий цену в копейках где <N. По умолчанию -1 (отсутствует). Диапазон цен для текущего поиска можно получить с помощью .Catalog.form()['content']['priceFrom'] (цена передаётся в копейках так же в копейках).

Рекумендую использовать только в паре с HIGHEST_PRICE, т.к. я не знаю как сервер воспримет посылку только одного поля. Т.е. используйте self.set_price_range(lowest, highest)

HIGHEST_PRICE

Фильтр исключающий цену в копейках где >N. По умолчанию -1 (отсутствует). Диапазон цен для текущего поиска можно получить с помощью .Catalog.form()['content']['priceTo'] (цена передаётся в копейках так же в копейках).

Рекумендую использовать только в паре с LOWEST_PRICE, т.к. я не знаю как сервер воспримет посылку только одного поля. Т.е. используйте self.set_price_range(lowest, highest)

FEATURES

страна изготовитель, тип продукта, бренд и тп.

Для получения доступных особенностей обратитесь к .Catalog.form()['content']['searchFeatures']. Ключ для .add()/.remove() Вы можете найти в key на первом уровне массива словарей, внутри такого словаря так же будет enumList содержащий массив словарей с доступными значениями фильтра в value.

Type:

Фильтр для “особенностей” продукта. Таких как

class SortOption(order_by: str)[source][source]

Bases: object

Базовый класс для создания опций сортировки с направлениями ASC/DESC.

class CatalogFeedSort[source][source]

Bases: object

Опции сортировки для фидов каталога товаров.

Price = <perekrestok_api.abstraction.SortOption object>

Сортировка по цене

Popularity = <perekrestok_api.abstraction.SortOption object>

Сортировка по популярности

Discount = <perekrestok_api.abstraction.SortOption object>

Сортировка по размеру скидки

Rating = <perekrestok_api.abstraction.SortOption object>

Сортировка по рейтингу

Recommended = <perekrestok_api.abstraction.SortOption object>

Рекомендуемая сортировка (популярность без ручной настройки)

class GeolocationPointSort[source][source]

Bases: object

Опции сортировки для точек геолокации.

Distance = <perekrestok_api.abstraction.SortOption object>

Сортировка по расстоянию

class Geoposition(
*args: list | tuple,
longitude: float = None,
latitude: float = None,
coordinates: list | tuple = None,
)[source][source]

Bases: object

Класс для работы с географическими координатами.

Поддерживает несколько форматов инициализации: - Отдельные именованные параметры latitude/longitude - Список/кортеж coordinates [долгота, широта] (стандарт Перекрёстка) - Два отдельных float аргумента [широта, долгота] (мировой стандарт)

Note

При передаче координат через кортеж/массив, они идут как [долгота, широта] (стандарт для ответов от Перекрестка). При передаче как отдельных неименованных параметров, они идут как [широта, долгота] (стандарт для мира).