U
    Mf                     @   sD   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 deZ	dS )    N   )InfoExtractor   )
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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577659c                 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-zk9bgjdq/yt_dlp/extractor/substack.py_extract_embed_urls0   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_formats;   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gi  }	}
n8|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videoZvideoUploadzPage type "z" is not supported)r/   r   )r/   r   )r/   Zcover_image)Zpubname)r/   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raise_no_formatsr   )r)   r   Z
display_idr.   r   Zwebpage_infoZcanonical_urldomainZ	post_typer*   r+   r    r    r!   _real_extractL   sB        
zSubstackIE._real_extractN)	__name__
__module____qualname__Z
_VALID_URLZ_TESTSclassmethodr"   r-   r5   r    r    r    r!   r      sN   &

r   )
r   urllib.parser   commonr   utilsr   r   r   r   r    r    r    r!   <module>   s   