Variable and method redeclaration

This commit is contained in:
Eriks Karls 2019-12-18 11:44:18 +02:00
parent b7f8182ef5
commit 12aee23739
2 changed files with 34 additions and 32 deletions

View File

@ -1,10 +1,9 @@
import re import re
import sys import sys
from threading import Event
from itertools import product
from datetime import datetime, timedelta from datetime import datetime, timedelta
from itertools import product
from json import loads, dumps from json import loads, dumps
from threading import Event
from time import sleep from time import sleep
from typing import Dict, List, Tuple, Any, Union, Set from typing import Dict, List, Tuple, Any, Union, Set
@ -12,7 +11,6 @@ from requests import Response, RequestException
from erepublik.classes import (CitizenAPI, Battle, Reporter, Config, Energy, Details, Politics, MyCompanies, from erepublik.classes import (CitizenAPI, Battle, Reporter, Config, Energy, Details, Politics, MyCompanies,
TelegramBot, ErepublikException, BattleDivision, MyJSONEncoder) TelegramBot, ErepublikException, BattleDivision, MyJSONEncoder)
from erepublik.utils import * from erepublik.utils import *
@ -38,7 +36,7 @@ class Citizen(CitizenAPI):
ot_points = 0 ot_points = 0
tg_contract = None tg_contract = None
promos = None promos: Dict[str, datetime] = None
eday = 0 eday = 0
@ -320,7 +318,11 @@ class Citizen(CitizenAPI):
return return
ugly_js = re.search(r'"promotions":\s*(\[{?.*?}?])', html).group(1) ugly_js = re.search(r'"promotions":\s*(\[{?.*?}?])', html).group(1)
promos = loads(normalize_html_json(ugly_js)) promos = loads(normalize_html_json(ugly_js))
self.promos = {k: v for k, v in (self.promos.items() if self.promos else {}) if v > self.now} if self.promos is None:
self.promos = {}
else:
self.promos.clear()
self.promos.update({k: v for k, v in self.promos.items() if v > self.now})
send_mail = False send_mail = False
for promo in promos: for promo in promos:
promo_name = promo.get("id") promo_name = promo.get("id")
@ -549,8 +551,16 @@ class Citizen(CitizenAPI):
resp_json = self._get_military_campaigns_json_list().json() resp_json = self._get_military_campaigns_json_list().json()
if resp_json.get("countries"): if resp_json.get("countries"):
if self.all_battles is None:
self.all_battles = {} self.all_battles = {}
else:
self.all_battles.clear()
if self.countries is None:
self.countries = {} self.countries = {}
else:
self.countries.clear()
for c_id, c_data in resp_json.get("countries").items(): for c_id, c_data in resp_json.get("countries").items():
if int(c_id) not in self.countries: if int(c_id) not in self.countries:
self.countries.update({ self.countries.update({
@ -593,8 +603,7 @@ class Citizen(CitizenAPI):
r_json = response.json() r_json = response.json()
next_recovery = r_json.get("food_remaining_reset").split(":") next_recovery = r_json.get("food_remaining_reset").split(":")
self.energy.set_reference_time( self.energy.set_reference_time(
good_timedelta(self.now, good_timedelta(self.now, timedelta(seconds=int(next_recovery[1]) * 60 + int(next_recovery[2])))
timedelta(seconds=int(next_recovery[1]) * 60 + int(next_recovery[2])))
) )
self.energy.recovered = r_json.get("health") self.energy.recovered = r_json.get("health")
self.energy.recoverable = r_json.get("food_remaining") self.energy.recoverable = r_json.get("food_remaining")
@ -1511,8 +1520,7 @@ class Citizen(CitizenAPI):
@property @property
def next_wc_start(self) -> datetime: def next_wc_start(self) -> datetime:
days = 1 - self.now.weekday() if 1 - self.now.weekday() > 0 else 1 - self.now.weekday() + 7 days = 1 - self.now.weekday() if 1 - self.now.weekday() > 0 else 1 - self.now.weekday() + 7
return good_timedelta(self.now.replace(hour=0, minute=0, second=0, microsecond=0), return good_timedelta(self.now.replace(hour=0, minute=0, second=0, microsecond=0), timedelta(days=days))
timedelta(days=days))
@property @property
def time_till_week_change(self) -> timedelta: def time_till_week_change(self) -> timedelta:
@ -1966,19 +1974,19 @@ class Citizen(CitizenAPI):
process_error(msg, self.name, sys.exc_info(), self, self.commit_id, False) process_error(msg, self.name, sys.exc_info(), self, self.commit_id, False)
def get_battle_top_10(self, battle_id: int) -> Dict[int, List[Tuple[int, int]]]: def get_battle_top_10(self, battle_id: int) -> Dict[int, List[Tuple[int, int]]]:
battle = self.all_battles.get(battle_id) return {}
round_id = battle.get('zone_id') # battle = self.all_battles.get(battle_id)
division = self.division if round_id % 4 else 11 # round_id = battle.zone_id
# division = self.division if round_id % 4 else 11
resp = self._post_military_battle_console(battle_id, round_id, division).json() #
resp.pop('rounds', None) # resp = self._post_military_battle_console(battle_id, 'battleStatistics', round_id, division).json()
ret = dict() # resp.pop('rounds', None)
for country_id, data in resp.items(): # ret = dict()
ret.update({int(country_id): []}) # for country_id, data in resp.items():
for place in sorted(data.get("fighterData", {}).values(), key=lambda _: -_['raw_value']): # ret.update({int(country_id): []})
ret[int(country_id)].append((place['citizenId'], place['raw_value'])) # for place in sorted(data.get("fighterData", {}).values(), key=lambda _: -_['raw_value']):
# ret[int(country_id)].append((place['citizenId'], place['raw_value']))
return ret # return ret
def to_json(self, indent: bool = False) -> str: def to_json(self, indent: bool = False) -> str:
return dumps(self.__dict__, cls=MyJSONEncoder, indent=4 if indent else None, sort_keys=True) return dumps(self.__dict__, cls=MyJSONEncoder, indent=4 if indent else None, sort_keys=True)
@ -2052,7 +2060,6 @@ class Citizen(CitizenAPI):
def set_default_weapon(self, battle_id: int) -> int: def set_default_weapon(self, battle_id: int) -> int:
battle = self.all_battles[battle_id] battle = self.all_battles[battle_id]
battle_zone = battle.div[11 if battle.is_air else self.division].battle_zone_id
available_weapons = self._get_military_show_weapons(battle_id).json() available_weapons = self._get_military_show_weapons(battle_id).json()
weapon_quality = -1 weapon_quality = -1
if not battle.is_air: if not battle.is_air:

View File

@ -796,11 +796,6 @@ Class for unifying eRepublik known endpoints and their required/optional paramet
data.update(page=page) data.update(page=page)
return self.post("{}/military/battle-console".format(self.url), data=data) return self.post("{}/military/battle-console".format(self.url), data=data)
def _post_military_change_weapon(self, battle_id: int, battle_zone_id: int, customization_level: int) -> Response:
data = dict(_token=self.token, battleZoneId=battle_zone_id, battleId=battle_id,
customizationLevel=customization_level)
return self.post("{}/military/change-weapon".format(self.url), data=data)
def _post_military_deploy_bomb(self, battle_id: int, bomb_id: int) -> Response: def _post_military_deploy_bomb(self, battle_id: int, bomb_id: int) -> Response:
data = dict(battleId=battle_id, bombId=bomb_id, _token=self.token) data = dict(battleId=battle_id, bombId=bomb_id, _token=self.token)
return self.post("{}/military/deploy-bomb".format(self.url), data=data) return self.post("{}/military/deploy-bomb".format(self.url), data=data)