From 07146e1246e52ac74c9ec677abe4d19b51f4a647 Mon Sep 17 00:00:00 2001 From: Mark Joshwel Date: Fri, 31 May 2024 23:44:36 +0800 Subject: [PATCH] 0.2.1: fix no hour listening time conversion bug --- lfcircle.py | 20 +++++++++++++++----- poetry.lock | 8 ++++---- pyproject.toml | 2 +- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/lfcircle.py b/lfcircle.py index f507894..f0194cf 100644 --- a/lfcircle.py +++ b/lfcircle.py @@ -36,7 +36,8 @@ from collections import Counter from datetime import datetime, timedelta from enum import Enum from functools import wraps -from sys import stderr +from sys import stderr, argv +from sys import exit as sysexit from textwrap import indent from time import sleep from traceback import format_exception @@ -50,6 +51,7 @@ FORMAT_TELEGRAM_PREFIX: Final[str] = " " USER_AGENT: Final[str] = ( "Mozilla/5.0 " "(compatible; lfcircle; https://github.com/markjoshwel/lfcircle)" ) +__version__: Final[str] = "0.2.1" GlobalTagCounter = dict[str, Counter[str]] @@ -106,6 +108,10 @@ def handle_args() -> Behaviour: info = __doc__.strip().split("\n", maxsplit=1)[0].split(":", maxsplit=1) default_behaviour = Behaviour() + if "--version" in argv: + print(__version__) + sysexit(0) + parser = ArgumentParser( prog=info[0].strip(), description=info[-1].strip(), @@ -517,17 +523,21 @@ def get_listening_report( ) -def _int(number: str) -> int: +def _int(number: str, failable: bool = False) -> int: n = ( number.replace(",", "") .replace("scrobbles", "") .strip() .lstrip("days,") + .lstrip("days") .rstrip("hours") .strip() ) - assert n.isnumeric() - return int(n) + if failable and n == "": + return 0 + else: + assert n.isnumeric() + return int(n) def _get_scrobbles_count(page: BeautifulSoup) -> int: @@ -558,7 +568,7 @@ def _get_listening_time_hours(page: BeautifulSoup) -> int: days: int = _int(_d1.text) assert (_h1 := fact.select_one(".quick-fact-data-detail")) is not None - hours: int = _int(_h1.text) + hours: int = _int(_h1.text, failable=True) return (days * 24) + hours diff --git a/poetry.lock b/poetry.lock index fc40316..040dcc1 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.6.1 and should not be changed by hand. [[package]] name = "beautifulsoup4" @@ -346,13 +346,13 @@ type = ["mypy (>=1.8)"] [[package]] name = "requests" -version = "2.32.2" +version = "2.32.3" description = "Python HTTP for Humans." optional = false python-versions = ">=3.8" files = [ - {file = "requests-2.32.2-py3-none-any.whl", hash = "sha256:fc06670dd0ed212426dfeb94fc1b983d917c4f9847c863f313c9dfaaffb7c23c"}, - {file = "requests-2.32.2.tar.gz", hash = "sha256:dd951ff5ecf3e3b3aa26b40703ba77495dab41da839ae72ef3c8e5d8e2433289"}, + {file = "requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6"}, + {file = "requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760"}, ] [package.dependencies] diff --git a/pyproject.toml b/pyproject.toml index 103397e..93af309 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "lfcircle" -version = "0.2.0" +version = "0.2.1" description = "last.fm statistics generator for your friend circle!" authors = ["Mark Joshwel "] license = "Unlicense"