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
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-12 15:20 +0000
1import logging
3from amazonorders.session import BASE_URL
5__author__ = "Alex Laird"
6__copyright__ = "Copyright 2024, Alex Laird"
7__version__ = "0.0.3"
9logger = logging.getLogger(__name__)
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
21 self.name = self._parse_name()
22 self.link = self._parse_link()
24 def __repr__(self) -> str:
25 return "<Seller: \"{}\">".format(self.name)
27 def __str__(self) -> str: # pragma: no cover
28 return "Seller: \"{}\"".format(self.name)
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)
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)