Browse Source

[pluralsight] Add support for alternative webpage layout (Closes #7607)

totalwebcasting
Sergey M․ 9 years ago
parent
commit
02f0da20b0
1 changed files with 16 additions and 6 deletions
  1. +16
    -6
      youtube_dl/extractor/pluralsight.py

+ 16
- 6
youtube_dl/extractor/pluralsight.py View File

@ -104,19 +104,29 @@ class PluralsightIE(PluralsightBaseIE):
webpage = self._download_webpage(url, display_id) webpage = self._download_webpage(url, display_id)
collection = self._parse_json(
self._search_regex(
r'moduleCollection\s*:\s*new\s+ModuleCollection\((\[.+?\])\s*,\s*\$rootScope\)',
webpage, 'modules'),
display_id)
modules = self._search_regex(
r'moduleCollection\s*:\s*new\s+ModuleCollection\((\[.+?\])\s*,\s*\$rootScope\)',
webpage, 'modules', default=None)
if modules:
collection = self._parse_json(modules, display_id)
else:
# Webpage may be served in different layout (see
# https://github.com/rg3/youtube-dl/issues/7607)
collection = self._parse_json(
self._search_regex(
r'var\s+initialState\s*=\s*({.+?});\n', webpage, 'initial state'),
display_id)['course']['modules']
module, clip = None, None module, clip = None, None
for module_ in collection: for module_ in collection:
if module_.get('moduleName') == name:
if name in (module_.get('moduleName'), module_.get('name')):
module = module_ module = module_
for clip_ in module_.get('clips', []): for clip_ in module_.get('clips', []):
clip_index = clip_.get('clipIndex') clip_index = clip_.get('clipIndex')
if clip_index is None:
clip_index = clip_.get('index')
if clip_index is None: if clip_index is None:
continue continue
if compat_str(clip_index) == clip_id: if compat_str(clip_index) == clip_id:


Loading…
Cancel
Save