From 2288fe01ea2a86437d978001877555d774d2f93b Mon Sep 17 00:00:00 2001 From: KEriks Date: Mon, 30 Aug 2021 16:36:25 +0300 Subject: [PATCH] Fixed promo reporting --- erepublik/citizen.py | 17 +++++++++++++---- tests/test_erepublik_script.py | 4 ++-- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/erepublik/citizen.py b/erepublik/citizen.py index a688580..1755731 100644 --- a/erepublik/citizen.py +++ b/erepublik/citizen.py @@ -180,12 +180,21 @@ class BaseCitizen(access_points.CitizenAPI): ugly_js_match = re.search(r'"promotions":\s*(\[{?.*?}?])', html) ugly_js = ugly_js_match.group(1) if ugly_js_match else "null" promos = utils.json_loads(utils.normalize_html_json(ugly_js)) - self.promos = {} + if self.promos: + self.promos = {k: v for k, v in self.promos.items() if v > self.now} + else: + self.promos = {} + try: if promos: - self.promos = {p['typeId']: p for p in promos} - except: - pass + for promo in promos: + kind = promo["typeId"] + time_until = utils.localize_timestamp(promo["expiresAt"]) + if kind not in self.promos: + self.reporter.report_promo(kind, time_until) + self.promos[kind] = time_until + except Exception: + self.process_error() new_date = re.search(r"var new_date = '(\d*)';", html) if new_date: self.energy.set_reference_time(utils.good_timedelta(self.now, timedelta(seconds=int(new_date.group(1))))) diff --git a/tests/test_erepublik_script.py b/tests/test_erepublik_script.py index d830d5e..38efb6f 100644 --- a/tests/test_erepublik_script.py +++ b/tests/test_erepublik_script.py @@ -3,10 +3,10 @@ """Tests for `erepublik` package.""" -from erepublik import Citizen - import unittest +from erepublik import Citizen + class TestErepublik(unittest.TestCase): """Tests for `erepublik` package."""