U
    g                     @   s\   d dl Z ddlmZ ddlmZmZmZ G dd deZG dd	 d	eZG d
d deZ	dS )    N   )InfoExtractor   )ExtractorErrordecode_packed_codesurlencode_postdatac                   @   s   e Zd ZdZdZdd ZdS )
SCTEBaseIEz&https://www.scte.org/SCTE/Sign_In.aspxZsctec                 C   s   |  | jd d}dd }||r$d S | |}|||dd | j | jd dt|d}d|kr||s| jd	|d
d d}|rtd| ddtdd S )NzDownloading login popupc                    s   t  fdddD S )Nc                 3   s   | ]}t | V  qd S )N)research).0pwebpage 9/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/scte.py	<genexpr>   s     z?SCTEBaseIE._perform_login.<locals>.is_logged.<locals>.<genexpr>)zclass=["\']welcome\bz
>Sign Out<)anyr   r   r   r   	is_logged   s    z,SCTEBaseIE._perform_login.<locals>.is_loggedon)zfctl01$TemplateBody$WebPartManager1$gwpciNewContactSignInCommon$ciNewContactSignInCommon$signInUserNamezfctl01$TemplateBody$WebPartManager1$gwpciNewContactSignInCommon$ciNewContactSignInCommon$signInPasswordzbctl01$TemplateBody$WebPartManager1$gwpciNewContactSignInCommon$ciNewContactSignInCommon$RememberMez
Logging in)dataz|pageRedirect|z/(?s)<[^>]+class=["\']AsiError["\'][^>]*>(.+?)</zerror messagedefaultzUnable to login: T)expectedzUnable to log in)_download_webpage
_LOGIN_URLZ_hidden_inputsupdater   Z_html_search_regexr   )selfusernamepasswordZlogin_popupr   Z
login_formresponseerrorr   r   r   _perform_login   s<      
    zSCTEBaseIE._perform_loginN)__name__
__module____qualname__r   Z_NETRC_MACHINEr!   r   r   r   r   r      s   r   c                   @   s2   e Zd ZdZdZddddddd	gZd
d ZdS )SCTEIEFzDhttps?://learning\.scte\.org/mod/scorm/view\.php?.*?\bid=(?P<id>\d+)z5https://learning.scte.org/mod/scorm/view.php?id=31484z/Introduction to DOCSIS Engineering ProfessionalZ31484)titleid   zRequires account credentials)urlZ	info_dictZplaylist_countskipc                 C   s   |  |}| ||}| d|d}| d||}d| d}t| | d|}| | d|dd	d
|}g }	|dD ]L}
|
d}|r|dsq| jd|dd d}|sq|		|||| d q| 
|	||S )N<h1>(.+?)</h1>r&   zcontext-(\d+)z)https://learning.scte.org/pluginfile.php/z/mod_scorm/content/8/zmobile/data.jszCreateData\(\s*"(.+?)"r   z\''z.//assetr)   z.mp4zvideo_([^_]+)_zasset idr   )r'   r&   r)   )	_match_idr   _search_regexr   Z
_parse_xmlreplacefindallgetendswithappendplaylist_result)r   r)   Zvideo_idr   r&   Z
context_idZcontent_basecontextr   entriesZassetZ	asset_urlZasset_idr   r   r   _real_extract=   sN    
    
   
zSCTEIE._real_extractNr"   r#   r$   Z_WORKINGZ
_VALID_URLZ_TESTSr7   r   r   r   r   r%   0   s   
r%   c                   @   s8   e Zd ZdZdZdddddddddgZdd	 Zd
S )SCTECourseIEFzMhttps?://learning\.scte\.org/(?:mod/sub)?course/view\.php?.*?\bid=(?P<id>\d+)z9https://learning.scte.org/mod/subcourse/view.php?id=31491T)r)   Zonly_matchingz1https://learning.scte.org/course/view.php?id=3639z1https://learning.scte.org/course/view.php?id=3073c           	      C   s   |  |}| ||}| jd|dd d}g }td|D ]J}|d}||krPq8|ddkrft nt }|	| j
||d q8| |||S )	Nr+   r&   r   aF  (?x)
                    <a[^>]+
                        href=(["\'])
                        (?P<url>
                            https?://learning\.scte\.org/mod/
                            (?P<kind>scorm|subcourse)/view\.php?(?:(?!\1).)*?
                            \bid=\d+
                        )
                    r)   kindZscorm)ie)r-   r   r.   r	   finditergroupr%   Zie_keyr9   r3   Z
url_resultr4   )	r   r)   Z	course_idr   r&   r6   ZmobjZitem_urlr;   r   r   r   r7   n   s*    
   	
zSCTECourseIE._real_extractNr8   r   r   r   r   r9   `   s   r9   )
r	   commonr   utilsr   r   r   r   r%   r9   r   r   r   r   <module>   s
   %0