diff --git a/vrobbler/apps/scrobbles/utils.py b/vrobbler/apps/scrobbles/utils.py index 03e7063..e49962d 100644 --- a/vrobbler/apps/scrobbles/utils.py +++ b/vrobbler/apps/scrobbles/utils.py @@ -18,6 +18,8 @@ logger = logging.getLogger(__name__) User = get_user_model() +PODCAST_DATE_FORMAT = "YYYY-MM-DD" + def timestamp_user_tz_to_utc(timestamp: int, user_tz: tzinfo) -> datetime: return user_tz.localize(datetime.utcfromtimestamp(timestamp)).astimezone( pytz.utc @@ -40,7 +42,6 @@ def convert_to_seconds(run_time: str) -> int: run_time_int = int((((hours * 60) + minutes) * 60) + seconds) return run_time_int - def parse_mopidy_uri(uri: str) -> dict: logger.debug(f"Parsing URI: {uri}") parsed_uri = os.path.splitext(unquote(uri))[0].split("/") @@ -48,24 +49,26 @@ def parse_mopidy_uri(uri: str) -> dict: episode_str = parsed_uri[-1] podcast_name = parsed_uri[-2] episode_num = None + episode_num_pad = 0 try: # Without episode numbers the date will lead pub_date = parse(episode_str[0:10]) except ParserError: + episode_num = int(episode_str.split("-")[0]) + episode_num_pad = len(str(episode_num)) + 1 + try: # Beacuse we have epsiode numbers on - pub_date = episode_str[4:14] - episode_num = int(episode_str.split("-")[0]) + pub_date = episode_str[episode_num_pad:14] except ParserError: pub_date = "" - episode_num = int(episode_str.split("-")[0]) gap_to_strip = 0 if pub_date: - gap_to_strip += 11 + gap_to_strip += len(PODCAST_DATE_FORMAT) if episode_num: - gap_to_strip += len(str(episode_num)) + 1 + gap_to_strip += episode_num_pad episode_name = episode_str[gap_to_strip:].replace("-", " ")