1
0
mirror of https://github.com/l1ving/youtube-dl synced 2024-12-31 02:12:52 +08:00

[teachable] Extract chapter metadata (closes #24421)

This commit is contained in:
Sergey M․ 2020-03-24 02:43:24 +07:00
parent 63dce3094b
commit 4560adc820
No known key found for this signature in database
GPG Key ID: 2C393E0F18A9236D

View File

@ -7,7 +7,9 @@ from .wistia import WistiaIE
from ..utils import ( from ..utils import (
clean_html, clean_html,
ExtractorError, ExtractorError,
int_or_none,
get_element_by_class, get_element_by_class,
strip_or_none,
urlencode_postdata, urlencode_postdata,
urljoin, urljoin,
) )
@ -173,11 +175,34 @@ class TeachableIE(TeachableBaseIE):
title = self._og_search_title(webpage, default=None) title = self._og_search_title(webpage, default=None)
chapter = None
chapter_number = None
section_item = self._search_regex(
r'(?s)(?P<li><li[^>]+\bdata-lecture-id=["\']%s[^>]+>.+?</li>)' % video_id,
webpage, 'section item', default=None, group='li')
if section_item:
chapter_number = int_or_none(self._search_regex(
r'data-ss-position=["\'](\d+)', section_item, 'section id',
default=None))
if chapter_number is not None:
sections = []
for s in re.findall(
r'(?s)<div[^>]+\bclass=["\']section-title[^>]+>(.+?)</div>', webpage):
section = strip_or_none(clean_html(s))
if not section:
sections = []
break
sections.append(section)
if chapter_number <= len(sections):
chapter = sections[chapter_number - 1]
entries = [{ entries = [{
'_type': 'url_transparent', '_type': 'url_transparent',
'url': wistia_url, 'url': wistia_url,
'ie_key': WistiaIE.ie_key(), 'ie_key': WistiaIE.ie_key(),
'title': title, 'title': title,
'chapter': chapter,
'chapter_number': chapter_number,
} for wistia_url in wistia_urls] } for wistia_url in wistia_urls]
return self.playlist_result(entries, video_id, title) return self.playlist_result(entries, video_id, title)