diff options
Diffstat (limited to 'python/monthly_interest.py')
| -rw-r--r-- | python/monthly_interest.py | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/python/monthly_interest.py b/python/monthly_interest.py new file mode 100644 index 00000000..1d693e48 --- /dev/null +++ b/python/monthly_interest.py @@ -0,0 +1,56 @@ +from serenitas.utils.env import DAILY_DIR +from serenitas.utils.exchange import ExchangeMessage +import datetime +from collateral.baml_isda import download_from_secure_id +from bs4 import BeautifulSoup +from urllib.parse import urlsplit, parse_qs, urlunsplit +import logging + +logger = logging.getLogger(__name__) + + +def download_messages(em, counterparty): + for msg in em.get_msgs( + 20, + path=["Interest", counterparty], + ): + if counterparty == "CITI": + base_dir = DAILY_DIR / f"{counterparty}_reports" / "Interest Statements" + else: + base_dir = ( + DAILY_DIR + / "Serenitas" + / f"{counterparty}_reports" + / "Interest Statements" + ) + if msg.datetime_sent.date() > datetime.date(2021, 5, 1): + if counterparty == "BAML": + soup = BeautifulSoup(msg.body, features="lxml") + a = soup.find("a") + url = urlsplit(a["href"]) + query = parse_qs(url.query) + base_url = urlunsplit(url[:2] + ("",) * 3) + try: + download_from_secure_id( + query["id"][0], query["brand"][0], base_dir, base_url + ) + except ValueError as e: + logging.error(e) + continue + continue + for attach in msg.attachments: + fname = attach.name + if (counterparty == "CS") and not ("Interest" in fname): + continue + p = base_dir / fname + if not p.parent.exists(): + p.parent.mkdir(parents=True) + if not p.exists(): + p.write_bytes(attach.content) + + +em = ExchangeMessage() +counterparties = ["BAML", "BNP", "CITI", "CS", "GS", "MS"] + +for cp in counterparties: + download_messages(em, cp) |
