File: PKG-INFO

package info (click to toggle)
python-picnic-api 1.1.0-1.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 108 kB
  • sloc: python: 168; makefile: 7
file content (101 lines) | stat: -rw-r--r-- 3,546 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Metadata-Version: 2.1
Name: python-picnic-api
Version: 1.1.0
Summary: 
Home-page: https://github.com/MikeBrink/python-picnic-api
License: Apache-2.0
Author: Mike Brink
Author-email: mjh.brink@icloud.com
Requires-Python: >=3.6,<4.0
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Dist: requests (>=2.24.0,<3.0.0)
Project-URL: Repository, https://github.com/MikeBrink/python-picnic-api
Description-Content-Type: text/x-rst

"""""""""""""""""
Python-Picnic-API
"""""""""""""""""

.. image:: https://camo.githubusercontent.com/cd005dca0ef55d7725912ec03a936d3a7c8de5b5/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6275792532306d6525323061253230636f666665652d646f6e6174652d79656c6c6f772e737667
    :target: https://www.buymeacoffee.com/MikeBrink
    :alt: Buy me a coffee

Unofficial Python wrapper for the Picnic_ API. While not all API methods have been implemented yet, you'll find most of what you need to build a working application are available. 

This library is not affiliated with Picnic and retrieves data from the endpoints of the mobile application. Use at your own risk.

.. _Picnic: https://picnic.app/nl/

===============
Getting started
===============
The easiest way to install is directly from pip::

    $ pip install python-picnic-api


-----
Usage
-----
I'll go over a few common operations here you'll most likely use in applications. 
To login:

.. code-block:: python

    from python_picnic_api import PicnicAPI

    picnic = PicnicAPI(username='username', password='password', country_code="NL")

The country_code parameter defaults to NL, but you have to change it if you live in a different country than the Netherlands (Germany: DE, Belgium: BE).
You can also store your credentials by setting the store value to true, this will store your credentials and country_code in /config/app.yaml. 

Searching for a product
-----------------------
.. code-block:: python

    >>> picnic.search('coffee')
    [{'type': 'CATEGORY', 'id': 'coffee', 'links': [{'type': 'SEARCH', 'href': 'https://storefront-prod.nl.picnicinternational.com/api/15/search?search_term=coffee'}], 'name': 'coffee', 'items': [{'type': 'SINGLE_ARTICLE', 'id': '10511523', 'decorators': [{'type': 'UNIT_QUANTITY', 'unit_quantity_text': '500 gram'}], 'name': 'Lavazza espresso koffiebonen', 'display_price': 599, 'price': 599, 'image_id': 'd3fb2888fc41514bc06dfd6b52f8622cc222d017d2651501f227a537915fcc4f', 'max_count': 50, 'unit_quantity': '500 gram', 'unit_quantity_sub': '€11.98/kg', 'tags': []}, ... 

Check cart
----------
.. code-block:: python

    >>> picnic.get_cart()
    {'type': 'ORDER', 'id': 'shopping_cart', 'items': [], 'delivery_slots': [...


Manipulating your cart
----------------------
All of these methods will return the shopping cart.

.. code-block:: python

    # adding 2 'Lavazza espresso koffiebonen' to cart
    picnic.add_product('10511523', count=2)

    # removing 1 'Lavazza espresso koffiebonen' from cart
    picnic.remove_product('10511523')

    # clearing the cart
    picnic.clear_cart()

See upcoming deliveries
------------------------
.. code-block:: python

    >>> picnic.get_current_deliveries()
    []


See available delivery slots
----------------------------
.. code-block:: python

    >>> picnic.get_delivery_slots()