Skip to main content

A Python API client for Pyaterochka store catalog

Project description

Pyaterochka API (not official / не официальный)

Pyaterochka (Пятёрочка) - https://5ka.ru/

PyPI - Python Version PyPI - Package Version PyPI - Downloads Discord Telegram

Installation / Установка:

  1. Install package / Установка пакета:
pip install pyaterochka_api
  1. Debian/Ubuntu Linux: Install dependencies / Установка зависимостей:
sudo apt update && sudo apt install -y libgtk-3-0 libx11-xcb1
  1. Install browser / Установка браузера:
camoufox fetch

Usage / Использование:

from pyaterochka_api import Pyaterochka
import asyncio


async def main():
    async with Pyaterochka(proxy="user:password@host:port", debug=False, autoclose_browser=False) as API:
        # RUS: Вводим геоточку (самого магазина или рядом с ним) и получаем инфу о магазине
        # ENG: Enter a geolocation (of the store or near it) and get info about the store
        find_store = await API.find_store(longitude=37.63156, latitude=55.73768)
        print(f"Store info output: {find_store!s:.100s}...\n")

        # RUS: Выводит список всех категорий на сайте
        # ENG: Outputs a list of all categories on the site
        catalog = await API.categories_list(subcategories=True, mode=API.PurchaseMode.DELIVERY)
        print(f"Categories list output: {catalog!s:.100s}...\n")

        # RUS: Выводит список всех товаров выбранной категории (ограничение 100 элементов, если превышает - запрашивайте через дополнительные страницы)
        # ENG: Outputs a list of all items in the selected category (limiting to 100 elements, if exceeds - request through additional pages)
        # Страниц не сущетвует, использовать желаемый лимит (до 499) / Pages do not exist, use the desired limit (up to 499)
        items = await API.products_list(catalog[0]['id'], limit=5)
        print(f"Items list output: {items!s:.100s}...\n")

        # RUS: Выводит информацию о товаре (по его plu - id товара).
        # Функция в первый раз достаточно долгая, порядка 5-9 секунды, последующие запросы около 2 секунд (если браузер не был закрыт)
        # ENG: Outputs information about the product (by its plu - product id).
        # The function is quite long the first time, about 5-9 seconds, subsequent requests take about 2 seconds (if the browser was not closed)
        info = await API.product_info(43347)
        print(f"Product output: {info["props"]["pageProps"]["props"]['productStore']!s:.100s}...\n")

        # RUS: Влияет исключительно на функцию выше (product_info), если включено, то после отработки запроса браузер закроется и кеши очищаются.
        # Не рекомендую включать, если вам все же нужно освободить память, лучше использовать API.close(session=False, browser=True)
        # ENG: Affects only the function above (product_info), if enabled, the browser will close after the request is processed and caches are cleared.
        # I do not recommend enabling it, if you still need to free up memory, it is better to use API.close(session=False, browser=True)
        API.autoclose_browser = True

        # RUS: Выводит список последних промо-акций/новостей (можно поставить ограничитель по количеству, опционально)
        # ENG: Outputs a list of the latest promotions/news (you can set a limit on the number, optionally)
        news = await API.get_news(limit=5)
        print(f"News output: {news!s:.100s}...\n")

        # RUS: Выводит основной конфиг сайта (очень долгая функция, рекомендую сохранять в файл и переиспользовать)
        # ENG: Outputs the main config of the site (large function, recommend to save in a file and re-use it)
        print(f"Main config: {await API.get_config()!s:.100s}...\n")

        # RUS: Если требуется, можно настроить вывод логов в консоль
        # ENG: If required, you can configure the output of logs in the console
        API.debug = True

        # RUS: Скачивает картинку товара (возвращает BytesIO или None)
        # ENG: Downloads the product image (returns BytesIO or None)
        image = await API.download_image(url=items['products'][0]['image_links']['normal'][0])
        with open(image.name, 'wb') as f:
            f.write(image.getbuffer())

        # RUS: Так же как и debug, в рантайме можно переназначить прокси
        # ENG: As with debug, you can reassign the proxy in runtime
        API.proxy = "user:password@host:port"
        # RUS: Чтобы применить изменения, нужно пересоздать подключение (session - aiohttp отвечающее за все, кроме product_info, за него browser)
        # ENG: To apply changes, you need rebuild connection (session - aiohttp responsible for everything except product_info, for it browser)
        await API.rebuild_connection()
        await API.categories_list()


if __name__ == '__main__':
    asyncio.run(main())

Report / Обратная связь

If you have any problems using it /suggestions, do not hesitate to write to the project's GitHub!

Если у вас возникнут проблемы в использовании / пожелания, не стесняйтесь писать на GitHub проекта!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyaterochka_api-0.1.6.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyaterochka_api-0.1.6-py3-none-any.whl (18.0 kB view details)

Uploaded Python 3

File details

Details for the file pyaterochka_api-0.1.6.tar.gz.

File metadata

  • Download URL: pyaterochka_api-0.1.6.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for pyaterochka_api-0.1.6.tar.gz
Algorithm Hash digest
SHA256 fb5d7e15dd6bbb46e01ad6007661da83a0f055a9b17c15b4e41862a8fc94334f
MD5 80ef2335f47ba8bf22298619ed6ce778
BLAKE2b-256 d054ac9d6dc4e11b1b519f426a192fd8ce56aae2230e0863fbf05a7c47f5bcaa

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyaterochka_api-0.1.6.tar.gz:

Publisher: python-publish.yml on Open-Inflation/pyaterochka_api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyaterochka_api-0.1.6-py3-none-any.whl.

File metadata

File hashes

Hashes for pyaterochka_api-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 9a8e356a09c367123a649a0b7a99db66a348d06a08c239488a3bf9cacd5718b7
MD5 f4461aafa5f5ef9d4b9d325165b48d6a
BLAKE2b-256 8fc55ef1abda8165f1837475dca01af11044b03a983d07c59a7228fe02099aca

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyaterochka_api-0.1.6-py3-none-any.whl:

Publisher: python-publish.yml on Open-Inflation/pyaterochka_api

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page