
    yf                     J    d dl Z d dlZddlmZ ddlmZmZmZ  G d de      Z	y)    N   )InfoExtractor   )
js_to_jsonstr_or_nonetraverse_objc                   ~    e 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dddddgZed        Zd Zd Zy) 
SubstackIEz=https?://(?P<username>[\w-]+)\.substack\.com/p/(?P<id>[\w-]+)z4https://haleynahman.substack.com/p/i-made-a-vlog?s=r f27e4fc6252001d48d479f45e65cdfd547660949mp4zI MADE A VLOGz$md5:9248af9a759321e1027226f988f54d96z$md5:bec758a34d8ee9142d43bcebdf33af18z
Maybe Baby33628)idexttitledescription	thumbnailuploaderuploader_id)urlmd5	info_dictzHhttps://haleynahman.substack.com/p/-dear-danny-i-found-my-boyfriends?s=r 0a63eacec877a1171a62cfa69710fcea51045592mpgau>   🎧 Dear Danny: I found my boyfriend's secret Twitter accountz$md5:a57f2439319e56e0af92dd0c95d75797z$md5:daa40b6b79249417c14ff8103db29639zIhttps://andrewzimmern.substack.com/p/mussels-with-black-bean-sauce-recipe fd3c07077b02444ff0130715b5f632bb47368578z4Mussels with Black Bean Sauce: Recipe of the Week #7z$md5:b96234a2906c7d854d5229818d889515z$md5:e30bfaa9da40e82aa62354263a9dd232zAndrew Zimmern's Spilled Milk 577659c              #   0  K   t        j                  d|      sy t        j                  d|      }|rct        j                  j	                  |      }|j                  |j                  d       d      j                          | j                         y w)Nz8<script[^>]+src=["\']https://substackcdn.com/[^"\']+\.jszF{[^}]*\\?["\']subdomain\\?["\']\s*:\s*\\?["\'](?P<subdomain>[^\\"\']+)	subdomainz.substack.comnetloc)	researchurllibparseurlparse_replacegroupgeturlStopExtraction)clsr   webpagemobjparseds        ;/usr/lib/python3/dist-packages/yt_dlp/extractor/substack.py_extract_embed_urlszSubstackIE._extract_embed_urls0   s     yyTV]^yybdkl\\**3/F//DJJ{,C+DM)R/SZZ\\$$&& s   BBc                    g i }}dD ]~  }t         j                  j                  |d| d|       }|dk(  r=| j                  ||dd      \  }}|j	                  |       | j                  ||       k|j                  ||d	        ||fS )
N)hlsr   z/api/v1/video/upload/z
/src?type=r3   r   F)fatal)target)r   r   )r%   r&   urljoin#_extract_m3u8_formats_and_subtitlesextend_merge_subtitlesappend)	selfvideo_idr   formats	subtitlesvideo_format	video_urlfmtssubss	            r0   _extract_video_formatsz!SubstackIE._extract_video_formats;   s    * 	L,,S4I(S]^j]k2lmIu$!EEiQY[`hmEn
dt$%%d9%=$'  	 	!!    c                    | j                  |      j                  dd      \  }}| j                  ||      }| j                  | j	                  d|d|t
        d      |      }|}t        |ddt        hf      }|r=t        j                  j                  |      j                  |	      j                         }|d
   d   }g i }
}	|dk(  rd|d
   d   igi }
}	n9|dk(  r| j                  |d
   d   d   |      \  }	}
n| j                  d| d       t        |d
   d         |	|
t        |d      t        |d      t        |d      t        |d      t        t        |d            |d	S )Nr   usernamez%window\._preloads\s*=\s*JSON\.parse\(zjson stringz"{(?s:.+)}")transform_sourcecontains_pattern
domainInfocustomDomainr!   posttypepodcastr   podcast_urlvideovideoUploadzPage type "z" is not supported)rK   r   )rK   r   )rK   cover_image)pubname)rK   publication_id)	r   r=   r>   r   r   r   r   r   webpage_url)_match_valid_urlr)   _download_webpage_parse_json_search_jsonr   r   strr%   r&   r'   r(   r*   rC   raise_no_formatsr   )r;   r   
display_idrF   r-   webpage_infocanonical_urldomain	post_typer=   r>   s              r0   _real_extractzSubstackIE._real_extractL   s   #44S9??jQ
H((j9''(9(94g}n ): )VWac l\>C5,QR"LL11#6??v?NUUWM (0		!#(,v*>}*M"N!OQSYG'!!%!<!<\&=QR_=`ae=fhu!vGY!!K	{:L"MN l6*401"!,0AB'6MN%l4KL$\?C&|LB\']^(

 
	
rD   N)	__name__
__module____qualname__
_VALID_URL_TESTSclassmethodr1   rC   ra    rD   r0   r
   r
      s    QJE1$A?$"
 Z1UA?$"
 [1KA?8#
1$FL ' '"" 
rD   r
   )
r#   urllib.parser%   commonr   utilsr   r   r   r
   rh   rD   r0   <module>rl      s"    	  ! 9 9d
 d
rD   