All Projects → bartmachielsen → SupermarktConnector

bartmachielsen / SupermarktConnector

Licence: MIT license
Collecting product information from Dutch supermarkets: Albert Heijn and Jumbo using the Mobile API

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to SupermarktConnector

Filemanager
An open-source file manager released under MIT license. Up-to-date for PHP connector. This package is DEPRECATED. Now, please use RichFileManager available at : https://github.com/servocoder/RichFilemanager.
Stars: ✭ 926 (+917.58%)
Mutual labels:  connector
Mongolastic
🚥 A dataset migration tool from MongoDB to Elasticsearch and vice versa.
Stars: ✭ 131 (+43.96%)
Mutual labels:  connector
Go Clickhouse
Golang ClickHouse connector
Stars: ✭ 174 (+91.21%)
Mutual labels:  connector
Goridge
High-performance PHP-to-Golang IPC bridge
Stars: ✭ 950 (+943.96%)
Mutual labels:  connector
Streamx
kafka-connect-s3 : Ingest data from Kafka to Object Stores(s3)
Stars: ✭ 96 (+5.49%)
Mutual labels:  connector
Azure Event Hubs Spark
Enabling Continuous Data Processing with Apache Spark and Azure Event Hubs
Stars: ✭ 140 (+53.85%)
Mutual labels:  connector
Presto Redis
presto-redis is an experimental sql layer for redis
Stars: ✭ 18 (-80.22%)
Mutual labels:  connector
Powerplatformconnectors
This is a repository for Microsoft Power Automate, Power Apps, and Azure Logic Apps connectors
Stars: ✭ 209 (+129.67%)
Mutual labels:  connector
Moneyd
Connect your machine to the Interledger
Stars: ✭ 100 (+9.89%)
Mutual labels:  connector
Blocks.js
JavaScript dataflow graph editor
Stars: ✭ 165 (+81.32%)
Mutual labels:  connector
Examples
Demo applications and code examples for Confluent Platform and Apache Kafka
Stars: ✭ 571 (+527.47%)
Mutual labels:  connector
Camus
Mirror of Linkedin's Camus
Stars: ✭ 81 (-10.99%)
Mutual labels:  connector
Soicbite
A compact PCB footprint which allows SOIC test clips to be used as a space-efficient programming and debugging connector
Stars: ✭ 161 (+76.92%)
Mutual labels:  connector
Botbuilder Viber
Plug-in Viber connector for Microsoft BotBuilder framework
Stars: ✭ 12 (-86.81%)
Mutual labels:  connector
Mongo Es
A MongoDB to Elasticsearch connector
Stars: ✭ 185 (+103.3%)
Mutual labels:  connector
Yubihsm Go
A Go client for the yubihsm2 binary protocol and connector service
Stars: ✭ 19 (-79.12%)
Mutual labels:  connector
Kafka Connect Mongodb
**Unofficial / Community** Kafka Connect MongoDB Sink Connector - Find the official MongoDB Kafka Connector here: https://www.mongodb.com/kafka-connector
Stars: ✭ 137 (+50.55%)
Mutual labels:  connector
keda-connectors
Generic connectors for Keda which can be used as worker images as part of scaleTargetRef.
Stars: ✭ 22 (-75.82%)
Mutual labels:  connector
Grial
A Node.js framework for creating GraphQL API servers easily and without a lot of boilerplate.
Stars: ✭ 194 (+113.19%)
Mutual labels:  connector
Azure Cosmosdb Spark
Apache Spark Connector for Azure Cosmos DB
Stars: ✭ 165 (+81.32%)
Mutual labels:  connector

SupermarketConnector

Publish

Collecting product information from Dutch supermarkets: Albert Heijn and Jumbo

Getting Started

Install the Pip package

pip install supermarktconnector

Sample

Import the jumbo connector and search for a product

from supermarktconnector.jumbo import JumboConnector
connector = JumboConnector()
connector.search_products(query='Smint', size=1, page=0)
{
  "products": {
    "data": [
      {
        "id": "70942PAK",
        "title": "Smint Peppermint Sugarfree 100 Stuks 2 x 35g",
        "quantityOptions": [
          {
            "defaultAmount": 1,
            "minimumAmount": 1,
            "amountStep": 1,
            "unit": "pieces",
            "maximumAmount": 99
          }
        ],
        "prices": {
          "price": {
            "currency": "EUR",
            "amount": 365
          },
          "unitPrice": {
            "unit": "kg",
            "price": {
              "currency": "EUR",
              "amount": 5214
            }
          }
        },
        "available": true,
        "productType": "Product",
        "quantity": "2 x 35 g",
        "imageInfo": {
          "primaryView": [
            {
              "url": "https://ish-images-static.prod.cloud.jumbo.com/product_images/240420200540_70942PAK-1_360x360.png",
              "height": 360,
              "width": 360
            }
          ]
        }
      }
    ]
  }
}

You can also get the different product-categories:

from supermarktconnector.ah import AHConnector
connector = AHConnector()
connector.get_categories()
[
  {
    "id": 6401,
    "name": "Aardappel, groente, fruit",
    "images": [
      {
        "height": 400,
        "width": 600,
        "url": "https://static.ahold.com//cmgtcontent/media//002304400/000/002304468_001_groenten-fruit.png"
      }
    ],
    "nix18": false
  }
]

Deprecated

X-Digest (Albert Heijn)

The Albert Heijn used a special X-Digest for verifying that the app data traffic was coming from the backend, in the new versions this has been removed.

This X-Digest is an hashed value that uses SHA1 to check if the request is valid and made by the original android app. The logic behind this hash is:

X_DIGEST = URL + PARAMETERS + USERNAME + POST_BODY (Max 1000 bytes) + SECRET_PASSWORD

Price differences (Jumbo)

In the past all the the jumbo stores where divided over 5 different categories, with each category a different price for some of the products. The token used for store identification is no longer working in the new versions, It might be handled on the backend.

I created an interactive map which sorts all the stores by category.

Jumbo prices

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].