Skip to content

Commit 30d479a

Browse files
authored
Merge pull request #14 from Woyken/main
Some coupons are only found in V1 API
2 parents 202cce4 + 4fe5aaa commit 30d479a

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

lidlplus/__main__.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,20 @@ def activate_coupons(args):
151151
print("activating coupon: ", coupon["title"])
152152
lidl_plus.activate_coupon(coupon["id"])
153153
i += 1
154+
# Some coupons are only available through V1 API
155+
coupons = lidl_plus.coupon_promotions_v1()
156+
for section in coupons.get("sections", {}):
157+
for coupon in section.get("promotions", {}):
158+
if coupon["isActivated"]:
159+
continue
160+
validity = coupon.get("validity", {})
161+
if datetime.fromisoformat(validity["start"]) > datetime.now(timezone.utc):
162+
continue
163+
if datetime.fromisoformat(validity["end"]) < datetime.now(timezone.utc):
164+
continue
165+
print("activating coupon v1: ", coupon["title"])
166+
lidl_plus.activate_coupon_promotion_v1(coupon["promotionId"])
167+
i += 1
154168
print(f"Activated {i} coupons")
155169

156170

lidlplus/api.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
"""
22
Lidl Plus api
33
"""
4+
45
import base64
56
import html
67
import logging
@@ -40,6 +41,7 @@ class LidlPlusApi:
4041
_AUTH_API = "https://accounts.lidl.com"
4142
_TICKET_API = "https://tickets.lidlplus.com/api/v2"
4243
_COUPONS_API = "https://coupons.lidlplus.com/api"
44+
_COUPONS_V1_API = "https://coupons.lidlplus.com/app/api/"
4345
_PROFILE_API = "https://profile.lidlplus.com/profile/api"
4446
_APP = "com.lidlplus.app"
4547
_OS = "iOs"
@@ -269,6 +271,18 @@ def ticket(self, ticket_id):
269271
url = f"{self._TICKET_API}/{self._country}/tickets"
270272
return requests.get(f"{url}/{ticket_id}", **kwargs).json()
271273

274+
def coupon_promotions_v1(self):
275+
"""Get list of all coupons API V1"""
276+
url = f"{self._COUPONS_V1_API}/v1/promotionslist"
277+
kwargs = {"headers": {**self._default_headers(), "Country": self._country}, "timeout": self._TIMEOUT}
278+
return requests.get(url, **kwargs).json()
279+
280+
def activate_coupon_promotion_v1(self, promotion_id):
281+
"""Activate single coupon by id API V1"""
282+
url = f"{self._COUPONS_V1_API}/v1/promotions/{promotion_id}/activation"
283+
kwargs = {"headers": {**self._default_headers(), "Country": self._country}, "timeout": self._TIMEOUT}
284+
return requests.post(url, **kwargs)
285+
272286
def coupons(self):
273287
"""Get list of all coupons"""
274288
url = f"{self._COUPONS_API}/v2/{self._country}"

0 commit comments

Comments
 (0)