From bf1c459a79f56eb9bb66cb103541180961db1add Mon Sep 17 00:00:00 2001 From: traxys Date: Mon, 24 Jul 2023 22:26:27 +0200 Subject: [PATCH] pkgs: Correctly render all bitwarden possibilities --- pkgs/hbw/hbw.py | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/pkgs/hbw/hbw.py b/pkgs/hbw/hbw.py index df5f39e..f64c9f8 100755 --- a/pkgs/hbw/hbw.py +++ b/pkgs/hbw/hbw.py @@ -23,12 +23,18 @@ if process.returncode != 0: data = json.loads(data) for item in data: - print(f"==== {item['name']} ====") - print(f" {item['login']['username']}") - print(f" {item['login']['password']}") - if "totp" in item["login"] and item["login"]["totp"] is not None: - totp = pyotp.TOTP(item["login"]["totp"]) - time_remaining = ( - totp.interval - datetime.datetime.now().timestamp() % totp.interval - ) - print(f" {totp.now()} ({int(time_remaining)})") + if "login" in item: + print(f"==== {item['name']} ====") + if "username" in item["login"]: + print(f" {item['login']['username']}") + if "password" in item["login"]: + print(f" {item['login']['password']}") + if "totp" in item["login"] and item["login"]["totp"] is not None: + if item["login"]["totp"].startswith("otpauth://"): + totp = pyotp.parse_uri(item["login"]["totp"]) + else: + totp = pyotp.TOTP(item["login"]["totp"]) + time_remaining = ( + totp.interval - datetime.datetime.now().timestamp() % totp.interval + ) + print(f" {totp.now()} ({int(time_remaining)})")