Fix parsing podcast URLs
This commit is contained in:
@ -1,4 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
|
import os
|
||||||
from datetime import datetime, timedelta, tzinfo
|
from datetime import datetime, timedelta, tzinfo
|
||||||
from urllib.parse import unquote
|
from urllib.parse import unquote
|
||||||
|
|
||||||
@ -42,10 +43,11 @@ def convert_to_seconds(run_time: str) -> int:
|
|||||||
|
|
||||||
def parse_mopidy_uri(uri: str) -> dict:
|
def parse_mopidy_uri(uri: str) -> dict:
|
||||||
logger.debug(f"Parsing URI: {uri}")
|
logger.debug(f"Parsing URI: {uri}")
|
||||||
parsed_uri = uri.split("/")
|
parsed_uri = os.path.splitext(unquote(uri))[0].split("/")
|
||||||
|
|
||||||
episode_str = unquote(parsed_uri.pop(-1).strip(".mp3"))
|
episode_str = parsed_uri[-1]
|
||||||
podcast_str = unquote(parsed_uri.pop(-1))
|
podcast_name = parsed_uri[-2]
|
||||||
|
episode_num = None
|
||||||
|
|
||||||
try:
|
try:
|
||||||
# Without episode numbers the date will lead
|
# Without episode numbers the date will lead
|
||||||
@ -54,36 +56,23 @@ def parse_mopidy_uri(uri: str) -> dict:
|
|||||||
try:
|
try:
|
||||||
# Beacuse we have epsiode numbers on
|
# Beacuse we have epsiode numbers on
|
||||||
pub_date = episode_str[4:14]
|
pub_date = episode_str[4:14]
|
||||||
|
episode_num = int(episode_str.split("-")[0])
|
||||||
except ParserError:
|
except ParserError:
|
||||||
pub_date = ""
|
pub_date = ""
|
||||||
|
|
||||||
logger.debug(f"Found pub date {pub_date} from Mopidy URI")
|
|
||||||
|
|
||||||
try:
|
|
||||||
if pub_date:
|
|
||||||
episode_num = int(episode_str.split("-")[3])
|
|
||||||
else:
|
|
||||||
episode_num = int(episode_str.split("-")[0])
|
episode_num = int(episode_str.split("-")[0])
|
||||||
except IndexError:
|
|
||||||
episode_num = None
|
|
||||||
except ValueError:
|
|
||||||
episode_num = None
|
|
||||||
logger.debug(f"Found episode num {episode_num} from Mopidy URI")
|
|
||||||
|
|
||||||
|
gap_to_strip = 0
|
||||||
if pub_date:
|
if pub_date:
|
||||||
episode_str = episode_str.strip(episode_str[:11])
|
gap_to_strip += 11
|
||||||
|
if episode_num:
|
||||||
|
gap_to_strip += len(str(episode_num)) + 1
|
||||||
|
|
||||||
if type(episode_num) is int:
|
episode_name = episode_str[gap_to_strip:].replace("-", " ")
|
||||||
episode_num_gap = len(str(episode_num)) + 1
|
|
||||||
episode_str = episode_str.strip(episode_str[:episode_num_gap])
|
|
||||||
|
|
||||||
episode_str = episode_str.replace("-", " ")
|
|
||||||
logger.debug(f"Found episode name {episode_str} from Mopidy URI")
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"episode_filename": episode_str,
|
"episode_filename": episode_name,
|
||||||
"episode_num": episode_num,
|
"episode_num": episode_num,
|
||||||
"podcast_name": podcast_str,
|
"podcast_name": podcast_name,
|
||||||
"pub_date": pub_date,
|
"pub_date": pub_date,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user