o
    i                     @   s\   d dl Z d dlZddlmZ ddlmZ ddlmZm	Z	m
Z
 ddlmZ G dd	 d	eZdS )
    N   )InfoExtractor   )HEADRequest)determine_ext
js_to_jsonstr_or_none)traverse_objc                   @   s   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ddddd d!d"d#d$ddgZd%d&dd'd(d)d*d+dd,d-d.dd/d0d)d1d2dd,gZed3d4 Zd5d6 Zd7d8 Z	d9S ):
SubstackIEz/https?://[\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 577659z*https://persuasion1.substack.com/p/summers 1456a755d46084744facdfac9edf900f	141970405mp3z*Larry Summers on What Went Wrong on Campusz^Yascha Mounk and Larry Summers also discuss the promise and perils of artificial intelligence.z*re:https://substackcdn\.com/image/.+\.jpeg
Persuasion61579z-https://www.mollymovieclub.com/p/interstellar53602801InterstellarzListen now | Episode Onezre:https?://.+\.jpegzMolly Movie Club839621)r   r   zEhttps://www.blockedandreported.org/p/episode-117-lets-talk-about-depp57962052z$md5:855b2756f0ee10f6723fa00b16266f8dzThe takes the takes the takeszBlocked and Reported500230c                 c   sV    t d|s	d S t d|}|r)tj|}|j|d dd V  | jd S )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parsed r9   M/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/substack.py_extract_embed_urlsZ   s   zSubstackIE._extract_embed_urlsc           	      C   s~   g i }}dD ]3}t j|d| d| }|dkr2| j||ddd\}}|| | j||d q|||d	 q||fS )
N)hlsr   z/api/v1/video/upload/z
/src?type=r<   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subsr9   r9   r:   _extract_video_formatse   s   


z!SubstackIE._extract_video_formatsc                 C   sP  |  |}| ||}| | jd|d|tdd|}|}t|ddthf}|r3tj	|j
|d }|d d	 }g i }}	|d
krid|d d i}
t|
d d dsct| t|
d |ddj|
d< ||
 n|dkr|| |d d d |\}}	n	| d| d t|d d ||	t|dt|dt|dt|dtt|d|d	S )Nz%window\._preloads\s*=\s*JSON\.parse\(zjson stringz"{(?s:.+)}")transform_sourcecontains_pattern
domainInfocustomDomainr*   posttypepodcastr   podcast_url)default_extz Resolving podcast file extensionzPodcast URL is invalidr   videovideoUploadr   zPage type "z" is not supported)rQ   r   )rQ   r   )rQ   cover_image)pubname)rQ   publication_id)	r   rF   rG   r   r   r   r   r   webpage_url)	_match_id_download_webpage_parse_json_search_jsonr   r	   strr.   r/   r0   r1   r3   r   _request_webpager   r   rC   rL   raise_no_formatsr   )rD   r   
display_idr6   webpage_infocanonical_urldomain	post_typerF   rG   fmtr9   r9   r:   _real_extractv   sL   

zSubstackIE._real_extractN)
__name__
__module____qualname__
_VALID_URL_TESTS_WEBPAGE_TESTSclassmethodr;   rL   rj   r9   r9   r9   r:   r
      s    3

r
   )r,   urllib.parser.   commonr   
networkingr   utilsr   r   r   utils.traversalr	   r
   r9   r9   r9   r:   <module>   s    