market.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. """Profile class"""
  2. import re
  3. from bs4 import BeautifulSoup
  4. from rival_regions_wrapper import util
  5. from rival_regions_wrapper.wrapper.abstract_wrapper import AbstractWrapper
  6. class Market(AbstractWrapper):
  7. """Wrapper class for profile"""
  8. def info(self, resource):
  9. """Get profile"""
  10. if isinstance(resource, str) and resource in util.ITEM_KEYS:
  11. resource = util.ITEM_KEYS[resource]
  12. path = 'storage/listed/{}'.format(resource)
  13. response = self.middleware.get(path)
  14. soup = BeautifulSoup(response, 'html.parser')
  15. offers_tree = soup.find_all(class_='list_link')
  16. offers = []
  17. for offer_tree in offers_tree:
  18. offers.append({
  19. 'player_id': int(re.sub(
  20. r'^.*\/', '',
  21. offer_tree.select_one('.results_date')['action']
  22. )
  23. ),
  24. 'player_name': offer_tree.select_one('.results_date').string,
  25. 'price': int(
  26. float(offer_tree.select('.list_level')[1]['rat'])*100
  27. ),
  28. 'amount': int(
  29. offer_tree.select_one('.list_level.imp.small')['rat']
  30. ),
  31. })
  32. return offers