Ë
    š„j²'  ã                   ó„   — d dl Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
mZmZmZmZmZmZ  G d„ de«      Z G d	„ d
e«      Zy)é    Né   )ÚInfoExtractor)Ú
VHXEmbedIEé   )ÚExtractorErrorÚOnDemandPagedListÚ
clean_htmlÚextract_attributesÚget_element_by_classÚget_element_by_idÚget_elements_html_by_classÚint_or_noneÚtraverse_objÚunified_strdateÚurlencode_postdatac                   óü   — e Zd ZdZdZdZdddi dd“d	d
“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“dd“d d!“d"d#“d$d%“d&d'gd(œd)d*d+d,d-dd.d/d0d1d2d3d2d.d4d!d#d%d5œd&d'gd(œd6d7d8d9d:dd;d<d=d>d?d!d#d%d@œd&d'gd(œgZdA„ ZdB„ ZdC„ Z	yD)EÚ	DropoutIEzhttps://watch.dropout.tv/loginÚdropoutzPhttps?://(?:watch\.)?dropout\.tv/(?:[^/?#]+/)*videos/(?P<id>[^/?#]+)/?(?:[?#]|$)z?https://watch.dropout.tv/game-changer/season:2/videos/yes-or-nozEpisode in a seriesÚ 4b76963f904f8bc4ba22dcf0e66ada06ÚidÚ738153Ú
display_idz	yes-or-noÚextÚmp4Útitlez	Yes or NoÚdescriptionzRAlly, Brennan, and Zac are asked a simple question, but is there a correct answer?Úrelease_dateÚ20200508Ú	thumbnailzYhttps://vhx.imgix.net/chuncensoredstaging/assets/351e3f24-c4a3-459a-8b79-dc80f1e5b7fd.jpgÚserieszGame ChangerÚseason_numberr   ÚseasonzSeason 2Úepisode_numberé   ÚepisodeÚdurationiœ  Úuploader_idÚuser80538407Úuploader_urlzhttps://vimeo.com/user80538407Úuploaderz
OTT Videosz2Ignoring subtitle tracks found in the HLS manifestz$Failed to parse XML: not well-formed)ÚurlÚnoteÚmd5Ú	info_dictÚexpected_warningszghttps://watch.dropout.tv/tablepop-presents-megadungeon-live/season:1/videos/enter-through-the-gift-shopz*Episode in a series (missing release_date)Ú b08fb03050585ea25cd7ee092db9134cÚ624270zenter-through-the-gift-shopzEnter Through the Gift ShopzdA new adventuring party explores a gift shop and runs into a friendly orc -- and some angry goblins.zYhttps://vhx.imgix.net/chuncensoredstaging/assets/a1d876c3-3dee-4cd0-87c6-27a851b1d0ec.jpgz$TablePop Presents: MEGADUNGEON LIVE!r   zSeason 1i½  )r   r   r   r   r   r   r    r!   r"   r#   r%   r&   r'   r)   r*   z=https://watch.dropout.tv/videos/misfits-magic-holiday-specialzEpisode not in a seriesÚ 1e6428f7756b02c93b573d39ddd789feÚ1915774zmisfits-magic-holiday-specialzMisfits & Magic Holiday SpecialzQThe magical misfits spend Christmas break at Gowpenny, with an unwelcome visitor.Ú20211215zbhttps://vhx.imgix.net/chuncensoredstaging/assets/d91ea8a6-b250-42ed-907e-b30fb1c65176-8e24b8e5.jpgi²-  )r   r   r   r   r   r   r   r&   r'   r)   r*   c                 ód   — | j                  | j                  |d¬«      }| j                  d|d«      S )NzGetting authenticity token)r,   z7name=["\']authenticity_token["\'] value=["\'](.+?)["\']Úauthenticity_token)Ú_download_webpageÚ
_LOGIN_URLÚ_html_search_regex)Úselfr   Úsignin_pages      úO/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/dropout.pyÚ_get_authenticity_tokenz!DropoutIE._get_authenticity_token^   s@   € Ø×,Ñ,Ø�O‰O˜ZÐ.Jð -ó Lˆà×&Ñ&ØFØÐ-ó/ð 	/ó    c                 ó$  — | j                  «       \  }}|sy| j                  | j                  |ddt        ||| j	                  |«      ddœ«      ¬«      }| j                  d|dd¬	«      }|j                  «       d
k(  ry |j                  «       dk(  ryy)NTz
Logging inF)ÚemailÚpasswordr6   Úutf8)r,   ÚfatalÚdataz(user_has_subscription:\s*["\'](.+?)["\']zsubscription statusÚnone©ÚdefaultÚtrueÚfalsezAccount is not subscribedzIncorrect username/password)Ú_get_login_infor7   r8   r   r=   Ú_search_regexÚlower)r:   r   ÚusernamerA   ÚresponseÚuser_has_subscriptions         r<   Ú_loginzDropoutIE._logine   s°   € Ø!×1Ñ1Ó3Ñˆ�(ÙØà×)Ñ)Ø�O‰O˜Z¨lÀ%Ü#Ø!Ø$Ø&*×&BÑ&BÀ:Ó&NØñ	%ó ð *ó ˆð !%× 2Ñ 2Ø7¸ÐCXÐbhð !3ó !jÐà ×&Ñ&Ó(¨FÒ2ØØ"×(Ñ(Ó*¨gÒ5Ø.à0r>   c                 ó¶  — | j                  |«      }d }| j                  d«      j                  d«      r| j                  ||«      }|rd|v rL| j	                  |«      }| j                  ||«      }|r'd|v r#|du r| j                  d¬«       t        |d¬«      ‚| j                  d|d	«      }| j                  |«      }t        d
|«      xs d}t        t        d|«      «      }t        dt        d|«      «      }	t        | j                  d|	xs ddd ¬«      «      }
dt        j                  «       t        j                   |d«      | j                  d|d«      ||| j#                  d|d¬«      |r|j%                  d«      d   nd t        t        d|«      «      |
|
r|nd t        | j                  d|	xs ddd ¬«      «      t'        | j                  d|dd ¬«      «      dœS ) Nzhttps://watch.dropout.tvÚ_sessionz<div id="watch-unauthorized"TÚany)Úmethod)Úexpectedzembed_url:\s*["\'](.+?)["\']z	embed urlz
watch-infoÚ zvideo-titlezsite-font-secondary-colorÚtextzEpisode (\d+)r%   rF   Úurl_transparentzembed\.vhx\.tv/videos/(.+?)\?r   r   F)rC   ú?r   zseries-titlezSeason (\d+),r"   zRdata-meta-field-name=["\']release_dates["\'] data-meta-field-value=["\'](.+?)["\']zrelease date)Ú_typeÚie_keyr+   r   r   r   r   r   r    r#   r%   r!   r   )Ú	_match_idÚ_get_cookiesÚgetr7   rP   Úraise_login_requiredr   r9   Ú_og_search_thumbnailr   r	   r   r   rK   r   r[   Ú_smuggle_referrerÚ_html_search_metaÚsplitr   )r:   r+   r   ÚwebpageÚ	login_errÚ	embed_urlr   Ú
watch_infor   Úseason_episoder#   s              r<   Ú_real_extractzDropoutIE._real_extract|   s  € Ø—^‘^ CÓ(ˆ
àˆØ×ÑÐ7Ó8×<Ñ<¸ZÔHØ×,Ñ,¨S°*Ó=ˆGÙÐ8¸GÑCØŸ™ JÓ/ˆIØ×,Ñ,¨S°*Ó=ˆGÙÐ;¸wÑFØ Ñ$Ø×-Ñ-°UÐ-Ô;Ü$ Y¸Ô>Ð>à×+Ñ+Ð,KÈWÐVaÓbˆ	Ø×-Ñ-¨gÓ6ˆ	Ü& |°WÓ=ÒCÀˆ
äÔ/°¸zÓJÓKˆÜ-Ø'Ô)=¸fÀjÓ)QóSˆä$ T×%7Ñ%7Ø˜nÒ2°°IÀtð &8ó &Mó Nˆð 'Ü ×'Ñ'Ó)Ü×/Ñ/°	Ð;UÓVØ×$Ñ$Ð%EÀyÐRVÓWØ$ØØ×1Ñ1°-ÀÐPUÐ1ÓVÙ4=˜Ÿ™¨Ó-¨aÒ0À4Ü Ô!5°nÀjÓ!QÓRØ,Ù .‘u°DÜ(¨×);Ñ);Ø  .Ò"6°B¸È$ð *<ó *Pó Qä+¨D×,>Ñ,>ØeØ˜N°Dð -?ó -:ó ;ñ
ð 	
r>   N)
Ú__name__Ú
__module__Ú__qualname__r8   Ú_NETRC_MACHINEÚ
_VALID_URLÚ_TESTSr=   rP   ri   © r>   r<   r   r      s£  „ Ø1€JØ€Nàd€Jð UØ)Ø5ðØ�hðà˜kðð �uðð ˜ð	ð
 Ðsðð  
ðð Ðxðð ˜.ðð   ðð ˜*ðð ! !ðð ˜;ðð ˜Dðð ˜~ðð Ð @ðð  ˜Lð!ð$ #WÐX~Ð!ñ-	
ð2 }Ø@Ø5àØ;ØØ6ð  FØxØ@Ø!"Ø$Ø"#Ø8Ø Ø-Ø @Ø(ñð" #WÐX~Ð!ñ+	
ð0 SØ-Ø5àØ=ØØ:ØrØ *ð BØ!Ø-Ø @Ø(ñð #WÐX~Ð!ñ#	
ðaC€FòJ/ò1ó.)
r>   r   c            	       ól   — e Zd ZdZdZddddddœdœd	d
ddddœdœddddddœdœddddddœdœgZd„ Zd„ Zy)ÚDropoutSeasonIEé   zXhttps?://(?:watch\.)?dropout\.tv/(?P<id>[^\/$&?#]+)(?:/?$|/season:(?P<season>[0-9]+)/?$)z;https://watch.dropout.tv/dimension-20-fantasy-high/season:1z.Multi-season series with the season in the urlz"dimension-20-fantasy-high-season-1z$Dimension 20 Fantasy High - Season 1)r   r   )r+   r,   Úplaylist_countr.   z2https://watch.dropout.tv/dimension-20-fantasy-highz2Multi-season series with the season not in the urlz1https://watch.dropout.tv/dimension-20-shriek-weekzSingle-season seriesé   z!dimension-20-shriek-week-season-1z#Dimension 20 Shriek Week - Season 1zAhttps://watch.dropout.tv/breaking-news-no-laugh-newsroom/season:3zCMulti-season series with season in the url that requires paginationé   z(breaking-news-no-laugh-newsroom-season-3z*Breaking News No Laugh Newsroom - Season 3c              #   óð   K  — |dz  }| j                  |› d|› �|d|› �dh¬«      }t        t        d|«      dt        hdf«      D �cg c]  }| j	                  |t
        «      ‘Œ c}E d {  –—†  y c c}w 7 Œ
­w)	Nr   z?page=zDownloading page i�  )r,   Úexpected_statuszbrowse-item-link.Úhref)r7   r   r   r
   Ú
url_resultr   )r:   r+   Ú	season_idÚpagerd   Úitem_urls         r<   Ú_fetch_pagezDropoutSeasonIE._fetch_pageÒ   sœ   è ø€ Ø�‰	ˆØ×(Ñ(Øˆe�6˜$˜Ð  )Ð4EÀdÀVÐ2LÐ_bÐ^cð )ó eˆäIUÜ&Ð'9¸7ÓCÀcÔL^ÐK_ÐagÐEhóJjö k¸X�D—O‘O H¬iÕ8ò k÷ 	kñ 	kùò kð 	kús   ‚AA6ÁA/Á#A6Á)A4Á*A6c           	      óL  — | j                  |«      }| j                  |«      j                  d«      xs d}|j                  dd«      j	                  «       }| j                  t        t        j                  | j                  ||«      | j                  «      |› d|› �|› d|› �«      S )Nr"   r   ú-ú z-season-z
 - Season )r\   Ú_match_valid_urlÚgroupÚreplacer   Úplaylist_resultr   Ú	functoolsÚpartialr~   Ú
_PAGE_SIZE)r:   r+   r{   Ú
season_numÚseason_titles        r<   ri   zDropoutSeasonIE._real_extractÙ   s¡   € Ø—N‘N 3Ó'ˆ	Ø×*Ñ*¨3Ó/×5Ñ5°hÓ?ÒDÀ1ˆ
Ø ×(Ñ(¨¨cÓ2×8Ñ8Ó:ˆà×#Ñ#Üœi×/Ñ/°×0@Ñ0@À#ÀyÓQÐSW×SbÑSbÓcØˆk˜ * Ð.°<°.À
È:È,Ð0WóYð 	Yr>   N)rj   rk   rl   rˆ   rn   ro   r~   ri   rp   r>   r<   rr   rr   ¨   s�   „ Ø€JØl€Jð QØDØ à:Ø?ññ		
ð HØHØ à:Ø?ññ		
ð GØ*Øà9Ø>ññ		
ð WØYØ à@ØEññ		
ð9%€FòNkóYr>   rr   )r†   Úcommonr   Úvimeor   Úutilsr   r   r	   r
   r   r   r   r   r   r   r   r   rr   rp   r>   r<   ú<module>rŽ      s?   ðÛ å !Ý ÷÷ ÷ ñ ôQ
�ô Q
ôh8Y�mõ 8Yr>   