a
    h                     @   sT   d dl mZ ddlmZ ddlmZmZmZmZm	Z	 ddl
mZ G dd deZdS )	   )InfoExtractor   )	HTTPError)ExtractorError
clean_htmlint_or_nonestr_or_noneurl_or_none)traverse_objc                   @   s   e Zd ZdZdddddddgd	d
dd	ddddddddgdd	ddd
ddddddddgdd d!gd"d#d$d%d&d'd(d)d*d	d+d,gd-
dgZd.d/ Zd0d1 Zd2S )3SkebIEz=https?://skeb\.jp/@(?P<uploader_id>[^/?#]+)/works/(?P<id>\d+)z"https://skeb.jp/@riiru_wm/works/10Z466853mp4z10-1z$md5:1ec50901efc3437cfbfe3790468d532di9  videozre:https?://.+u   姫ノ森りぃる@ひとづまZriiru_wm)	idexttitledescriptiondurationgenres	thumbnailuploaderuploader_id)url	info_dictz%https://skeb.jp/@furukawa_nob/works/3Z489408mp3z3-1z$md5:6de1f8f876426a6ac321c123848176a8b   Zvoicezcount:11u%   古川ノブ@宮城の動画勢VtuberZfurukawa_nob)
r   r   r   r   r   r   tagsr   r   r   z*https://skeb.jp/@Rizu_panda_cube/works/626Z626z$md5:834557b39ca56960c5f77dd6ddabe775u   りづ100億%ZRizu_panda_cubezcount:57)r   r   r   r   r   r   r   zSkipping unsupported extension)r   r   Zplaylist_countZexpected_warningsz'https://skeb.jp/@Yossshy_Music/works/13wavZ5566495z13-1z$md5:1026b8b9ae38c67c2d995970ec196550ZYossshyZYossshy_MusiciP  zcount:59Zmusic)
r   r   r   r   r   r   r   r   r   r   c                 C   s"   | j d| d| |ddddS )Nzhttps://skeb.jp/api/users/z/works/zapplication/jsonzBearer null)AcceptAuthorization)headers)Z_download_json)selfr   work_id r"   J/mnt/pikpak/tmp/myenv/lib/python3.9/site-packages/yt_dlp/extractor/skeb.py	_call_apiF   s    zSkebIE._call_apic                 C   s  |  |dd\}}z| ||}W nv ty } z^t|jtrN|jjdkrP |jj	 
 }| d|d}| dd| | ||}W Y d }~n
d }~0 0 d|it|dthd	d
 hfdthttfdthtttfddthtttfddthfd}g }	tt|ddd
 fdD ]\}
}t|ddthf}|dvrL| d| d q|	|| d|
 t|drdd|d dgind |dv rd nd d!|t|dthfd"thfd#thfd$t|dd%thfd&thfd'thfd(thfd)f q| j|	|fi |S )*Nr   r   i  z2document\.cookie\s*=\s*["\']request_key=([^;"\']+)zrequest keyzskeb.jpZrequest_keyZnsfwc                 S   s   | rdS d S )N   r"   )xr"   r"   r#   <lambda>]       z&SkebIE._real_extract.<locals>.<lambda>)Zsource_bodybodyZgenreZtag_list.Zcreatorname)Z	age_limitr   r   r   r   Zpreviewsc                 S   s   t |d S )Nr   )r	   )_vr"   r"   r#   r'   f   r(   r   information	extension)r   r   r   z Skipping unsupported extension ""-Zvtt_urljaZvtt)r   r   )r   r   none)r   r   Z	subtitlesZvcodecZ
poster_urlr   )r   r   r   r   Z
frame_rateheightwidth)r   Zfpsr3   r4   )Z_match_valid_urlgroupr$   r   
isinstancecauser   statusresponsereaddecodeZ_search_regexZ_set_cookier
   boolr   filteranystrall	enumerateZreport_warningappendr	   getr   r   Zplaylist_result)r    r   r   r!   ZworkseZwebpagevalueinfoentriesidxpreviewr   r"   r"   r#   _real_extractM   sr    "
 


zSkebIE._real_extractN)__name__
__module____qualname__Z
_VALID_URLZ_TESTSr$   rJ   r"   r"   r"   r#   r      sj   7r   N)commonr   Znetworking.exceptionsr   utilsr   r   r   r   r	   Zutils.traversalr
   r   r"   r"   r"   r#   <module>   s   