diff --git a/yt_dlp/extractor/_extractors.py b/yt_dlp/extractor/_extractors.py index bb595f924b..9499b60807 100644 --- a/yt_dlp/extractor/_extractors.py +++ b/yt_dlp/extractor/_extractors.py @@ -137,7 +137,7 @@ from .aol import AolIE from .apa import APAIE from .aparat import AparatIE from .appleconnect import AppleConnectIE -from .applepodcasts import ApplePodcastsIE +from .applepodcasts import ApplePodcastsIE, ApplePodcastsPlaylistIE from .appletrailers import ( AppleTrailersIE, AppleTrailersSectionIE, diff --git a/yt_dlp/extractor/applepodcasts.py b/yt_dlp/extractor/applepodcasts.py index b99d24e0eb..fb51dbc4b1 100644 --- a/yt_dlp/extractor/applepodcasts.py +++ b/yt_dlp/extractor/applepodcasts.py @@ -1,14 +1,24 @@ +import re + from .common import InfoExtractor from ..utils import ( + ExtractorError, clean_podcast_url, int_or_none, parse_iso8601, + urljoin, ) from ..utils.traversal import traverse_obj -class ApplePodcastsIE(InfoExtractor): - _VALID_URL = r'https?://podcasts\.apple\.com/(?:[^/]+/)?podcast(?:/[^/]+){1,2}.*?\bi=(?P\d+)' +class ApplePodcastsBaseIE(InfoExtractor): + _BASE_URL_REGEX = r'https?://podcasts\.apple\.com/(?:[^/]+/)?podcast(?:/[^/]+)?' + _BASE_HTML_JSON_LOCATION = r'