U
    g                     @   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ed%d& Zd'd( Zd)d* Zd+S ),
SubstackIEz=https?://(?P<username>[\w-]+)\.substack\.com/p/(?P<id>[\w-]+)z4https://haleynahman.substack.com/p/i-made-a-vlog?s=rZ f27e4fc6252001d48d479f45e65cdfd5Z47660949mp4zI MADE A VLOGz$md5:9248af9a759321e1027226f988f54d96z$md5:bec758a34d8ee9142d43bcebdf33af18z
Maybe BabyZ33628)idexttitledescription	thumbnailuploaderuploader_id)urlmd5Z	info_dictzHhttps://haleynahman.substack.com/p/-dear-danny-i-found-my-boyfriends?s=rZ 0a63eacec877a1171a62cfa69710fceaZ51045592Zmpgau>   🎧 Dear Danny: I found my boyfriend's secret Twitter accountz$md5:a57f2439319e56e0af92dd0c95d75797z$md5:daa40b6b79249417c14ff8103db29639zIhttps://andrewzimmern.substack.com/p/mussels-with-black-bean-sauce-recipeZ fd3c07077b02444ff0130715b5f632bbZ47368578z4Mussels with Black Bean Sauce: Recipe of the Week #7z$md5:b96234a2906c7d854d5229818d889515z$md5:e30bfaa9da40e82aa62354263a9dd232zAndrew Zimmern's Spilled Milk Z577659z*https://persuasion1.substack.com/p/summersZ 1456a755d46084744facdfac9edf900fZ	141970405Z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/.+\.jpegZ
PersuasionZ61579c                 c   sT   t d|sd S t d|}|rPtj|}|j|d dd V  | jd S )Nz8<script[^>]+src=["\']https://substackcdn.com/[^"\']+\.jszF{[^}]*\\?["\']subdomain\\?["\']\s*:\s*\\?["\'](?P<subdomain>[^\\"\']+)Z	subdomainz.substack.comnetloc)	researchurllibparseurlparse_replacegroupgeturlZStopExtraction)clsr   webpageZmobjparsed r"   =/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/substack.py_extract_embed_urlsC   s    zSubstackIE._extract_embed_urlsc           	      C   s~   g i  }}dD ]f}t j|d| d| }|dkrd| 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   urljoinZ#_extract_m3u8_formats_and_subtitlesextendZ_merge_subtitlesappend)	selfZvideo_idr   formats	subtitlesZvideo_formatZ	video_urlZfmtssubsr"   r"   r#   _extract_video_formatsN   s    


z!SubstackIE._extract_video_formatsc                 C   s^  |  |dd\}}| ||}| | jd|d|tdd|}|}t|ddthf}|rrtj	
|j|d	 }|d
 d }g i  }	}
|dkrd|d
 d i}t|d d dst| 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 )Nr   usernamez%window\._preloads\s*=\s*JSON\.parse\(zjson stringz"{(?s:.+)}")Ztransform_sourceZcontains_patternZ
domainInfoZcustomDomainr   posttypeZpodcastr   Zpodcast_url)Zdefault_extz Resolving podcast file extensionzPodcast URL is invalidr   videoZvideoUploadzPage type "z" is not supported)r1   r   )r1   r   )r1   Zcover_image)Zpubname)r1   Zpublication_id)	r   r,   r-   r   r   r   r   r   Zwebpage_url)Z_match_valid_urlr   Z_download_webpageZ_parse_jsonZ_search_jsonr   r	   strr   r   r   r   r   r   Z_request_webpager   r   r*   r/   Zraise_no_formatsr   )r+   r   Z
display_idr0   r    Zwebpage_infoZcanonical_urldomainZ	post_typer,   r-   fmtr"   r"   r#   _real_extract_   sR        

 
zSubstackIE._real_extractN)	__name__
__module____qualname__Z
_VALID_URLZ_TESTSclassmethodr$   r/   r8   r"   r"   r"   r#   r
      sd   3

r
   )r   urllib.parser   commonr   Z
networkingr   utilsr   r   r   Zutils.traversalr	   r
   r"   r"   r"   r#   <module>   s   