U
    g -                     @   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m	Z	m
Z
mZ G dd deZG dd	 d	eZG d
d deZG dd deZG dd deZdS )    N   )InfoExtractor   )ExtractorErrorOnDemandPagedListdetermine_extdict_getfloat_or_nonetraverse_objc                   @   s   e Zd ZdZdddZdS )MildomBaseIENDownloading JSON metadatac              	   C   s   | j sdt  | _ | j||||r2t| nd |r@ddini | j dd|pRi d}|d dkrtd	|d
  d|d  ddd|d S )Nzpc-gp-zContent-Typezapplication/jsonZweb)Z
__guest_idZ
__platform)notedataheadersquerycoder   zMildom says: messagez (code )T)expectedbody)	_GUEST_IDuuidZuuid4Z_download_jsonjsondumpsencoder   )selfurlvideo_idr   r   r   content r   ;/tmp/pip-unpacked-wheel-q5ljy6pj/yt_dlp/extractor/mildom.py	_call_api   s(       	zMildomBaseIE._call_api)Nr   N)__name__
__module____qualname__r   r!   r   r   r   r    r      s   r   c                   @   s    e Zd ZdZdZdZdd ZdS )MildomIEZmildomz.Record ongoing live by specific user in Mildomz/https?://(?:(?:www|m)\.)mildom\.com/(?P<id>\d+)c           
   	   C   s,  |  |}| d| |}| jd|dd|id}|d|}| jd|d|d	d
d}| jd|d|d	dd}t|ddd}|std| j|d  d| d| |ddddd}|D ]}	d|	di d< q|| jd|d dpt|dt|dd t	d!t
|d"d#d$| jd%|d dp t|d&||d'd(S ))Nzhttps://www.mildom.com/z=https://cloudac.mildom.com/nonolive/gappserv/live/enterstudiozDownloading live metadatauser_idr   r   Zlog_idz<https://cloudac.mildom.com/nonolive/gappserv/live/liveserverzDownloading live server listZhls)r&   Zlive_server_typez7https://cloudac.mildom.com/nonolive/gappserv/live/tokenzObtaining live playback token)Zhost_idtype)r   r   )r   .tokenF)get_allz$Failed to obtain live playback tokenZstream_server/z_master.m3u8?mp4zhttps://www.mildom.com)RefererZOrigin)r   Zhttp_headersr-   ztwitter:descriptiondefaultZanchor_introZintroZ
live_intro)Zexpected_typeZlive_start_ms  Zscaleztwitter:title	loginnameT)idtitledescription	timestampuploaderuploader_idformatsZis_live)	_match_id_download_webpager!   getr
   r   Z_extract_m3u8_formats
setdefault_html_search_metastrr	   )
r   r   r   webpageZenterstudioZresult_video_idZserversZplayback_tokenr9   fmtr   r   r    _real_extract,   sZ    
      zMildomIE._real_extractN)r"   r#   r$   IE_NAMEIE_DESC
_VALID_URLrB   r   r   r   r    r%   '   s   r%   c                   @   s~   e Zd 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gZd!d" Zd#S )$MildomVodIEz
mildom:vodzVOD in Mildomzghttps?://(?:(?:www|m)\.)mildom\.com/playback/(?P<user_id>\d+)/(?P<id>(?P=user_id)-[a-zA-Z0-9]+-?[0-9]*)z<https://www.mildom.com/playback/10882672/10882672-1597662269z10882672-1597662269r,   u*   始めてのミルダム配信じゃぃ！zre:^https?://.*\.(png|jpg)$Z20200817gQ^*@u   ゲームをしたくて！g  @A10882672u   kson組長(けいそん))
r3   extr4   	thumbnailupload_datedurationr5   r6   r8   r7   r   	info_dictzChttps://www.mildom.com/playback/10882672/10882672-1597758589870-477z10882672-1597758589870-477u4   【kson】感染メイズ！麻酔銃で無双するg  @AgGzΰ@u*   このステージ絶対乗り越えたいZ20200818)
r3   rH   r4   rI   r6   r7   rK   r8   r5   rJ   zFhttps://www.mildom.com/playback/10882672/10882672-buha9td2lrn97fk2jme0z10882672-buha9td2lrn97fk2jme0u   【kson組長】CART RACER!!!Z20201104g  @sAg    @1@ZWTF)
r3   rH   r4   rI   r8   r7   rJ   r6   rK   r5   c                 C   s  |  |dd\}}| d| d| |}| jd|dd|idd	 }|d
 ddddddg}|d D ]F}|d|d |d d|d |d  |d  |d dddd qh|| jd|d dp|dt|dt	|dd d!t	|d"d d!t
|d#t|d$||d%	S )&Nr&   r3    https://www.mildom.com/playback/r+   zKhttps://cloudac.mildom.com/nonolive/videocontent/playback/getPlaybackDetailDownloading playback metadatav_idr'   ZplaybackZ	audio_urlaudioZm3u8_nativenoneZaacZm4a)r   	format_idprotocolvcodecacodecrH   Z
video_linkzvideo-{}namer   levelZvideo_widthZvideo_heightZh264r,   )rS   r   rT   widthheightrU   rV   rH   zog:descriptionr5   r.   r4   Zvideo_introZpublish_timer0   r1   Zvideo_length)Z
upload_picZ	video_pic)Zauthor_infoZ
login_name)	r3   r4   r5   r6   rK   rI   r7   r8   r9   )_match_valid_urlgroupr;   r!   appendformatr>   r<   r
   r	   r   )r   r   r&   r   r@   autoplayr9   rA   r   r   r    rB      sP      
zMildomVodIE._real_extractNr"   r#   r$   rC   rD   rE   _TESTSrB   r   r   r   r    rF   Y   sX   ,rF   c                   @   sl   e Zd 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gZdd ZdS )MildomClipIEzmildom:clipzClip in MildomzNhttps?://(?:(?:www|m)\.)mildom\.com/clip/(?P<id>(?P<user_id>\d+)-[a-zA-Z0-9]+)zEhttps://www.mildom.com/clip/10042245-63921673e7b147ebb0806d42b5ba5ce9z)10042245-63921673e7b147ebb0806d42b5ba5ce9u   全然違ったよiB`;   zre:https?://.+u   ざきんぽZ10042245)r3   r4   r6   rK   rI   r7   r8   rL   zEhttps://www.mildom.com/clip/10111524-ebf4036e5aa8411c99fb3a1ae0902864z)10111524-ebf4036e5aa8411c99fb3a1ae0902864u   かっこいいis`u   (ルーキーZ10111524zEhttps://www.mildom.com/clip/10660174-2c539e6e277c4aaeb4b1fbe8d22cb902z)10660174-2c539e6e277c4aaeb4b1fbe8d22cb902u   あim?`   u3   ドルゴルスレンギーン＝ダグワドルジZ10660174c                 C   s   |  |dd\}}| d| |}| jd|dd|id}|| jd|d d	pX|d
t|dt|d|dt|d||d t|ddd	S )Nr&   r3   zhttps://www.mildom.com/clip/zBhttps://cloudac-cf-jp.mildom.com/nonolive/videocontent/clip/detailrO   Zclip_idr'   r[   r.   r4   Zcreate_timelengthZcover)	user_infor2   r   r,   )	r3   r4   r6   rK   rI   r7   r8   r   rH   )	r\   r]   r;   r!   r>   r<   r	   r
   r   )r   r   r&   r   r@   Zclip_detailr   r   r    rB      s2        zMildomClipIE._real_extractNra   r   r   r   r    rc      sF   #rc   c                   @   sL   e Zd ZdZdZdZdddddd	d
ddddd	gZdd Zdd ZdS )MildomUserVodIEzmildom:user:vodz.Download all VODs from specific user in Mildomz7https?://(?:(?:www|m)\.)mildom\.com/profile/(?P<id>\d+)z'https://www.mildom.com/profile/10093333Z10093333u   Uploads from ねこばたけ)r3   r4   i  )r   rM   Zplaylist_mincountz'https://www.mildom.com/profile/10882672rG   u%   Uploads from kson組長(けいそん)   c                 c   sf   |d7 }| j d|d| ||ddd}|s0d S |D ],}|d}|sHq4| d| d	| V  q4d S )
Nr   zEhttps://cloudac.mildom.com/nonolive/videocontent/profile/playbackListzDownloading page Z30)r&   pagelimitr'   rP   rN   r+   )r!   r<   Z
url_result)r   r&   rj   ZreplyxrP   r   r   r    _fetch_page  s"     
zMildomUserVodIE._fetch_pagec                 C   s^   |  |}| d| d | jd|d|iddd }| tt| j|d|d	|d
  S )NzkThis will download all VODs belonging to user. To download ongoing live video, use "https://www.mildom.com/z	" insteadz;https://cloudac.mildom.com/nonolive/gappserv/user/profileV2r&   zDownloading user profile)r   r   rg      zUploads from r2   )r:   Z	to_screenr!   Zplaylist_resultr   	functoolspartialrm   )r   r   r&   Zprofiler   r   r    rB     s    
   zMildomUserVodIE._real_extractN)	r"   r#   r$   rC   rD   rE   rb   rm   rB   r   r   r   r    rh      s$   rh   )ro   r   r   commonr   utilsr   r   r   r   r	   r
   r   r%   rF   rc   rh   r   r   r   r    <module>   s    
2[@