api.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. """Main application"""
  2. import re
  3. import requests
  4. from bs4 import BeautifulSoup
  5. from dateutil import parser
  6. from app import BASE_URL, HEADERS, LOGGER, RESOURCE_IDS, RESOURCE_NAMES
  7. def download_deep_explorations(region_id):
  8. """Download the deep explorations list"""
  9. # return read_deep_explorations()
  10. response = requests.get(
  11. '{}listed/upgrades/{}'.format(BASE_URL, region_id),
  12. headers=HEADERS
  13. )
  14. return parse_deep_explorations(response.text)
  15. def read_deep_explorations():
  16. """Read deep_exploration file"""
  17. with open('deep_explorations.html') as file:
  18. return parse_deep_explorations(file)
  19. def parse_deep_explorations(html):
  20. """Read the deep_explorations left"""
  21. soup = BeautifulSoup(html, 'html.parser')
  22. deep_explorations_tree = soup.find_all(class_='list_link')
  23. deep_explorations = {}
  24. for deep_exploration_tree in deep_explorations_tree:
  25. deep_exploration_id = int(deep_exploration_tree['user'])
  26. columns = deep_exploration_tree.find_all('td')
  27. deep_explorations[deep_exploration_id] = {
  28. 'resource_type': RESOURCE_NAMES[columns[1].text.replace(' resources', '').lower()],
  29. 'until_date_time': parser.parse(columns[2].string),
  30. }
  31. return deep_explorations
  32. def deep_explorate(state_id, capital_id, deep_exploration_id, amount, alt):
  33. """Main function"""
  34. # Check location
  35. # response = requests.get(
  36. # '{}main/content'.format(BASE_URL),
  37. # headers=HEADERS
  38. # )
  39. # soup = BeautifulSoup(response.text, 'html.parser')
  40. # state_div = soup.find_all('div', {'class': 'index_case_50'})[1]
  41. # action = state_div.findChild()['action']
  42. # current_state_id = int(re.sub('.*/', '', action))
  43. # LOGGER.info('Current state %s', current_state_id)
  44. params = {}
  45. # if current_state_id != state_id:
  46. # params['alt'] = True
  47. if alt:
  48. params['alt'] = True
  49. json_data = {
  50. 'tmp_gov': '{}_{}'.format(deep_exploration_id, amount)
  51. }
  52. requests.post(
  53. '{}parliament/donew/34/{}_{}/{}'.format(BASE_URL, deep_exploration_id, amount, capital_id),
  54. headers=HEADERS,
  55. params=params,
  56. json=json_data
  57. )
  58. response = requests.get(
  59. '{}parliament/index/{}'.format(BASE_URL, capital_id),
  60. headers=HEADERS
  61. )
  62. soup = BeautifulSoup(response.text, 'html.parser')
  63. active_laws = soup.find('div', {'id': 'parliament_active_laws'})
  64. deep_exploration_name = RESOURCE_IDS[deep_exploration_id]
  65. exploration_laws = active_laws.findAll(text='Deep exploration,')
  66. LOGGER.info('Resources exploration: state, %s deep_explorations', deep_exploration_name)
  67. for exploration_law in exploration_laws:
  68. action = exploration_law.parent.parent['action']
  69. action = action.replace('law', 'votelaw')
  70. result = requests.post(
  71. '{}{}/pro'.format(BASE_URL, action),
  72. params=params,
  73. headers=HEADERS
  74. )
  75. LOGGER.info('Response: %s', result.text)