61 lines
1.4 KiB
Python
Executable file
61 lines
1.4 KiB
Python
Executable file
#!/usr/bin/python3
|
|
|
|
"""Fetch new mail notifications for i3blocks.
|
|
|
|
Author: flyingscorpio
|
|
"""
|
|
|
|
import argparse
|
|
import requests
|
|
|
|
|
|
def parse_cli() -> argparse.Namespace:
|
|
"""Parse credentials from the command line."""
|
|
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("username")
|
|
parser.add_argument("password")
|
|
|
|
return parser.parse_args()
|
|
|
|
|
|
def main(args: argparse.Namespace) -> None:
|
|
"""Connect to ProtonMail."""
|
|
|
|
with requests.Session() as session:
|
|
main_url = "https://mail.protonmail.com/login"
|
|
|
|
req = session.get(main_url)
|
|
|
|
req = session.post(
|
|
"https://mail.protonmail.com/api/info",
|
|
data={
|
|
"Username": args.username,
|
|
},
|
|
headers={
|
|
"Referer": main_url,
|
|
"x-pm-apiversion": "3",
|
|
"x-pm-appversion": "Web_3.16.23",
|
|
},
|
|
)
|
|
req_json = req.json()
|
|
print(req_json)
|
|
|
|
req = session.post(
|
|
"https://mail.protonmail.com/api/auth",
|
|
data={
|
|
"ClientEphemeral": "",
|
|
"ClientProof": "",
|
|
"SRPSession": req_json["SRPSession"],
|
|
"Username": args.username,
|
|
},
|
|
headers={
|
|
"Referer": main_url,
|
|
"x-pm-apiversion": "3",
|
|
"x-pm-appversion": "Web_3.16.23",
|
|
},
|
|
)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main(parse_cli())
|