fix content extraction for multipart mbna
This commit is contained in:
parent
d1845cc5d9
commit
d0f69611dc
@ -58,7 +58,7 @@ class MinimalBankParser(TransactionParser):
|
||||
return msg["From"] == "Minimal Bank <alerts@minimalbank.com>" and "Transaction Alert" in msg["Subject"]
|
||||
|
||||
def extract(self, msg):
|
||||
body = msg.get_content()
|
||||
body = msg.get_body().get_content()
|
||||
amount = ... # Extract amount from body
|
||||
date = ... # Extract date from body
|
||||
payee = ... # Extract payee from body
|
||||
|
21
parsers.py
21
parsers.py
@ -62,10 +62,13 @@ class RogersBankParser(TransactionParser):
|
||||
)
|
||||
|
||||
def extract(self, msg: EmailMessage) -> Optional[Transaction]:
|
||||
body = msg.get_content()
|
||||
body = msg.get_body()
|
||||
if body is None:
|
||||
raise TransactionParsingFailed("No body of message found")
|
||||
matches = self.EXTRACT_RE.search(body)
|
||||
content = body.get_content()
|
||||
if content is None:
|
||||
raise TransactionParsingFailed("No content of message found")
|
||||
matches = self.EXTRACT_RE.search(content)
|
||||
if matches is None:
|
||||
raise TransactionParsingFailed("No matches for extraction RE")
|
||||
amount = Decimal(matches[1])
|
||||
@ -97,10 +100,13 @@ class MBNAParser(TransactionParser):
|
||||
)
|
||||
|
||||
def extract(self, msg: EmailMessage) -> Optional[Transaction]:
|
||||
body = msg.get_content()
|
||||
body = msg.get_body()
|
||||
if body is None:
|
||||
raise TransactionParsingFailed("No body of message found")
|
||||
matches = self.EXTRACT_RE.search(body)
|
||||
content = body.get_content()
|
||||
if content is None:
|
||||
raise TransactionParsingFailed("No content of message found")
|
||||
matches = self.EXTRACT_RE.search(content)
|
||||
if matches is None:
|
||||
raise TransactionParsingFailed("No matches for extraction RE")
|
||||
amount = Decimal(matches[1])
|
||||
@ -129,10 +135,13 @@ class BMOParser(TransactionParser):
|
||||
return msg["From"] == "bmoalerts@bmo.com"
|
||||
|
||||
def extract(self, msg: EmailMessage) -> Optional[Transaction]:
|
||||
body = msg.get_content()
|
||||
body = msg.get_body(preferencelist=("html", "plain"))
|
||||
if body is None:
|
||||
raise TransactionParsingFailed("No body of message found")
|
||||
soup = BeautifulSoup(body, "html.parser")
|
||||
content = body.get_content()
|
||||
if content is None:
|
||||
raise TransactionParsingFailed("No content of message found")
|
||||
soup = BeautifulSoup(content, "html.parser")
|
||||
matches = self.EXTRACT_RE.search(soup.get_text())
|
||||
if matches is None:
|
||||
raise TransactionParsingFailed("No matches for extraction RE")
|
||||
|
Loading…
x
Reference in New Issue
Block a user