a
    hS'                     @   s   d dl Z d dlZddlmZ ddlmZmZmZmZm	Z	m
Z
mZmZmZmZmZmZ G dd deZG dd	 d	eZG d
d deZdS )    N   )TurnerBaseIE   )ExtractorError
clean_htmldetermine_extmake_archive_idmerge_dictsmimetype2extparse_durationparse_qstraverse_objunified_timestampurl_or_noneurljoinc                   @   s"   e Zd ZdddddZdd ZdS )	TeamcocoBaseIE)i  i  )i  ih  )i   i  )i  i8  )lowsdZhdZuhdc              	   C   s   g i  }}t |ddthfD ]}|d}|d}td|rN|ddd}t|t|d}|r|snqq|d	ks~|d
kr| j||d|dd\}	}
|	|	 | j
|
|d q|| jv r|drq||||| j| d | j| d d q||fS )Nsrc.labelzhttps?:/[^/]z:/z://r   typeZhlsm3u8mp4F)Zm3u8_idfatal)targetz/mp4:protected/r   )urlext	format_idwidthheight)r   dictgetrematchreplacer   r
   Z#_extract_m3u8_formats_and_subtitlesextendZ_merge_subtitles
_QUALITIES
startswithappend)selfinfovideo_idformats	subtitlesr   r   Zsrc_urlr   Zfmtssubs r/   N/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/teamcoco.py_get_formats_and_subtitles   s4    








z)TeamcocoBaseIE._get_formats_and_subtitlesN)__name__
__module____qualname__r&   r1   r/   r/   r/   r0   r      s   r   c                   @   s   e Zd ZdZdddddddd	d
dddidddddddddddddi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/ Zd0S )1
TeamcocoIEz9https?://(?:www\.)?teamcoco\.com/(?P<id>([^/]+/)*[^/?#]+)z)http://teamcoco.com/video/mary-kay-remoteZ80187zvideo_mary-kay-remoter   z*Conan Becomes A Mary Kay Beauty Consultantz$md5:9fb64e45b5aef6b2af1b67612b36c162z)https://teamcoco.com/image/thumb?id=80187Z20140402i;S)id
display_idr   titledescription	thumbnailupload_date	timestampskip_downloadr   r   	info_dictparamsz:http://teamcoco.com/video/louis-ck-interview-george-w-bushZ19705z&video_louis-ck-interview-george-w-bushz"Louis C.K. Interview Pt. 1 11/3/11z?Louis C.K. got starstruck by George W. Bush, so what? Part one.z)https://teamcoco.com/image/thumb?id=19705Z20111104iӳNz;http://teamcoco.com/video/timothy-olyphant-drinking-whiskeyZ88748z'video_timothy-olyphant-drinking-whiskeyu2   Timothy Olyphant Raises A Toast To “Justified”z$md5:15501f23f020e793aeca761205e42c24Z20150415iR.Uz)https://teamcoco.com/image/thumb?id=88748)r6   r7   r   r8   r9   r;   r<   r:   )r   r?   zhttp://teamcoco.com/video/full-episode-mon-6-1-joel-mchale-jake-tapper-and-musical-guest-courtney-barnett?playlist=x;eyJ0eXBlIjoidGFnIiwiaWQiOjl9Z89341zVFull Episode - Mon. 6/1 - Joel McHale, Jake Tapper, And Musical Guest Courtney BarnettzDGuests: Joel McHale, Jake Tapper, And Musical Guest Courtney Barnett)r6   r   r8   r9   z"This video is no longer available.)r   r?   skipzAhttp://teamcoco.com/video/the-conan-audiencey-awards-for-04/25/18Tr   Zonly_matchingzLhttp://teamcoco.com/italy/conan-jordan-schlansky-hit-the-streets-of-florencez8http://teamcoco.com/haiti/conan-s-haitian-history-lessonzEhttp://teamcoco.com/israel/conan-hits-the-streets-beaches-of-tel-avivc           
      C   s   |  |dd}| ||}| ||d d d }tt|ddd dthf }t|d	td
hfdd}tt|dpz|}| 	||\}}	||||	|dt|ddt
hfddd hthfdddS )N/_props	pagePropspageDatablocksc                 S   s   |d dv S )Nname)z	meta-tagszvideo-playerz
video-infor/   rD   vr/   r/   r0   <lambda>       z*TeamcocoIE._real_extract.<locals>.<lambda>)imageZposterzhttps://teamcoco.com/Fget_all)r6   r   )r6   r7   r,   r-   r:   r8   )ZdescriptionHtmlr9   ZpublishedOnc                 S   s
   |  dS )Nz 12:00AMr/   )xr/   r/   r0   rL      rM   )r8   r9   r<   )	_match_idr$   _download_webpage_search_nextjs_datar	   r   r    r   r   r1   r   r   )
r)   r   r7   webpagedatar*   r:   r+   r,   r-   r/   r/   r0   _real_extract   s2    zTeamcocoIE._real_extractN)r2   r3   r4   
_VALID_URL_TESTSrW   r/   r/   r/   r0   r5   >   sx   
Cr5   c                   @   sR   e Zd ZdZdZddddddd	d
dddgd
ddiddddgZdZdd ZdS )ConanClassicIEFzShttps?://(?:(?:www\.)?conanclassic|conan25\.teamcoco)\.com/(?P<id>([^/]+/)*[^/?#]+)zChttps://conanclassic.com/video/ice-cube-kevin-hart-conan-share-lyftZ74709r   z.Ice Cube, Kevin Hart, & Conan Share A Lyft Carz*video/ice-cube-kevin-hart-conan-share-lyftzCThe stars of "Ride Along" teach Conan how to roll around Hollywood.z?http://cdn.teamcococdn.com/image/640x360/lyft-5bd75f82b616c.pngg     Ё@Z20131211iTRzteamcoco 74709)
r6   r   r8   r7   r9   r:   durationr;   r<   _old_archive_idsr=   r   r>   zGhttps://conan25.teamcoco.com/video/ice-cube-kevin-hart-conan-share-lyftTrB   a  query find($id: ID!) {
  findRecord(id: $id) {

... on MetaInterface {
  id
  title
  teaser
  publishOn
  slug
  thumb {

... on FileInterface {
  id
  path
  preview
  mime
}

  }
}

... on Video {
  videoType
  duration
  isLive
  youtubeId
  turnerMediaId
  turnerMediaAuthToken
  airDate
}

... on Episode {
  airDate
  seasonNumber
  episodeNumber
  guestNames
}

  }
  findRecordVideoMetadata(id: $id) {
    turnerMediaId
    turnerMediaAuthToken
    duration
    src
  }
}c              
   C   sX  |  |}| ||}| ||d d d }t|dddddd d	fd
dd}|s`| jddd | jd|tj| jd|iddd	 ddid}t|ddddddt
hfdthfdthfd f}t|d!dd}|rt|d"dd}	|	std#| d$d%gi || ||	d&d'd  n&| t|d(|\}
}||
|d) ||td*|gd+|S ),NrE   rF   rG   rH   .Z	fieldDefsc                 S   s   |d dkS )NrI   ZincomingVideoIdr/   rJ   r/   r/   r0   rL      rM   z.ConanClassicIE._real_extract.<locals>.<lambda>value)rH   .rE   fieldsZincomingVideoRecordr6   FrO   z'Unable to extract video ID from webpageT)expectedz+https://conanclassic.com/api/legacy/graphqlr6   )query	variables),:)
separatorszContent-Typezapplication/json)rV   headersrV   
findRecordr8   ZteaserZthumbpreviewr[   Z	publishOn)r8   r9   r:   r[   r<   )rV   rf   findRecordVideoMetadataZturnerMediaId)rV   rh   ZturnerMediaAuthTokenz0No Turner Media auth token found in API responseZ	countriesZUSZjws)ZaccessTokenZaccessTokenType)rV   ri   )r,   r-   ZTeamcoco)r6   r7   r\   )rR   rS   rT   r   Zraise_no_formatsZ_download_jsonjsondumps_GRAPHQL_QUERYencoder   r   r   r   Z_initialize_geo_bypassupdateZ_extract_ngtv_infor1   r   )r)   r   r7   rU   rV   r+   responser*   Zmedia_idtokenr,   r-   r/   r/   r0   rW      sr    





zConanClassicIE._real_extractN)r2   r3   r4   Z_WORKINGrX   rY   rl   rW   r/   r/   r/   r0   rZ      s,   /rZ   )rj   r"   Zturnerr   utilsr   r   r   r   r	   r
   r   r   r   r   r   r   r   r5   rZ   r/   r/   r/   r0   <module>   s   8)`