aboutsummaryrefslogtreecommitdiff
path: root/youtube_dl/extractor/acast.py
diff options
context:
space:
mode:
Diffstat (limited to 'youtube_dl/extractor/acast.py')
-rw-r--r--youtube_dl/extractor/acast.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/youtube_dl/extractor/acast.py b/youtube_dl/extractor/acast.py
index be7913bc7..92eee8119 100644
--- a/youtube_dl/extractor/acast.py
+++ b/youtube_dl/extractor/acast.py
@@ -8,11 +8,7 @@ from ..compat import compat_str
from ..utils import int_or_none
-class ACastBaseIE(InfoExtractor):
- _API_BASE_URL = 'https://www.acast.com/api/'
-
-
-class ACastIE(ACastBaseIE):
+class ACastIE(InfoExtractor):
IE_NAME = 'acast'
_VALID_URL = r'https?://(?:www\.)?acast\.com/(?P<channel>[^/]+)/(?P<id>[^/#?]+)'
_TEST = {
@@ -23,14 +19,19 @@ class ACastIE(ACastBaseIE):
'ext': 'mp3',
'title': '"Where Are You?": Taipei 101, Taiwan',
'timestamp': 1196172000000,
- 'description': 'md5:0c5d8201dfea2b93218ea986c91eee6e',
+ 'description': 'md5:a0b4ef3634e63866b542e5b1199a1a0e',
'duration': 211,
}
}
def _real_extract(self, url):
channel, display_id = re.match(self._VALID_URL, url).groups()
- cast_data = self._download_json(self._API_BASE_URL + 'channels/%s/acasts/%s/playback' % (channel, display_id), display_id)
+
+ embed_page = self._download_webpage(
+ re.sub('(?:www\.)?acast\.com', 'embedcdn.acast.com', url), display_id)
+ cast_data = self._parse_json(self._search_regex(
+ r'window\[\'acast/queries\'\]\s*=\s*([^;]+);', embed_page, 'acast data'),
+ display_id)['GetAcast/%s/%s' % (channel, display_id)]
return {
'id': compat_str(cast_data['id']),
@@ -44,7 +45,7 @@ class ACastIE(ACastBaseIE):
}
-class ACastChannelIE(ACastBaseIE):
+class ACastChannelIE(InfoExtractor):
IE_NAME = 'acast:channel'
_VALID_URL = r'https?://(?:www\.)?acast\.com/(?P<id>[^/#?]+)'
_TEST = {
@@ -56,6 +57,7 @@ class ACastChannelIE(ACastBaseIE):
},
'playlist_mincount': 20,
}
+ _API_BASE_URL = 'https://www.acast.com/api/'
@classmethod
def suitable(cls, url):