[plutotv] Fix extractor for URLs with /en

Closes #431
This commit is contained in:
pukkandan 2021-09-05 04:41:02 +05:30
parent bc79491368
commit 826446bd82
No known key found for this signature in database
GPG Key ID: 0F00D95A001F4698

View File

@ -19,7 +19,16 @@ from ..utils import (
class PlutoTVIE(InfoExtractor):
_VALID_URL = r'https?://(?:www\.)?pluto\.tv(?:/en)?/on-demand/(?P<video_type>movies|series)/(?P<slug>.*)/?$'
_VALID_URL = r'''(?x)
https?://(?:www\.)?pluto\.tv(?:/en)?/on-demand
/(?P<video_type>movies|series)
/(?P<series_or_movie_slug>[^/]+)
(?:
/seasons?/(?P<season_no>\d+)
(?:/episode/(?P<episode_slug>[^/]+))?
)?
/?(?:$|[#?])'''
_INFO_URL = 'https://service-vod.clusters.pluto.tv/v3/vod/slugs/'
_INFO_QUERY_PARAMS = {
'appName': 'web',
@ -146,17 +155,13 @@ class PlutoTVIE(InfoExtractor):
return info
def _real_extract(self, url):
path = compat_urlparse.urlparse(url).path
path_components = path.split('/')
video_type = path_components[2]
info_slug = path_components[3]
video_json = self._download_json(self._INFO_URL + info_slug, info_slug,
query=self._INFO_QUERY_PARAMS)
mobj = self._match_valid_url(url).groupdict()
info_slug = mobj['series_or_movie_slug']
video_json = self._download_json(self._INFO_URL + info_slug, info_slug, query=self._INFO_QUERY_PARAMS)
if video_type == 'series':
if mobj['video_type'] == 'series':
series_name = video_json.get('name', info_slug)
season_number = int_or_none(try_get(path_components, lambda x: x[5]))
episode_slug = try_get(path_components, lambda x: x[7])
season_number, episode_slug = mobj.get('season_number'), mobj.get('episode_slug')
videos = []
for season in video_json['seasons']: