Coverage for amazonorders/entity/seller.py: 32.26%

31 statements  

« prev     ^ index     » next       coverage.py v7.4.0, created at 2024-01-12 15:20 +0000

1import logging 

2 

3from amazonorders.session import BASE_URL 

4 

5__author__ = "Alex Laird" 

6__copyright__ = "Copyright 2024, Alex Laird" 

7__version__ = "0.0.3" 

8 

9logger = logging.getLogger(__name__) 

10 

11 

12class Seller: 

13 def __init__(self, 

14 parsed, 

15 item=None, 

16 order=None) -> None: 

17 self.parsed = parsed 

18 self.item = item 

19 self.order = order 

20 

21 self.name = self._parse_name() 

22 self.link = self._parse_link() 

23 

24 def __repr__(self) -> str: 

25 return "<Seller: \"{}\">".format(self.name) 

26 

27 def __str__(self) -> str: # pragma: no cover 

28 return "Seller: \"{}\"".format(self.name) 

29 

30 def _parse_name(self): 

31 try: 

32 tag = self.parsed.find("a") 

33 if not tag: 

34 tag = self.parsed.find("span") 

35 value = tag.text 

36 if "Sold by:" in value: 

37 value = value.split("Sold by:")[1] 

38 return value.strip() 

39 except (AttributeError, IndexError): 

40 logger.warning("When building Seller, `name` could not be parsed.", exc_info=True) 

41 

42 def _parse_link(self): 

43 try: 

44 tag = self.parsed.find("a") 

45 if tag: 

46 return "{}{}".format(BASE_URL, tag.attrs["href"]) 

47 except (AttributeError, IndexError): 

48 logger.warning("When building Seller, `link` could not be parsed.", exc_info=True)