a
    h                     @   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|v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 J/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/scte.py	<genexpr>       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   s0    
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=   s@    



zSCTEIE._real_extractNr#   r$   r%   Z_WORKINGZ
_VALID_URLZ_TESTSr8   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_keyr:   r4   Z
url_resultr5   )	r   r*   Z	course_idr   r'   r7   ZmobjZitem_urlr<   r   r   r   r8   n   s$    
	
zSCTECourseIE._real_extractNr9   r   r   r   r   r:   `   s   r:   )
r	   commonr   utilsr   r   r   r   r&   r:   r   r   r   r   <module>   s
   %0