a
    h                     @   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=rZ f27e4fc6252001d48d479f45e65cdfd5Z47660949mp4zI MADE A VLOGz$md5:9248af9a759321e1027226f988f54d96z$md5:bec758a34d8ee9142d43bcebdf33af18z
Maybe BabyZ33628)idexttitledescription	thumbnailuploaderuploader_id)urlmd5	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61579z-https://www.mollymovieclub.com/p/interstellarZ53602801ZInterstellarzListen now | Episode Onezre:https?://.+\.jpegzMolly Movie ClubZ839621)r   r   zEhttps://www.blockedandreported.org/p/episode-117-lets-talk-about-deppZ57962052z$md5:855b2756f0ee10f6723fa00b16266f8dzThe takes the takes the takeszBlocked and ReportedZ500230c                 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#   N/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/substack.py_extract_embed_urlsZ   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_formatse   s    


z!SubstackIE._extract_video_formatsc                 C   sP  |  |}| ||}| | jd|d|tdd|}|}t|ddthf}|rftj	|j
|d }|d d	 }g i  }}	|d
krd|d d i}
t|
d d dst| t|
d |ddj|
d< ||
 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 )Nz%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videoUploadr   z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_idZ_download_webpageZ_parse_jsonZ_search_jsonr   r	   strr   r   r   r   r   r   Z_request_webpager   r   r+   r0   Zraise_no_formatsr   )r,   r   Z
display_idr!   Zwebpage_infoZcanonical_urldomainZ	post_typer-   r.   fmtr#   r#   r$   _real_extractv   sH    

zSubstackIE._real_extractN)
__name__
__module____qualname__Z
_VALID_URLZ_TESTSZ_WEBPAGE_TESTSclassmethodr%   r0   r8   r#   r#   r#   r$   r
      s   3

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