
    V|h[                         S SK r SSKJr  SSKJr  SSKJr  SSKJrJ	r	J
r
JrJr   " S S	\5      r " S
 S\5      r " S S\5      rg)    N   )InfoExtractor   )Request)	HTTPError)ExtractorError
clean_htmlint_or_noneparse_age_limittry_getc                   B    \ rS rSrSrSrSrSrSrSr	Sr
S	 rS
 rS rSrg)
HRTiBaseIE   z
Base Information Extractor for Croatian Radiotelevision
video on demand site https://hrti.hrt.hr
Reverse engineered from the JavaScript app in app.min.js
hrtihrz1.1
all_in_onezBhttp://clientapi.hrt.hr/client_api.php/config/identify/format/jsonNc           	         SU R                   0nU R                  U R                  S SS[        R                  " U5      R                  5       S9S   nUU R                   U R                  S.n[        U R                  [        R                  " U5      R                  5       S9nS Ul        U R                  US S	S
S9nUS   U l	        US   nUS   S   S   S   R                  U R                  U R                   S9U l        US   S   S   S   S-   R                  U R                  S9U l        US   S   S   S   U l        g )Napplication_publication_idzDownloading uuidzUnable to download uuidnoteerrnotedatauuid)r   r   application_version)r   c                      g)NPUT r       O/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/hrti.py<lambda>2HRTiBaseIE._initialize_pre_login.<locals>.<lambda>.   s    r   zDownloading session informationz&Unable to download session information)r   r   
session_idmodulesvod_catalog	resourcessearchuri)languageapplication_iduserlogin/format/json)r"   logout)_APP_PUBLICATION_ID_download_json_API_URLjsondumpsencode_APP_VERSIONr   
get_method_session_idformat_APP_LANGUAGE_search_url
_login_url_logout_url)self	init_datar   app_datareqr%   r#   s          r   _initialize_pre_login HRTiBaseIE._initialize_pre_login   sp   ($*B*B
	 ""MM4&8-I&--/ # 1 289 *.*B*B#'#4#4
 dmm$**X*>*E*E*GH&''=< ( >	 %\2I&"=1+>xHOVV''33 W 5 #6?;7@G+,-3Vt?O?OV-P 	 #6?;7A%Hr   c           	      J   UUS.n U R                  U R                  S SS[        R                  " U5      R	                  5       S9nUR                  S0 5      R                  S5      nU(       a  [        U R                   SU 3S	S
9eUS   U l        g ! [
         a  n[        UR                  [        5      (       aa  UR                  R                  S:X  aG  U R                  UR                  R                  R                  5       R	                  5       S 5      n S nANe S nAff = f)N)usernamepasswordz
Logging inzUnable to log inr   i  errormessagez said: T)expectedsecure_streaming_token)r/   r:   r1   r2   r3   r   
isinstancecauser   status_parse_jsonresponsereadgetIE_NAME_token)r<   rC   rD   	auth_data	auth_infoeerror_messages          r   _perform_loginHRTiBaseIE._perform_loginA   s      
	
	++LBTZZ	*113 , 5I "gr266yA <<.7    89  	!''9--!''..C2G ,,QWW-=-=-B-B-D-K-K-MtT			s   ?B 
D"A;DDD"c                 F    U R                   (       d  U R                  SS9  g g )NrD   )method)rQ   raise_login_required)r<   s    r   _real_initializeHRTiBaseIE._real_initializeY   s    {{%%Z%8 r   )r:   r;   r9   r6   rQ   )__name__
__module____qualname____firstlineno____doc___NETRC_MACHINEr8   r4   r.   r0   rQ   r@   rV   r[   __static_attributes__r   r   r   r   r      s9    
 NML&SHF"IH:09r   r   c                   \    \ rS rSrSrSSSSSSS	\\\\S
S.SS.SSS.SSS.SSS./rS rSrg)HRTiIE_   a  (?x)
                        (?:
                            hrti:(?P<short_id>[0-9]+)|
                            https?://
                                hrti\.hrt\.hr/(?:\#/)?video/show/(?P<id>[0-9]+)/(?P<display_id>[^/]+)?
                        )
                    zLhttps://hrti.hrt.hr/#/video/show/2181385/republika-dokumentarna-serija-16-hd2181385z#republika-dokumentarna-serija-16-hdmp4z)REPUBLIKA, dokumentarna serija (1/6) (HD)z$md5:48af85f620e8e0e1df4096270568544fij     )id
display_idexttitledescriptionduration
view_countaverage_ratingepisode_numberseason_number	age_limitRequires account credentials)url	info_dictskipz)https://hrti.hrt.hr/#/video/show/2181385/Trv   only_matchingzhrti:2181385zEhttps://hrti.hrt.hr/video/show/3873068/cuvar-dvorca-dramska-serija-14c           
         U R                  U5      nUR                  S5      =(       d    UR                  S5      nUR                  S5      =(       d    UnU R                  U R                   SU S3US5      S   S   nUS	   nUS
   nUS   S   S   nUS   R	                  U R
                  S9n	U R                  XSSSS9n
[        UR                  S5      5      n[        UR                  S0 5      R                  S5      5      n[        UR                  S5      5      n[        UR                  S5      5      n[        UR                  S5      5      nUUUUUUUUU
S.	$ )Nshort_idrj   rk   z
/video_id/r,   Downloading video metadata JSONvideor   rm   
title_longvideo_assetsmovierv   )TOKENrh   m3u8_nativehls)entry_protocolm3u8_idsummary_longparental_controlratingviewsuser_ratingro   )	rj   rk   rm   rn   ro   rp   rq   rt   formats)_match_valid_urlgroupr/   r9   r7   rQ   _extract_m3u8_formatsr	   rO   r   r
   )r<   rv   mobjvideo_idrk   r~   
title_inform   r   m3u8_urlr   rn   rt   rp   rq   ro   s                   r   _real_extractHRTiIE._real_extract   sy   $$S)::j)=TZZ-=ZZ-9
## 
8*LA9;;BDDEG 7^
<(n%g.q1<&&T[[&9,,% -  !!?@#EII.@"$E$I$I($ST	 7!34
$UYY}%=>uyy45 $& $,"

 
	
r   r   N)	r]   r^   r_   r`   
_VALID_URLint_TESTSr   rc   r   r   r   re   re   _   ss    J ^?@A!! 
 /" ;  W-F6"
r   re   c                   D    \ rS rSrSrSSSS.SSS	.S
SS.SSS./rS rSrg)HRTiPlaylistIE   zWhttps?://hrti\.hrt\.hr/(?:#/)?video/list/category/(?P<id>[0-9]+)/(?P<display_id>[^/]+)?z5https://hrti.hrt.hr/#/video/list/category/212/ekumena212ekumena)rj   rm      ru   )rv   rw   playlist_mincountrx   z.https://hrti.hrt.hr/#/video/list/category/212/Try   z3https://hrti.hrt.hr/video/list/category/212/ekumenac                    U R                  U5      nUR                  S5      nUR                  S5      =(       d    UnU R                  U R                   SU S3US5      n[	        US [
        5      =(       d=    UR                  S/ 5       Vs/ s H  ofR                  S5      (       d  M  US   PM!     snnU Vs/ s H  oR                  SU 35      PM     n	nU R                  XU5      $ s  snf s  snf )	Nrj   rk   z/category_id/r,   r}   c                 $    U S   S   S   S   S   $ )Nvideo_listingsr   alternativeslistr   )xs    r   r    .HRTiPlaylistIE._real_extract.<locals>.<lambda>   s    "2 3A 6~ Fq I& Qr   videoszhrti:)	r   r   r/   r9   r   r   rO   
url_resultplaylist_result)
r<   rv   r   category_idrk   rM   r~   	video_idsr   entriess
             r   r   HRTiPlaylistIE._real_extract   s    $$S)jj&ZZ-<
&& k],G9; Q ^/7||Hb/I]/IeYYW[_keDk/I] 	 HQQy8??U8*#56yQ##G*EE	 ^Qs   C+*	C+:C0r   N)r]   r^   r_   r`   r   r   r   rc   r   r   r   r   r      sK    kJF
 . @ EF Fr   r   )r1   commonr   
networkingr   networking.exceptionsr   utilsr   r	   r
   r   r   r   re   r   r   r   r   <module>r      sG     !   - M9 M9`E
Z E
P!FZ !Fr   