Make podcast str parsing sensitive to episode number length
This commit is contained in:
@ -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("-", " ")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user