From a1c6fb06a0aa03de57060a1577cca5ec51c9a223 Mon Sep 17 00:00:00 2001 From: Eriks K Date: Wed, 20 Jan 2021 22:25:07 +0200 Subject: [PATCH] Task fetcher updates, state update repeater frequency increased for restricted IPs to not timeout cookie session --- erepublik/citizen.py | 17 +++++++++-------- erepublik/classes.py | 13 ++++++++----- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/erepublik/citizen.py b/erepublik/citizen.py index d956822..d6a0639 100644 --- a/erepublik/citizen.py +++ b/erepublik/citizen.py @@ -509,7 +509,7 @@ class BaseCitizen(access_points.CitizenAPI): self.write_log(f"Resumed as: {self.name}") if re.search('
', resp.text): self.restricted_ip = True - self.report_error("eRepublik has blacklisted IP. Limited functionality!", True) + # self.report_error("eRepublik has blacklisted IP. Limited functionality!", True) self.logged_in = True self.get_csrf_token() @@ -733,7 +733,7 @@ class BaseCitizen(access_points.CitizenAPI): self.get_csrf_token() if re.search('
', self.r.text): self.restricted_ip = True - self.report_error("eRepublik has blacklisted IP. Limited functionality!", True) + # self.report_error("eRepublik has blacklisted IP. Limited functionality!", True) self.logged_in = True @@ -2709,13 +2709,14 @@ class _Citizen(CitizenAnniversary, CitizenCompanies, CitizenLeaderBoard, def state_update_repeater(self): try: - start_time = self.now.replace(second=0, microsecond=0) - if start_time.minute <= 30: - start_time = start_time.replace(minute=30) - else: - start_time = utils.good_timedelta(start_time.replace(minute=0), timedelta(hours=1)) + start_time = self.now.replace(minute=(self.now.minute // 10) * 10, second=0, microsecond=0) + if not self.restricted_ip: + if start_time.minute <= 30: + start_time = start_time.replace(minute=30) + else: + start_time = utils.good_timedelta(start_time.replace(minute=0), timedelta(hours=1)) while not self.stop_threads.is_set(): - start_time = utils.good_timedelta(start_time, timedelta(minutes=30)) + start_time = utils.good_timedelta(start_time, timedelta(minutes=10 if self.restricted_ip else 30)) self.update_citizen_info() self.update_weekly_challenge() self.send_state_update() diff --git a/erepublik/classes.py b/erepublik/classes.py index a772d9f..72deacc 100644 --- a/erepublik/classes.py +++ b/erepublik/classes.py @@ -3,7 +3,7 @@ import hashlib import threading import weakref from decimal import Decimal -from typing import Any, Dict, Generator, Iterable, List, NamedTuple, NoReturn, Tuple, Union +from typing import Any, Dict, Generator, Iterable, List, NamedTuple, NoReturn, Union from requests import Response, Session, post @@ -670,11 +670,14 @@ class Reporter: except: # noqa return [] - def fetch_tasks(self) -> List[Union[str, Tuple[Any]]]: + def fetch_tasks(self) -> List[Dict[str, Any]]: try: - task_response = self._req.get(f'{self.url}/api/v1/command', - params=dict(citizen=self.citizen_id, key=self.key)) - return task_response.json().get('task_collection') + task_response = self._req.post( + f'{self.url}/api/v1/command', data=dict(citizen=self.citizen_id, key=self.key)).json() + if task_response.get('status'): + return task_response.get('data') + else: + return [] except: # noqa return []