diff --git a/erepublik/citizen.py b/erepublik/citizen.py index 0b0e0f7..9b0a404 100644 --- a/erepublik/citizen.py +++ b/erepublik/citizen.py @@ -210,6 +210,10 @@ class Citizen(classes.CitizenAPI): return response def post(self, url: str, data: dict = None, json: dict = None, **kwargs) -> Response: + if json is None: + json = {} + if data is None: + data = {} if (self.now - self._req.last_time).seconds >= 14 * 60: self.get_csrf_token() if "_token" in data: @@ -224,7 +228,6 @@ class Citizen(classes.CitizenAPI): self.sleep(60) return self.post(url, data, json, **kwargs) - # response = super().post(url, data=data, json=json, **kwargs) try: resp_data = response.json() if (resp_data.get("error") or not resp_data.get("status")) and resp_data.get("message", "") == "captcha": @@ -248,7 +251,7 @@ class Citizen(classes.CitizenAPI): def check_for_new_medals(self, html: str): new_medals = re.findall(r'(
.*?
\s*
)', html, re.M | re.S | re.I) - data = {} + data: Dict[Tuple[str, Union[float, str]], Dict[str, Union[int, str, float]]] = {} for medal in new_medals: try: info = re.search(r"

New Achievement

.*?(.*?)

.*?" @@ -263,10 +266,11 @@ class Citizen(classes.CitizenAPI): except ValueError: reward = reward[:-1] - if title not in data: - data[title] = {'about': about, 'kind': title, 'reward': reward, "count": 1, "currency": currency} + if (title, reward) not in data: + data[(title, reward)] = {'about': about, 'kind': title, 'reward': reward, "count": 1, + "currency": currency} else: - data[title]['count'] += 1 + data[(title, reward)]['count'] += 1 except AttributeError: continue if data: @@ -276,7 +280,7 @@ class Citizen(classes.CitizenAPI): msgs = "\n".join(msgs) self.telegram.report_medal(msgs) - self.write_log("Found awards: {}".format(msgs)) + self.write_log("Found awards:\n{}".format(msgs)) for info in data.values(): self.reporter.report_action("NEW_MEDAL", info) @@ -1782,6 +1786,8 @@ class Citizen(classes.CitizenAPI): battle_id = re.search(r'Join', html).group(1) ret.update(can_attack=False, battle_id=battle_id) + elif re.search(r'This war is no longer active.', html): + ret.update(can_attack=False, ended=True) else: ret.update(can_attack=False) return ret diff --git a/erepublik/classes.py b/erepublik/classes.py index 432a852..a2a01e4 100644 --- a/erepublik/classes.py +++ b/erepublik/classes.py @@ -250,7 +250,7 @@ class SlowRequests(Session): file_data = { "path": 'debug/requests', - "time": self.last_time.strftime('%Y-%m-%d_%H-%M-%S'), + "time": self.last_time.strftime('%Y/%m/%d/%H-%M-%S'), "name": utils.slugify(url[len(Citizen.url):]), "extra": "_REDIRECT" if redirect else "" }