
    V|h                     V    S SK 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g)	    N   )InfoExtractor   )	HTTPError)ExtractorErrorGeoRestrictedErrorfloat_or_nonetraverse_objtry_callc            
       D    \ rS rSrSrSSSSSSS	S
/ SQS.S./rSrS rSrg)OnDemandChinaEpisodeIE   zThttps?://www\.ondemandchina\.com/\w+/watch/(?P<series>[\w-]+)/(?P<id>ep-(?P<ep>\d+))zEhttps://www.ondemandchina.com/en/watch/together-against-covid-19/ep-1264394mp4g(\q@zEP 1 The Callingu   第1集 令出如山zZhttps://d2y2efdi5wgkcl.cloudfront.net/fit-in/256x256/media-io/2020/9/11/image.d9816e81.jpgu<   疫情严峻，党政军民学、东西南北中协同应考)zSocial HumanitiesDocumentaryMedicalSocial)idextdurationtitle	alt_title	thumbnaildescriptiontags)url	info_dicta  
        query Episode($programSlug: String!, $episodeNumber: Int!) {
            episode(
                programSlug: $programSlug
                episodeNumber: $episodeNumber
                kind: "series"
                part: null
            ) {
                id
                title
                titleEn
                titleKo
                titleZhHans
                titleZhHant
                synopsis
                synopsisEn
                synopsisKo
                synopsisZhHans
                synopsisZhHant
                videoDuration
                images {
                    thumbnail
                }
            }
        }c                   ^ ^ T R                  U5      R                  SSS5      u  p#nT R                  X5      mT R                  SUSS0[        R
                  " ST R                  U[        U5      S.S	.5      R                  5       S
9S   S   n T R                  SUS    S3USSS.S9n/ 0 p[#        WS5       H  nUR%                  S5      S:X  aE  T R'                  UR%                  S5      U5      u  pU	R)                  U5        T R+                  XS9  M]  T R-                  SUR%                  S5       3U5        M     [/        US   5      [1        UR%                  S5      S5      [#        US5      =(       d    T R3                  SS/T5      [#        USS 5      =(       d,    T R3                  S!S"/T5      =(       d    T R5                  T5      [#        US#S$S%5      [#        US&S'S(S)S*5      =(       d    T R3                  / S+QT5      U	U
[7        U U4S, j5      S-.	$ ! [         al  n[        UR                  [        5      (       aB  T R                  UR                  R                  R                  5       U5      S   n[!        U5      e S nAGNS nAff = f).Nseriesr   epz'https://odc-graphql.odkmedia.io/graphqlzContent-typezapplication/jsonEpisode)programSlugepisodeNumber)operationNamequery	variables)headersdatar(   episodez(https://odkmedia.io/odc/api/v2/playback// odc)Authorizationzservice-name)r'   detail)sources.typehlsr   )targetzUnsupported format videoDurationi  )imagesr   zog:imageztwitter:imager   titleEnzog:titleztwitter:titletitleKotitleZhHanstitleZhHant
synopsisEn
synopsisKosynopsisZhHanssynopsisZhHant	synopisis)zog:descriptionztwitter:descriptionr   c                  F   > T R                  ST5      R                  S5      $ )Nkeywordsz, )_html_search_metasplit)selfwebpages   S/home/james-whalen/.local/lib/python3.13/site-packages/yt_dlp/extractor/odkmedia.py<lambda>6OnDemandChinaEpisodeIE._real_extract.<locals>.<lambda>h   s    T%;%;J%P%V%VW[%\    )	r   r   r   r   r   r   formats	subtitlesr   )_match_valid_urlgroup_download_webpage_download_jsonjsondumps_QUERYintencoder   
isinstancecauser   _parse_jsonresponsereadr   r
   get#_extract_m3u8_formats_and_subtitlesextend_merge_subtitlesreport_warningstrr	   r@   _html_extract_titler   )rB   r   program_slug
display_id	ep_number
video_infosource_jsone
error_datarH   rI   sourcefmtssubsrC   s   `             @rD   _real_extract$OnDemandChinaEpisodeIE._real_extract8   s   .2.C.CC.H.N.NxY]_c.d+)((9((5z#%78!*#/%(^  vx ) 
  
! "+
,
	5--::d;K:LANPZ*,eD . FK  ";0@AFzz&!U*!EEfjjQVFWYcd
t$%%d%=##&9&**V:L9M$NPZ[ B j&'%jnn_&EtL&z3JK \!33Z4QSZ[":w	B ;//_0MwW;11':%j)]MZ(L,8HJZ\gi m))*bdkl"\]
 	
  	5!''9--!--agg.>.>.C.C.EzRS[\
(44 .	5s   H 
J A!JJ N)	__name__
__module____qualname____firstlineno__
_VALID_URL_TESTSrP   ri   __static_attributes__rk   rG   rD   r   r      s?    hJV'/uYM	
 FF41
rG   r   )rN   commonr   networking.exceptionsr   utilsr   r   r	   r
   r   r   rk   rG   rD   <module>rv      s&     ! - [
] [
rG   