Catch connection errors.

Not logged in bugfix.
Minor tweaks.

Black for setup
This commit is contained in:
2021-07-23 10:12:00 +03:00
parent ade0f9b11a
commit 61df989cb4
4 changed files with 37 additions and 31 deletions

View File

@ -5,6 +5,7 @@ import time
from typing import Any, Dict, List, Mapping, Union
from requests import Response, Session
from requests.exceptions import ConnectionError
from requests_toolbelt.utils import dump
from erepublik import constants, utils
@ -43,7 +44,11 @@ class SlowRequests(Session):
def request(self, method, url, *args, **kwargs):
self._slow_down_requests()
self._log_request(url, method, **kwargs)
resp = super().request(method, url, *args, **kwargs)
try:
resp = super().request(method, url, *args, **kwargs)
except ConnectionError:
time.sleep(1)
return self.request(method, url, *args, **kwargs)
# self._log_response(resp)
return resp

View File

@ -177,9 +177,10 @@ class BaseCitizen(access_points.CitizenAPI):
if html is None:
self._get_main()
return
ugly_js = re.search(r'"promotions":\s*(\[{?.*?}?])', html).group(1)
promos = utils.json.loads(utils.normalize_html_json(ugly_js))
if self.promos is None:
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))
if promos is None:
self.promos = {}
else:
self.promos = {k: v for k, v in self.promos.items() if v > self.now}
@ -2920,7 +2921,7 @@ class _Citizen(
self.send_my_companies_update()
sleep_seconds = (start_time - self.now).total_seconds()
self.stop_threads.wait(sleep_seconds if sleep_seconds > 0 else 0)
except: # noqa
except Exception as e: # noqa
self.report_error("State updater crashed")
def send_state_update(self):