import re import urllib.parse from .common import InfoExtractor from ..utils import ( ExtractorError, parse_duration, url_or_none, urlencode_postdata, ) class FrontendMastersBaseIE(InfoExtractor): _API_BASE = 'https://api.frontendmasters.com/v1/kabuki' _LOGIN_URL = 'https://frontendmasters.com/login/' _NETRC_MACHINE = 'frontendmasters' def _get_subtitles(self, lesson_data, course_data): captions_base = "https://captions.frontendmasters.com/assets/courses/" lesson_slug = lesson_data.get('slug') lesson_index = lesson_data.get('index') date_published = course_data.get('datePublished') course_slug = course_data.get('slug') subtitles_url = f'{captions_base}{date_published}-{course_slug}/{lesson_index}-{lesson_slug}.vtt' return { 'en': [{ 'url': subtitles_url }] } def _perform_login(self, username, password): login_page = self._download_webpage( self._LOGIN_URL, None, 'Downloading login page') login_form = self._hidden_inputs(login_page) login_form.update({ 'username': username, 'password': password, }) post_url = self._search_regex( r'