
    yfl"                     h    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	  G d de      Z
 G d d	e      Zy)
    N   )InfoExtractor   )determine_extfloat_or_noneint_or_noneparse_iso8601strip_or_nonec                       e Zd ZdZdZddddddd	d
ddi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i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*Zd+Zd, Zy-).ToggleIEtogglezc(?:https?://(?:(?:www\.)?mewatch|video\.toggle)\.sg/(?:en|zh)/(?:[^/]+/){2,}|toggle:)(?P<id>[0-9]+)zOhttp://www.mewatch.sg/en/series/lion-moms-tif/trailers/lion-moms-premier/343115343115mp4zLion Moms Premierez$md5:aea1149404bff4d7f7b6da11fafd8e6b20150910iU)idexttitledescriptionupload_date	timestampskip_downloadm3u8 downloadurl	info_dictparamszDRM-protected videoz<http://www.mewatch.sg/en/movies/dug-s-special-mission/341413341413wvmzDug's Special Missionz$md5:e86c6f4458214905c1772398fabc93e020150827i{UzDRM-protected wvm download)noter   r   r   z6m3u8 links are geo-restricted, but Android/mp4 is okayzWhttp://www.mewatch.sg/en/series/28th-sea-games-5-show/28th-sea-games-5-show-ep11/332861332861z&28th SEA Games (5 Show) -  Episode  11z$md5:3cd4f5f56c7c3b1340c50a863f896faa20150605i+qUzm3u8 links are geo-restricted)r    r   r   r   skipzqhttp://video.toggle.sg/en/clips/seraph-sun-aloysius-will-suddenly-sing-some-old-songs-in-high-pitch-on-set/343331Tr   only_matchingzphttp://www.mewatch.sg/en/clips/seraph-sun-aloysius-will-suddenly-sing-some-old-songs-in-high-pitch-on-set/343331z>http://www.mewatch.sg/zh/series/zero-calling-s2-hd/ep13/336367z`http://www.mewatch.sg/en/series/vetri-s2/webisodes/jeeva-is-an-orphan-vetri-s2-webisode-7/342302z1http://www.mewatch.sg/en/movies/seven-days/321936z\https://www.mewatch.sg/en/tv-show/news/may-2017-cna-singapore-tonight/fri-19-may-2017/512456z4http://www.mewatch.sg/en/channels/eleven-plus/401585
tvpapi_14711111c                    | j                  |      }ddddddddd| j                  | j                  d|dd}| j                  d|dt	        j
                  |      j                  d	      
      d   }g }j                  dg       D ]  }|j                  d      |j                  d      }}|r|dk(  s|s0t        |      }	|j                  dd      }|	dk(  r?| j                  ||d|d|z  d|z  d      }
|
D ]  }d|d   v r|j                  |        |	dk(  r-|j                  | j                  |||d|z  d|z  d             |	dk(  r-|j                  | j                  |||d|z  d|z  d              |	dk(  s|j                  |	||d!        |sgj                  d"      xs g D ]O  }| j                  d#      r|j                  d$      d%k(  s*|j                  d&      d'k(  s?| j!                  |       Q g }j                  d(g       D ]  }t#        |t$              s|j                  d      }|s(d|i}|j                  d)d      }t'        j(                  d*|      }|rD|j+                  t-        |j/                  d+            t-        |j/                  d,            d-       |j                  |        fd.}||t1        j                  d/            t3        j                  d0            t5        j                  d1      xs d       t7        j                  d2             |d3       |d4      ||d5
S )6N r   )LocaleLanguageLocaleCountryLocaleDeviceLocaleUserState0)LocalePlatformSiteGuidDomainIDUDIDApiUserApiPass)initObjMediaID	mediaTypezHhttp://tvpapi.as.tvinci.com/v2_9/gateways/jsonpostgw.aspx?m=GetMediaInfozDownloading video info jsonzutf-8)data	MediaNameFilesURLFormatNA m3u8r   zDownloading %s m3u8 informationz&Failed to download %s m3u8 informationF)r   m3u8_idr    errnotefatalz/fpshls/r   mpdzDownloading %s MPD manifestz"Failed to download %s MPD manifest)mpd_idr    rB   rC   ismzDownloading %s ISM manifestz"Failed to download %s ISM manifest)ism_idr    rB   rC   )r   r   	format_idMetasallow_unplayable_formatsKey
EncryptionValue1PicturesPicSizez!(?P<width>\d+)[xX](?P<height>\d+)widthheight)rQ   rR   c                     t        j                  | dz         xs" j                  | j                         dz               S )NCounter_counter)r   getlower)prefixinfos    9/usr/lib/python3/dist-packages/yt_dlp/extractor/toggle.pycounterz'ToggleIE._real_extract.<locals>.counter   s<    )+,U*9T0UW W    DescriptionDurationCreationDateRatingViewLike)
r   r   r   durationr   average_rating
view_count
like_count
thumbnailsformats)	_match_id	_API_USER	_API_PASS_download_jsonjsondumpsencoderV   r   replace_extract_m3u8_formatsappendextend_extract_mpd_formats_extract_ism_formats	get_param
report_drm
isinstancedictresearchupdateintgroupr
   r   r	   r   )selfr   video_idr   r   rh   
video_file	video_url
vid_formatr   m3u8_formatsfmetarg   picturepic_url	thumbnailpic_sizemr[   rY   s                       @rZ   _real_extractzToggleIE._real_extractV   s   >>#&
 ')%'$&'(	 >>>>  !
& ""V3$**V:L:S:ST[:\ # ^ [!((7B/ #	J$.NN5$9:>>(;SzI	T 1	*C#++C4Jf}#99xUJ:ZGDzQ	  :  !
 & &A!QuX- NN1%	&
 t88x
6C@:M	  9  ! "
 t88x
6C@:M	  9  ! "
 $!+  ?#	H '*0b .'AB HHUO|;@QUX@XOOH-. 
xx
B/ 	)Ggt,kk%(GwI {{9b1H		>IA   !12!!''("34"  i(!	)$	W
 (-)@A#DHHZ$89&txx'?'G4H+DHHX,>?!&/!&/$
 	
r\   N)	__name__
__module____qualname__IE_NAME
_VALID_URL_TESTSrj   rk   r    r\   rZ   r   r      s   GwJ`)A%#
 _
 &M-A%#
 9
  Ih=A%#
 9
 0" C B P r C n F{@FD IIj
r\   r   c                   R    e Zd ZdZdZddddddd	d
ddiddddddddddgZd Zy)	MeWatchIEmewatchzEhttps?://(?:(?:www|live)\.)?mewatch\.sg/watch/[^/?#&]+-(?P<id>[0-9]+)z5https://www.mewatch.sg/watch/Recipe-Of-Life-E1-1793711008625r   u   Recipe Of Life 味之道i_z$md5:6e88cde8af2068444fc8e1bc3ebf257c20201021)r   r   r   r   r   r   r   r   r   ub   https://www.mewatch.sg/watch/Little-Red-Dot-Detectives-S2-搜密。打卡。小红点-S2-E1-176232Tr$   zhttps://www.mewatch.sg/watch/Little-Red-Dot-Detectives-S2-%E6%90%9C%E5%AF%86%E3%80%82%E6%89%93%E5%8D%A1%E3%80%82%E5%B0%8F%E7%BA%A2%E7%82%B9-S2-E1-176232z7https://live.mewatch.sg/watch/Recipe-Of-Life-E41-189759c                     | j                  |      }| j                  d|z   |ddi      d   }| j                  d|z   t        j	                         |      S )Nz!https://cdn.mewatch.sg/api/items/segmentsall)querycustomIdztoggle:)ri   rl   
url_resultr   ie_key)r   r   item_id	custom_ids       rZ   r   zMeWatchIE._real_extract   sg    ..%''/'9J. ( 00:<	 	!8??#4iA 	Ar\   N)r   r   r   r   r   r   r   r   r\   rZ   r   r      sn    GYJF/#A%
 _
 t j I'F0Ar\   r   )rm   rz   commonr   utilsr   r   r   r	   r
   r   r   r   r\   rZ   <module>r      s5     	 ! r
} r
j!A !Ar\   