o
    i'                     @   s\   d dl Z 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
G dd	 d	eZdS )
    N   )InfoExtractor   )int_or_noneparse_durationunified_strdatec                   @   s   e Zd 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gdd d!d"dd#d$gd%d&d'd(dd)d*d+d,d-d.d,d-gZd/Zd0d1 Zd2S )3AppleTrailersIEappletrailerszahttps?://(?:www\.|movie)?trailers\.apple\.com/(?:trailers|ca)/(?P<company>[^/]+)/(?P<movie>[^/]+)z1http://trailers.apple.com/trailers/wb/manofsteel/5111zMan of Steel)idtitle d97a8e575432dbcb81b7c3acb741f8a8zmanofsteel-trailer4movo   z	Trailer 420130523wb)r   extdurationr   upload_dateuploader_id)md5	info_dict b8017b7131b721fb4e8d6f49e1df908czmanofsteel-trailer3   z	Trailer 320130417 d0f1e1150989b9924679b441f3404d48zmanofsteel-trailer   Trailer20121212 5fe08795b943eb2e757fa95cb6def1cbzmanofsteel-teaser]   Teaser20120721)urlr   playlistz7http://trailers.apple.com/trailers/magnolia/blackthorn/4489
Blackthornr   z Unable to download JSON metadata)r#   r   playlist_mincountexpected_warningsz4http://trailers.apple.com/trailers/fox/kungfupanda3/15881zKung Fu Panda 3   r#   r   r'   z.http://trailers.apple.com/ca/metropole/autrui/T)r#   only_matchingzLhttp://movietrailers.apple.com/trailers/focus_features/kuboandthetwostrings/ziTunes.playURL\((.*?)\);c           '         s6    |}|d}|d} ||} d|d} jd| d|dd}|rg }|d	g D ]|}	|	d
 }
g }|	di  D ]<\}}|di  D ]/\}}|d}|sZqN|| d| t	dd|t
|dt
|d|d d d qNqB||d t	dd|
  ||
|	dp|	dt|	dp|	dt|	d|d q2|di } |||dS tj|d} fd d!} j|||d"}g }|d#D ]}|d$jd% }  j|d&}t|}|d'}|sq|d
 }|d t	dd|  }|d(jd }|d dd}|d }td)|} d }!| r:d*t| d+ t| d, }!|d-d. d/d0  }"tj|d1|" d}# |#|"d2}$g }|$d3 d D ] }%t	d4d|%d }&||&|%d5 t
|%d t
|%d d6 qb|d7||||!|||d8d9id:	 qd;||d<S )=NmoviecompanyzFilmId\s*=\s*'(\d+)'zfilm idz.http://trailers.apple.com/trailers/feeds/data/z.jsonF)fatalclipsr   versionssizessrc-z_(\d+p\.mov)z_h\1widthheightr   )	format_idr#   r5   r6   languagez[^a-zA-Z0-9] screenthumbruntimefadedposted)r   formatsr   	thumbnailr   r   r   pagemovie_titlezincludes/playlists/itunes.incc                    s@   t dd| } t dd| } dd }t  j|| } d|  dS )	Nz(?s)<script[^<]*?>.*?</script>r9   z<img ([^<]*?)/?>z	<img \1/>c                 S   s   d | dddS )NziTunes.playURL({});r   'z&#39;)formatgroupreplace)m rH   R/home/ubuntu/.local/lib/python3.10/site-packages/yt_dlp/extractor/appletrailers.py_clean_json   s   zDAppleTrailersIE._real_extract.<locals>.fix_html.<locals>._clean_jsonz<html>z</html>)resub_JSON_RE)srJ   selfrH   rI   fix_html   s
   z/AppleTrailersIE._real_extract.<locals>.fix_html)transform_sourcez./div/ul/liz.//aonClickztrailer infor#   z.//imgz+(?P<minutes>[0-9]+):(?P<seconds>[0-9]{1,2})<   minutesseconds/_r   zincludes/settings/zDownloading settings jsonmetadataz_(\d*p\.mov)type)r#   rD   r5   r6   videoz
User-AgentzQuickTime compatible (yt-dlp))	_typer   r?   r   r   r@   r   r   http_headersr$   )r]   r   entries)_match_valid_urlrE   _download_webpage_search_regex_download_jsongetitemsappendrK   rL   r   lowerr   r   playlist_resulturllibparseurljoin_download_xmlfindallfindattribrM   jsonloadsrF   searchintsplit
rpartition)'rP   r#   mobjr-   r   webpagefilm_id	film_datar_   clip
clip_titler?   versionversion_datasize	size_datar3   	page_dataplaylist_urlrQ   docr$   lion_clicktrailer_info_jsontrailer_info	first_urlr   video_idr@   r   r<   rG   r   
trailer_idsettings_json_urlsettingsfmt
format_urlrH   rO   rI   _real_extract^   s   











 


zAppleTrailersIE._real_extractN)__name__
__module____qualname__IE_NAME
_VALID_URL_TESTSrM   r   rH   rH   rH   rI   r      s    5
	Lr   c                   @   s   e Zd ZdZdddddddddd	d
dddddZdde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gZdd Z	dS ) AppleTrailersSectionIEzappletrailers:section
just_addedz
Just Added)	feed_pathr   	exclusive	Exclusivejust_hdzJust HDmost_popzMost PopularstudioszMovie Studios)	justaddedr   justhdmostpopularmoviestudiosz;https?://(?:www\.)?trailers\.apple\.com/#section=(?P<id>{})|z,http://trailers.apple.com/#section=justaddedr   )r   r   P   r+   z,http://trailers.apple.com/#section=exclusivez)http://trailers.apple.com/#section=justhdr   z.http://trailers.apple.com/#section=mostpopularr      z/http://trailers.apple.com/#section=moviestudiosr   c                    sP     |} d j| d |} fdd|D } || j| d S )Nz5http://trailers.apple.com/trailers/home/feeds/{}.jsonr   c                    s   g | ]}  d |d  qS )zhttp://trailers.apple.comlocation)
url_result).0erO   rH   rI   
<listcomp>  s    z8AppleTrailersSectionIE._real_extract.<locals>.<listcomp>r   )	_match_idrc   rD   	_SECTIONSrh   )rP   r#   sectionsection_datar_   rH   rO   rI   r     s   

z$AppleTrailersSectionIE._real_extractN)
r   r   r   r   r   rD   joinr   r   r   rH   rH   rH   rI   r      sf    %r   )rp   rK   urllib.parseri   commonr   utilsr   r   r   r   r   rH   rH   rH   rI   <module>   s     C