Compare commits

..

3 Commits

5 changed files with 24 additions and 16 deletions

View File

@ -4,7 +4,7 @@
__author__ = """Eriks Karls""" __author__ = """Eriks Karls"""
__email__ = 'eriks@72.lv' __email__ = 'eriks@72.lv'
__version__ = '0.23.4.12' __version__ = '0.23.4.13'
from erepublik import classes, constants, utils from erepublik import classes, constants, utils
from erepublik.citizen import Citizen from erepublik.citizen import Citizen

View File

@ -12,6 +12,7 @@ from typing import Any, Dict, List, NoReturn, Optional, Set, Tuple, Union
from requests import HTTPError, RequestException, Response from requests import HTTPError, RequestException, Response
from . import access_points, classes, constants, types, utils from . import access_points, classes, constants, types, utils
from .access_points import SlowRequests
from .classes import OfferItem from .classes import OfferItem
@ -508,7 +509,7 @@ class BaseCitizen(access_points.CitizenAPI):
self.write_log(f"Resumed as: {self.name}") self.write_log(f"Resumed as: {self.name}")
if re.search('<div id="accountSecurity" class="it-hurts-when-ip">', resp.text): if re.search('<div id="accountSecurity" class="it-hurts-when-ip">', resp.text):
self.restricted_ip = True 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.logged_in = True
self.get_csrf_token() self.get_csrf_token()
@ -732,7 +733,7 @@ class BaseCitizen(access_points.CitizenAPI):
self.get_csrf_token() self.get_csrf_token()
if re.search('<div id="accountSecurity" class="it-hurts-when-ip">', self.r.text): if re.search('<div id="accountSecurity" class="it-hurts-when-ip">', self.r.text):
self.restricted_ip = True 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.logged_in = True
@ -747,6 +748,9 @@ class BaseCitizen(access_points.CitizenAPI):
if response.status_code >= 400: if response.status_code >= 400:
self.r = response self.r = response
if response.status_code >= 500: if response.status_code >= 500:
if self.restricted_ip:
self._req.cookies.clear()
return True
self.write_log("eRepublik servers are having internal troubles. Sleeping for 5 minutes") self.write_log("eRepublik servers are having internal troubles. Sleeping for 5 minutes")
self.sleep(5 * 60) self.sleep(5 * 60)
else: else:
@ -2705,13 +2709,14 @@ class _Citizen(CitizenAnniversary, CitizenCompanies, CitizenLeaderBoard,
def state_update_repeater(self): def state_update_repeater(self):
try: try:
start_time = self.now.replace(second=0, microsecond=0) start_time = self.now.replace(minute=(self.now.minute // 10) * 10, second=0, microsecond=0)
if start_time.minute <= 30: if not self.restricted_ip:
start_time = start_time.replace(minute=30) if start_time.minute <= 30:
else: start_time = start_time.replace(minute=30)
start_time = utils.good_timedelta(start_time.replace(minute=0), timedelta(hours=1)) else:
start_time = utils.good_timedelta(start_time.replace(minute=0), timedelta(hours=1))
while not self.stop_threads.is_set(): 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_citizen_info()
self.update_weekly_challenge() self.update_weekly_challenge()
self.send_state_update() self.send_state_update()

View File

@ -3,7 +3,7 @@ import hashlib
import threading import threading
import weakref import weakref
from decimal import Decimal 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 from requests import Response, Session, post
@ -670,11 +670,14 @@ class Reporter:
except: # noqa except: # noqa
return [] return []
def fetch_tasks(self) -> List[Union[str, Tuple[Any]]]: def fetch_tasks(self) -> List[Dict[str, Any]]:
try: try:
task_response = self._req.get(f'{self.url}/api/v1/command', task_response = self._req.post(
params=dict(citizen=self.citizen_id, key=self.key)) f'{self.url}/api/v1/command', data=dict(citizen=self.citizen_id, key=self.key)).json()
return task_response.json().get('task_collection') if task_response.get('status'):
return task_response.get('data')
else:
return []
except: # noqa except: # noqa
return [] return []

View File

@ -1,5 +1,5 @@
[bumpversion] [bumpversion]
current_version = 0.23.4.12 current_version = 0.23.4.13
commit = True commit = True
tag = True tag = True
parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\.?(?P<dev>\d+)? parse = (?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)\.?(?P<dev>\d+)?

View File

@ -50,6 +50,6 @@ setup(
test_suite='tests', test_suite='tests',
tests_require=test_requirements, tests_require=test_requirements,
url='https://github.com/eeriks/erepublik/', url='https://github.com/eeriks/erepublik/',
version='0.23.4.12', version='0.23.4.13',
zip_safe=False, zip_safe=False,
) )