|
@@ -9,20 +9,58 @@ from bs4 import BeautifulSoup
|
|
|
from app import BASE_URL, HEADERS
|
|
|
|
|
|
|
|
|
+TYPES = {
|
|
|
+ 'yellow': 1,
|
|
|
+ 'oil': 2,
|
|
|
+ 'ore': 5,
|
|
|
+ 'uranium': 11,
|
|
|
+ 'diamond': 15,
|
|
|
+}
|
|
|
+
|
|
|
def get_factories(state_id):
|
|
|
"""Get factories from state"""
|
|
|
- return download_factories(state_id)
|
|
|
+ return read_factories()
|
|
|
+ # return download_factories(state_id)
|
|
|
+
|
|
|
+def read_factories():
|
|
|
+ """Read factories file"""
|
|
|
+ with open('factories.html') as file:
|
|
|
+ factories, more = parse_factories(file)
|
|
|
+ return factories
|
|
|
|
|
|
def download_factories(state_id):
|
|
|
- """Download the players"""
|
|
|
- return []
|
|
|
+ """Download the factories"""
|
|
|
+ factories = []
|
|
|
+ more = True
|
|
|
+ page = 0
|
|
|
+ while more:
|
|
|
+ response = requests.get(
|
|
|
+ '{}factory/state/{}/0/0/{}'.format(BASE_URL, state_id, page*25),
|
|
|
+ headers=HEADERS
|
|
|
+ )
|
|
|
+ tmp_factories, more = parse_factories(response.text)
|
|
|
+ factories = factories + tmp_factories
|
|
|
+ page += 1
|
|
|
+ return factories
|
|
|
|
|
|
def parse_factories(html):
|
|
|
"""Parse html return factories"""
|
|
|
soup = BeautifulSoup(html, 'html.parser')
|
|
|
factories_tree = soup.find_all(class_='list_link')
|
|
|
factories = []
|
|
|
- return factories
|
|
|
+ for factory_tree in factories_tree:
|
|
|
+ columns = factory_tree.find_all('td')
|
|
|
+ factories.append({
|
|
|
+ 'id': factory_tree['user'],
|
|
|
+ 'name': columns[1].contents[0].strip(),
|
|
|
+ 'resource_type': TYPES[columns[1].contents[4]['class'][0]],
|
|
|
+ 'region_name': columns[1].contents[2],
|
|
|
+ 'level': columns[2].string,
|
|
|
+ 'workers': re.sub(r'\/[0-9]*$', '', columns[3].string),
|
|
|
+ 'wage': int(columns[4].string.replace('%', '')),
|
|
|
+ 'experience': int(columns[5].string),
|
|
|
+ })
|
|
|
+ return factories, bool(len(factories_tree) >= 25)
|
|
|
|
|
|
def parse_date(date_string):
|
|
|
"""Parse date to object"""
|