Browse Source

Make podcast str parsing sensitive to episode number length

Colin Powell 1 year ago
parent
commit
2293c839e8
1 changed files with 9 additions and 6 deletions
  1. 9 6
      vrobbler/apps/scrobbles/utils.py

+ 9 - 6
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("-", " ")