diff options
Diffstat (limited to 'youtube_dl/extractor/acast.py')
| -rw-r--r-- | youtube_dl/extractor/acast.py | 18 | 
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): | 
