# coding: utf-8 from __future__ import unicode_literals import collections import re from .common import InfoExtractor from ..compat import ( compat_urlparse) from ..utils import ( ExtractorError, urlencode_postdata, qualities, unescapeHTML) class FrontEndMasterBaseIE(InfoExtractor): _API_BASE = 'https://api.frontendmasters.com/v1/kabuki/courses' _VIDEO_BASE = 'http://www.frontendmasters.com/courses' _CAPTIONS_BASE = 'https://api.frontendmasters.com/v1/kabuki/transcripts' _COOKIES_BASE = 'https://api.frontendmasters.com' _LOGIN_URL = 'https://frontendmasters.com/login/' _QUALITIES_PREFERENCE = ('low', 'medium', 'high') _QUALITIES = { 'low': {'width': 480, 'height': 360}, 'medium': {'width': 1280, 'height': 720}, 'high': {'width': 1920, 'height': 1080} } AllowedQuality = collections.namedtuple('AllowedQuality', ['ext', 'qualities']) _ALLOWED_QUALITIES = [ AllowedQuality('webm', ['low', 'medium', 'high']), AllowedQuality('mp4', ['low', 'medium', 'high']) ] def _real_initialize(self): self._login() def _login(self): (username, password) = self._get_login_info() if username is None: return 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'