api.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. """API module"""
  2. import re
  3. import requests
  4. from bs4 import BeautifulSoup
  5. from app import BASE_URL, HEADERS, ITEMS
  6. def get_player_market():
  7. """Get player market"""
  8. # return read_player_market()
  9. return download_player_market()
  10. def read_player_market():
  11. """Read player_market"""
  12. with open('item.html') as file:
  13. return [parse_item(file)]
  14. def download_player_market():
  15. """Download the market"""
  16. items = []
  17. for item_id in ITEMS.values():
  18. response = requests.get(
  19. '{}storage/market/{}'.format(BASE_URL, item_id),
  20. headers=HEADERS
  21. )
  22. items.append(parse_item(response.text))
  23. return items
  24. def parse_item(html):
  25. """Parse html return item"""
  26. soup = BeautifulSoup(html, 'html.parser')
  27. return {
  28. 'player_id': int(re.sub(r'^.*\/', '', soup.select_one('.storage_see.dot')['action'])),
  29. 'player_name': soup.select_one('.storage_see.dot').string,
  30. 'price': int(re.sub(r'\..*$', '', soup.find(class_='storage_buy_input')['price'])),
  31. 'amount': int(soup.find(class_='storage_market_number')['max']),
  32. 'total_offers': int(re.sub(r'\..*$', '', soup.select_one('.storage_see').string)),
  33. 'item_type': int(soup.find(class_='storage_market_number')['url']),
  34. }