
    Ği9                     *   d dl Zd dlZd dlZd dlZd dlZddlmZm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mZmZmZmZmZmZmZmZm Z  ddl!m"Z"m#Z#m$Z$  G d d	e          Z% G d
 de%          Z& G d de          Z' G d de'          Z( G d de'          Z) G d de'          Z* G d de          Z+ G d de+e          Z, G d de+          Z- G d de+e          Z. G d de+          Z/ G d de          Z0 G d  d!e%          Z1dS )"    N   )InfoExtractorSearchInfoExtractor   )	HTTPError)ExtractorErrorOnDemandPagedList
clean_htmldetermine_extextract_attributesfloat_or_noneint_or_noneparse_bitrateparse_iso8601parse_qsparse_resolution	qualitiesstr_or_nonetime_secondstruncate_stringunified_timestampupdate_url_queryurl_basenameurl_or_noneurlencode_postdataurljoin)find_elementrequiretraverse_objc                   V    e Zd ZdZdZdZdgZdddZdZd	Z	e
d
             ZddZd ZdS )NiconicoBaseIEzhttps://nvapi.nicovideo.jphttps://www.nicovideo.jpFJP60X-Frontend-IDX-Frontend-Versionzhttps://account.nicovideo.jpniconicoc                 l    t          |                     d                              d                    S )Nr"   user_session)bool_get_cookiesget)selfs    ^C:\Users\betacode\Desktop\descargarYoutube\venv\Lib\site-packages\yt_dlp/extractor/niconico.pyis_logged_inzNiconicoBaseIE.is_logged_in3   s-    D%%&@AAEEnUUVVV    Tc                 *    t          d| |          )NzUnable to login: expected)r   )r/   messager5   s      r0   _raise_login_errorz!NiconicoBaseIE._raise_login_error7   s    :::XNNNNr2   c                    | j         rd S |                     | j         dd d           |                     | j         dd ddd| j         ddt	          ||d          	          }| j         rd S t          |t          d
          ht          d          ht          hf          x}r|                     |pd           n#d|v r| 	                    d|dd          }| 
                    t          | j        |          d ddddit	          d|                     d          i          	          \  }}| j         rd S dt          |j                  v r?t          |t          d          ht          hf          }|                     |pd           nRd|v rNt          |t          d          ht          d          ht          hf          }|                     |pd           |                     dd !           d S )"Nz/loginzRequesting session cookiesz/login/redirectorz
Logging inzUnable to log inz!application/x-www-form-urlencoded)Content-TypeReferer)mail_telpassword)headersdataznotice errorclsnotice__textzInvalid username or password	oneTimePwz&<form[^>]+action=(["\'])(?P<url>.+?)\1zpost urlurl)groupzPerforming MFAzUnable to complete MFAr9   otpz6 digit number shown on appz
error-codepageMainMsgzMFA session expired	formErrordiv)tagzMFA challenge failedzUnexpected login errorFr4   )r1   _request_webpage_LOGIN_BASE_download_webpager   r   r   r
   r7   _search_regex_download_webpage_handler   _get_tfa_infor   rC   )r/   usernamer<   webpageerr_msgpost_urlmfaurlhs           r0   _perform_loginzNiconicoBaseIE._perform_login:   s    	F'''/K	M 	M 	M((222D, C".6667 7 '$$( (   )    	KF$Wn---..1Q1Q1Q0RU_T`/
   W 	K ##G$M/MNNNNG##))97JV[ * ] ]H55((33T ":"$GE*4--.KLL,  	 6  IC   K$(!3!333&sl}.M.M.M-NQ[P\,]^^''(H3HIIII##&s!k2223lu6M6M6M5NQ[P\-^ _ _''(I3IJJJ 85IIIIIr2   N)T)__name__
__module____qualname__	_API_BASE	_BASE_URL_GEO_BYPASS_GEO_COUNTRIES_HEADERSrK   _NETRC_MACHINEpropertyr1   r7   rV    r2   r0   r!   r!   '   s        ,I*IKVN! H 1KNW W XWO O O O*J *J *J *J *Jr2   r!   c                      e Zd ZdZdZdZdddddd	d
dddd
ddiddidddddiddidZddddZdi dddddddd d!d"d#d$d%ed&d'd(d)d*d+d,d-gd.ed/d0d1d2d3d4d5d6d7d"d$ed8d9d:id;d<i dd=dddd>dd d!d?d#d@d%ed&dAd(d=d*dBd,dCgd.ed/dDd1d2d3dEd5dFd7d?d@ed8d9d:id;dGi ddHddddIdd d!dJd#dKd%ed&dLd(dHd*dMd,dNgd.ed/dOd1d2d3dPd5dQd7dJdKed8d9d:id;dRi ddSddddTdd d!dUd#dVd%ed&dWd(dSd*dXd,dYgd.ed/dDd1d2d3dZd5d[d7dUdVed8d9d:id;d\i dd]dddd^dd d!d_d#d`d%ed&dad(d]d*dbd,dcgd.ed/ddd1d2d3ded5dfd7d_d`ed8d9d:id;dgi ddhddddiddjd!dkd#dld%ed&dmd(dhd*dnd,dYgd.ed/dod1d2d3dpd5dqd7dkdled8d9d:iddrdsi ddtdddduddvd!dwd#dxd%ed&dyd(dtd*dzd,dNgd.ed/d0d1d2d3d{d5d|d7dwdxed8d9d:iddrd}i dd~ddddddjd!dd#dd%ed&dd(d~d*dd,dgd.ed/d0d1d2d3dd5dd7dded8d9d:iddrdi ddddddddjd!dd#dd%ed&dd(dd*dd,dgd.ed/dd1d2d3dd5dd7dded8d9d:iddrg	Z	d Z
d Zd ZdS )
NiconicoIEr)   u   ニコニコ動画zLhttps?://(?:(?:embed|sp|www)\.)?nicovideo\.jp/watch/(?P<id>(?:[a-z]{2})?\d+)z-Video unavailable, possibly removed by adminszChannel members onlyz%Video unavailable, channel was closedz/Video unavailable, community deleted or missingzPage unavailable, check the URLz!Sensitive content, login requiredz!Video unavailable, set to privatezNo permissionz'PPV video, payment information requiredzPremium members only)
ADMINISTRATOR_DELETE_VIDEOCHANNEL_MEMBER_ONLYDELETED_CHANNEL_VIDEODELETED_COMMUNITY_VIDEODEFAULTHARMFUL_VIDEOHIDDEN_VIDEONOT_ALLOWED	PPV_VIDEOPREMIUM_ONLYrh   z/Video unavailable, may not exist or was deletedzMaintenance is in progressz Removed by rights-holder request)rh   RIGHT_HOLDER_DELETE_VIDEOz"Invalid session, re-login requiredzFailed to fetch content)	FORBIDDENINVALID_PARAMETERMAINTENANCE	NOT_FOUNDUNAUTHORIZEDUNKNOWN)
needs_authpremium_onlysubscriber_onlyz)https://www.nicovideo.jp/watch/1173108780idsm9extmp4titleuA   新・豪血寺一族 -煩悩解放 - レッツゴー！陰陽師availabilitypublicchannelu   中の
channel_id4comment_countdescriptionz$md5:b7f6d3e6c29552cc19fdea6a4b7dc194
display_id
1173108780durationi@  genresu	   未設定
like_counttagsz
mincount:5	thumbnailz8re:https?://img\.cdn\.nimg\.jp/s/nicovideo/thumbnails/.+	timestampi,8Eupload_date20070305uploader)uploader_id
view_countskip_downloadm3u8rC   	info_dictparamsz(https://www.nicovideo.jp/watch/sm8628149	sm8628149u,   【東方】Bad Apple!!　ＰＶ【影絵】u	   あにら10731211z$md5:1999669158cb77a45bab123c4fafe1d7   u	   ゲームz
mincount:3iJ20091026z)https://www.nicovideo.jp/watch/nm14296458
nm14296458u;   【鏡音リン】Dance on media【オリジナル】take2!u   りょうた18822557z$md5:9368f2b1f4178de64f2602c2f3d6cbf5   u   音楽・サウンドz
mincount:1i|wM20110429z(https://www.nicovideo.jp/watch/nl1872567	nl1872567u_   【12/25放送分】『生対談!!ひろゆきと戀塚のニコニコを作った人 』前半nicolive394z$md5:79fc3a54cfdc93ecc2b883285149e548iJ  u   エンターテイメントiqG20071226z)https://www.nicovideo.jp/watch/so38016254
so38016254u1   「のんのんびより のんすとっぷ」 PVu(   のんのんびより のんすとっぷ	ch2647028z$md5:6e2ff55b33e3645d59ef010869cde6a2r   u	   アニメz
mincount:4i_20201228z)https://www.nicovideo.jp/watch/so37602536
so37602536uN   田中有紀とゆきだるまと！ 限定放送アーカイブ（第12回）rw   u   あみあみ1691072761z$md5:2ee357ec4e76d7804fb59af77107ab67i  zcount:4is_20200929)rC   r   r   skipz)https://www.nicovideo.jp/watch/so41370536
so41370536u+   ZUN【出演者別】超パーティー2022rv   u$   ニコニコ超会議チャンネル	ch2607134z$md5:5692db5ac40d3a374fc5ec182d0249c3?   i0qc20221114z)https://www.nicovideo.jp/watch/so37574174
so37574174u2   ひぐらしのなく頃に 廿回し編　第1回uB   「ひぐらしのなく頃に」オフィシャルチャンネル	ch2646036z$md5:5296196d51d9c0b7272b73f9a99c236ai  u	   ラジオim_20200925z)https://www.nicovideo.jp/watch/so44060088
so44060088ud   松田的超英雄電波。《仮面ライダーガッチャード 放送終了記念特別番組》u   あみあみチャンネル	ch2638921z$md5:9dec5bb9a172b6d20a255ecb64fbd03eiY  z
mincount:7i0f20240903zEChannel members only; specified continuous membership period requiredc                    d }t          |ddd|f          }t          |ddd|f          }t          |dddt          hf          }t          |ddt          hf          }t          ||||f          sd S |                     | j         d	| d
|dd|| j        d| j        d|it          j        dt          t          j        d |D             d |D                                 i                                                    d         d         }|                     ||d          }	g }
t          |	d           D ]f|
                    i t          |fddt          d          hfdt           hfdt          hfdt           hfdt"          f          dd i           gt%          d! |	D             d" #          }|                     |           t          |d$dt          d          ht          t(          hf          pd%}|D ]jt+          d&                                       d'          d%         d(<   t          |fd)dt           ht"          f          pd*d+<   d,xx         |z  cc<   k|
                    |           |
S )-Nc                 "    |d         o|d         S )NisAvailablerx   ra   _vs     r0   <lambda>z-NiconicoIE._extract_formats.<locals>.<lambda>o  s    !M"2">qw r2   mediadomandvideosaudiosaccessRightKeyclientwatchTrackIdz
/v1/watch/z/access-rights/hlszapplication/json;charset=utf-8zapplication/json)Acceptr9   zX-Access-Right-KeyzX-Request-WithactionTrackIdoutputsc              3   &   K   | ]}|d          V  dS rx   Nra   ).0r   s     r0   	<genexpr>z.NiconicoIE._extract_formats.<locals>.<genexpr>  s&      2K2Kq1T72K2K2K2K2K2Kr2   c              3   &   K   | ]}|d          V  dS r   ra   )r   as     r0   r   z.NiconicoIE._extract_formats.<locals>.<genexpr>  s(      MfMfZ[aPTgMfMfMfMfMfMfr2   )r=   queryr>   r>   
contentUrlr{   c                     |d         dk    S )Nvcodecnonera   r   s     r0   r   z-NiconicoIE._extract_formats.<locals>.<lambda>  s    89N r2   c                 F    d                              |d                   S )N	format_idrx   
startswith)r   r   a_fmts     r0   r   z-NiconicoIE._extract_formats.<locals>.<lambda>  s!    U;5G5R5RSTUYSZ5[5[ r2   bitRate  )scalesamplingRaterx   qualityLevel)abrasrr   qualityacodecaacc              3   2   K   | ]}|d          dk    |V  dS )r   r   Nra   )r   fmts     r0   r   z.NiconicoIE._extract_formats.<locals>.<genexpr>  s0      LLCMV4K4K4K4K4K4KLLr2   c                     | d         S )Ntbrra   )fs    r0   r   z-NiconicoIE._extract_formats.<locals>.<lambda>  s    \]^c\d r2   )key.r   rC   .r   c                 (    |d         d         k    S )Nrx   r   ra   )r   r   v_fmts     r0   r   z-NiconicoIE._extract_formats.<locals>.<lambda>  s    QtWk(:: r2   r   r   )r   strall_download_jsonrZ   r[   r^   jsondumpslist	itertoolsproductencode_extract_m3u8_formatsappendr   r   anysorted_remove_duplicate_formatsminr   
rpartitionextend)r/   api_datavideo_id
fmt_filterr   r   
access_keytrack_idm3u8_urlraw_fmtsformatsv_fmtsmin_abrr   r   s                @@r0   _extract_formatszNiconicoIE._extract_formatsn  sM   >>
h(Hj(QRRh(Hj(QRR!(Wh@PSVRW,XYY
8^cU*KLLFFJ9:: 	F&&~EEEEE: 2&0"&.	 
 -  J4	 12K2KF2K2K2KMfMf_eMfMfMf g ghh   vxx ' 
 
    --h%HH!(,N,NOO 
	 
	ENN 		v([([([([%D(A(A(A'BC*[M:"& .>	^ ^
 (  	 %	 	 	 	 	 	 LLLLLRdRdeee&&v...vYT9R9R9R8SUX[^Z_'`aafef 	$ 	$E!-eEl!;!;!F!Fs!K!KA!NE++F::::N[M[^5`  a  a  gdf )%LLLG#LLLLvr2   c                    |                      |          }| j        rdnd}|                     | j         d| d| |ddi | j        |                                 ddt          t                      d	z             id
dg          }|d         }t          |dt          hf          }t          |ddt          hf          }|dk    rt          |ddt          j        hf          }t          |dt          hf          }	t          | j        ||	dft          ht          f          }
|	dv r|                     | j                   nK|	dk    rt          |ddt"          hf          du rd}
n'|	dk    r|rd| }
n|	dv r|                     |
           |
rt'          |
d           |r|d!k    rt'          d"d           t'          d#|            | j        dEi t          |d$d%d&t"          ht          fd't"          hfd(t"          hfd)f          pd*}|                     ||          }| j                            |          }
|s|
r|                     |
d+           t1          g d,          |||t          |d-d.t          ht2          t4          t2          f          t7          |          |                     ||          t          |d/d0d1d2t          ht2          t4          t2          f          fd3t          |d%d4t:          hfi 5                                          D             d6t          |d7t          d8t          ht          fd9t          hfd8t          ht          fd9t          hfd:f          t          |d%d9t          hfd;t          hfd<t>          ht2          fd=t@          hfd>t6          hfd?f          t          |d%d@dAt@          hfdBt@          hfdCt@          hfdDf          S )FNv3v3_guestz/api/watch//zDownloading API JSONzUnable to fetch datar   AAAAAAAAAA_r       )r=   r   expected_statusr>   publishScheduledAtmetastatus   	errorCode
reasonCoderh   )DOMESTIC_VIDEOHIGH_RISK_COUNTRY_VIDEO)	countriesri   viewerallowSensitiveContentsFz3Sensitive content, adjust display settings to watchrj   z,This content is scheduled to be released at )re   ri   rj   rl   rm   Tr4   i  zService temporarily unavailablezAPI returned error status paymentvideo)isContinuationBenefitisPpvisAdmission	isPremium)ru   needs_subscriptionneeds_premiumr~   )metadata_available)rC   	middleUrllargeUrlplayerogpgenrelabelrI   items.namec                 X    g | ]&\  }}d | |          |dt          |d          'S )jpg)rz   rx   
preferencerC   Tlenient)r   )r   r   rC   thumb_prefss      r0   
<listcomp>z,NiconicoIE._real_extract.<locals>.<listcomp>  si     D D D #s )k#..	 
 #3555 D D Dr2   r   default)r}   r   r  r   release_timestamp	subtitlesr   
thumbnails)r   owner)r(  nicknamerx   )r   r   r   r   r|   r   r   registeredAt)rx   r|   r   r   r   countcommentlikeview)r   r   r   ra   )!	_match_idr1   r   r[   r^   geo_verification_headersroundr   r   r   intupperr   
_ERROR_MAPr   raise_geo_restrictedr]   r,   raise_login_requiredr   _availabilityr  _STATUS_MAPr.   r   filterr   r   extract_subtitlesdictr'  r
   r   )r/   rC   r   pathapi_respr   scheduled_timer  err_codereason_coderR   r}   r  r.  s                @r0   _real_extractzNiconicoIE._real_extract  s   >>#&&(8ttj&&~;;$;;;;X"$: E-E//11E  !Mu\^^d5J/K/K!M!M #Sz ' + + F#%h1Eu0MNNhC5(ABBS==#Hv{SYK.PQQH&x,1NOOK"4?XY?WZ]Y^`c4deeGKKK))D4G)HHHH//L2TFL 5 55 5 P..>.YYY uuu))'222 =$Wt<<<< W&C--$%FQUVVVV !Ff!F!FGGG)t)  LIw=vsK#04&"9)D62Y
 Y
 D - -    	 	 ''(;;"&&|44 	H7 	H%%g$%GGG Q Q QRR )""8gwvsTZ-[\\!.~!>!>//(CC E7C#PVX[]c+deeD D D D +8tf6.79; ; ;;@577D D D"
 "
  8&:C03%=#k]31C5#> ${m4	B B &  !"
, 8gk]+!C5) -
|VD'+7,}o>0 0 &  -"
: 8gw"+k]!;%}5%}59 9 &  ;"
 "	
r2   c                    t          |ddt          hf          pi }|                    d          sd S t          |                     |d          d|ddd| j        | j         dd	d
| j        t          j        i |                    d          |                    d          d                                          d          d          }ddt          j        |          dgiS )Nr9  	nvCommentserverz/v1/threadszDownloading commentszFailed to download commentsztext/plain;charset=UTF-8r  others)r9   Originr:   zX-Client-Os-Typer   	threadKey)additionalsr   rT  F)r=   r>   fatal)r>   threads.comments.rX  r   )rz   r>   )	r   rH  r.   r   r[   r^   r   r   r   )r/   r   r   comments_infodanmakus        r0   _get_subtitleszNiconicoIE._get_subtitles  s,   $X	;/OPPVTV  ** 	Ft22X&333X"$A :."n///$,	L L
 -L J!'++H55*..{;;      vxxu  3  
  
 56 6  
7++  
 	
r2   N)rW   rX   rY   IE_NAMEIE_DESC
_VALID_URLrA  rE  r?  _TESTSr  rN  r[  ra   r2   r0   rc   rc   g   s(
       G"G`J +Z#9%L'X8@?*B2
 
 H
 3
 I)K
 

 ;
 0
5 J> @.1 K ;
%
5
 X
 H	

 x
 #
 S
 A
 ,
 
 {m
 #
 L
 T
 
  :!
" #
$ '
 
 
* #F+/ 2 :
+
5
 F
 H	

 {
 *
 S
 A
 +
 
 {m
 #
 L
 T
 
  :!
" #
$ &'
 
 
* #F+/ 2 ;
,
5
 R
 H	

 ~
 *
 S
 A
 ,
 
 ./
 #
 L
 T
 
  :!
" #
$ &'
 
 
* #F+/ 2 :
+
5
 v
 H	

 z
 %
 S
 A
 +
 
 45
 #
 L
 T
 
  :!
" 
#
$ !'
 
 
* #F+/ 2 ;
,
5
 H
 H	

 A
 +
 S
 A
 ,
 
 {m
 #
 L
 T
 
  :!
" B#
$ ''
 
 
* #F+/ 4 ;
,
5
 e
 -	

 '
 *
 S
 A
 ,
 
 45
 #
 I
 T
 
  :!
" (#
$ &'
 
 
* #F+&3 6 ;
,
5
 B
 N	

 =
 +
 S
 A
 ,
 
 ./
 #
 L
 T
 
  :!
" >#
$ ''
 
 
* #F+&1 4 ;
,
5
 L
 -	

 [
 +
 S
 A
 ,
 
 {m
 #
 L
 T
 
  :!
" \#
$ ''
 
 
* #F+&1 4 ;
,
5
 {
 -	

 4
 +
 S
 A
 ,
 
 {m
 #
 L
 T
 
  :!
" 5#
$ ''
 
 
* #F+W1 I]F~2 2 2hV
 V
 V
p
 
 
 
 
r2   rc   c                   F    e Zd ZdZddddZd Zed             Zd Zd	 Z	d
S )NiconicoPlaylistBaseIEd   r$   r%   zen-us)r'   r(   zX-Niconico-Languagec                      t          d          )Nz!Must be implemented in subclasses)NotImplementedErrorr/   list_idresourcer   s       r0   	_call_apiz NiconicoPlaylistBaseIE._call_api  s    !"EFFFr2   c                 t    t          | ddt          ht          f          t          | ddt          hf          dS )Nr5  )r(  )userr6  rx   )r   r   )r   r   r   )items    r0   _parse_ownerz#NiconicoPlaylistBaseIE._parse_owner"  sE     %TG5SVYUZ\_+`aa'wse.DEE
 
 	
r2   c              #   4  K   |dz  }|                      |d| || j        d          }t          |d          pg D ]}|                    d          }|s|                    d          pi fd}d||                    d	          d
| |                    d          t	          |                    d                     |d           |d          t          |d          t
                                          d
|                     |          V  d S )Nr   zpage )pagepageSize)r'  .)r  Nrx   r8  c                 H    t                              |                     S N)r   r.   )xr8  s    r0   r   z4NiconicoPlaylistBaseIE._fetch_page.<locals>.<lambda>6  s    +eiill";"; r2   rC   r|   https://www.nicovideo.jp/watch/shortDescriptionr   r;  r9  )r   )nHdUrlr"  
listingUrlrC   )
_typerx   r|   rC   r   r   r   r   r   ie_key)rh  
_PAGE_SIZEr   r.   r   rc   rx  rl  )r/   rf  rn  respr  r   	get_countr8  s          @r0   _fetch_pagez"NiconicoPlaylistBaseIE._fetch_page)  s\     	~~g~t~~8
 8
  
 "$(GHHNB 	 	EyyH IIg&&,"E;;;;I7++CCC$yy);<<'		*(=(=>>'i//!*9!5!5)%1kll$++--  ##E**    	 	r2   c                 \    t          t          j        | j        |          | j                  S rq  )r	   	functoolspartialr|  ry  )r/   rf  s     r0   _entrieszNiconicoPlaylistBaseIE._entriesE  s$     !243CW!M!Mt___r2   N)
rW   rX   rY   ry  _API_HEADERSrh  staticmethodrl  r|  r  ra   r2   r0   ra  ra    s        J !& LG G G 
 
 \
  8` ` ` ` `r2   ra  c                   L    e Zd ZdZdZddddddd	d
dddddddgZd Zd ZdS )NiconicoPlaylistIEzniconico:playlistzbhttps?://(?:(?:www\.|sp\.)?nicovideo\.jp|nico\.ms)/(?:user/\d+/)?(?:my/)?mylist/(?:#/)?(?P<id>\d+)z'http://www.nicovideo.jp/mylist/2741172827411728u&   AKB48のオールナイトニッポンz$md5:d89694c5ded4b6c693dea2db6e41aa08u	   のっく805442rx   r|   r   r   r   i#  rC   r   playlist_mincountz4https://www.nicovideo.jp/user/805442/mylist/27411728TrC   only_matchingz-https://www.nicovideo.jp/my/mylist/#/68048635c                 d    |                      d| |d| || j                  d         d         S )Nz&https://nvapi.nicovideo.jp/v2/mylists/Downloading r   r=   r>   mylistr   r  re  s       r0   rh  zNiconicoPlaylistIE._call_api_  sS    "">W>>%8%%U% # ' ' (./ 089 	9r2   c                    |                      |          }|                     |dddi          } | j        |                     |          ||                    d          |                    d          fi |                     |          S )Nr   ro  r   r(  r   r<  rh  playlist_resultr  r.   rl  )r/   rC   rf  r  s       r0   rN  z NiconicoPlaylistIE._real_extracte  s    ..%%2
   $t#MM'""GJJv

= 9 9X X=A=N=Nv=V=VX X 	Xr2   NrW   rX   rY   r\  r^  r_  rh  rN  ra   r2   r0   r  r  I  s        !GvJ 9=A##
 
 !
 
 F  ? F$9 9 9X X X X Xr2   r  c                   Z    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gZd Zd ZdS )NiconicoSeriesIEzniconico:serieszShttps?://(?:(?:www\.|sp\.)?nicovideo\.jp(?:/user/\d+)?|nico\.ms)/series/(?P<id>\d+)z4https://www.nicovideo.jp/user/44113208/series/110226110226u   ご立派ァ！のシリーズur   楽しそうな外人の吹き替えをさせたら終身名誉ホモガキの右に出る人はいませんね…u   アルファるふぁ44113208r  
   r  z&https://www.nicovideo.jp/series/12312/12312u>   バトルスピリッツ　お勧めカード紹介(調整中) u   野鳥2275360g   zhttps://nico.ms/series/203559Tr  c                 X    |                      d| |d| || j                  d         S )Nz%https://nvapi.nicovideo.jp/v2/series/r  r  r>   r  re  s       r0   rh  zNiconicoSeriesIE._call_api  sI    ""=G==w%8%%U% # ' ' (./ 	/r2   c                 $   |                      |          }|                     |dddi          d         } | j        |                     |          ||                    d          |                    d          fi |                     |          S )Nr   ro  r   detailr|   r   r  )r/   rC   rf  seriess       r0   rN  zNiconicoSeriesIE._real_extract  s    ..%%2
   $t#MM'""GJJwM!:!:Y Y>B>O>OPV>W>WY Y 	Yr2   Nr  ra   r2   r0   r  r  o  s        GgJ F5 P/%
 
  
 
 8U $
 
 !
 
 / )F2/ / /Y Y Y Y Yr2   r  c            	       f    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gZd Zd ZdS )NiconicoHistoryIEzniconico:historyz1NicoNico user history or likes. Requires cookies.zBhttps?://(?:www\.|sp\.)?nicovideo\.jp/my/(?P<id>history(?:/like)?)zPC page, with /videoz)https://www.nicovideo.jp/my/history/videoT)noterC   r  zPC page, without /videoz#https://www.nicovideo.jp/my/historyzmobile page, with /videoz(https://sp.nicovideo.jp/my/history/videozmobile page, without /videoz"https://sp.nicovideo.jp/my/historyzPC pagez(https://www.nicovideo.jp/my/history/likezMobile pagez'https://sp.nicovideo.jp/my/history/likec                 l    |dk    rdnd}|                      d| |d| || j                  d         S )Nzhistory/likelikeszwatch/historyz'https://nvapi.nicovideo.jp/v1/users/me/r  r  r>   r  )r/   rf  rg  r   rI  s        r0   rh  zNiconicoHistoryIE._call_api  s]    !^33ww""<d<<g%8%%UD<M # O OOUW 	Wr2   c                 p   |                      |          }	 |                     |dddi          }nR# t          $ rE}t          |j        t
                    r%|j        j        dk    r|                     d            d }~ww xY w | j        | 	                    |          |fi | 
                    |          S )Nr   ro  r   i  z,You have to be logged in to get your history)r<  rh  r   
isinstancecauser   r  rC  r  r  rl  )r/   rC   rf  r  es        r0   rN  zNiconicoHistoryIE._real_extract  s    ..%%	^^GVj!_EEFF 	 	 	!'9-- Z!'.C2G2G))*XYYY	 $t#DMM'$:$:GaatGXGXY_G`G`aaas   1 
B A A;;B N)	rW   rX   rY   r\  r]  r^  r_  rh  rN  ra   r2   r0   r  r    s         GAGVJ ': 
 *4 
 +9 
 .3 
 9 
 8 )F4W W Wb b b b br2   r  c                        e Zd ZdZddZd ZdS )NicovideoSearchBaseIEsearchNDownloading page %(page)sc           	   #   4  K   |pi }d|v r	|d         gnt          j        d          }|D ]m}t          |          |d<   |                     ||||d|iz            }t	          j        d|          }|D ]}	|                     d|	 d|	          V  |s d S nd S )Nrn  r   r   r  z2(?<=data-video-id=)["\']?(?P<videoid>.*?)(?=["\'])rs  Niconico)r   r8  r   rL   refindall
url_result)
r/   rC   item_idr   r  pagespage_numrQ   resultsrk  s
             r0   r  zNicovideoSearchBaseIE._entries  s      #)U??v	8J8J 	 	HMME&M,,S'TU[]eTfMf,ggGj!VX_``G b boo&N&N&NPZ\`aaaaaa 	 	r2   c                 j    |                      |                     d| j         d|           |          S )Nz//www.nicovideo.jp/r  )r  _proto_relative_url_SEARCH_TYPE)r/   r   s     r0   _search_resultsz%NicovideoSearchBaseIE._search_results  sC    }}$$%V4;L%V%Vu%V%VWWY^` ` 	`r2   )Nr  )rW   rX   rY   r  r  r  ra   r2   r0   r  r    sA        L
 
 
 
` ` ` ` `r2   r  c                       e Zd ZdZdZdZdS )NicovideoSearchIEzNico video searchznicovideo:search
nicosearchN)rW   rX   rY   r]  r\  _SEARCH_KEYra   r2   r0   r  r    s        !G GKKKr2   r  c                   T    e Zd Zej         dZdZdZddddddd	dddd
dgZd ZdS )NicovideoSearchURLIE_urlzNico video search URLsz8https?://(?:www\.)?nicovideo\.jp/search/(?P<id>[^?#&]+)?z"http://www.nicovideo.jp/search/sm9ry   rx   r|   (   r  zRhttps://www.nicovideo.jp/search/sm9?sort=h&order=d&end=2020-12-31&start=2020-01-01   )rC   r   playlist_countc                     |                      |          }|                     |                     ||          ||          S rq  r<  r  r  r/   rC   r   s      r0   rN  z"NicovideoSearchURLIE._real_extract  9    s####DMM#u$=$=ueLLLr2   N)	rW   rX   rY   r  r\  r]  r^  r_  rN  ra   r2   r0   r  r    s        "*000G&GLJ3
 
    d
 
  F M M M M Mr2   r  c                        e Zd ZdZej         dZdZddddddgZ ej	        d	d
d
          Z
dZdZddZd fd	Z xZS )NicovideoSearchDateIEzNico video search, newest firstz:datenicosearchdateznicosearchdateall:ar   r  iJ  r  i  r       2   Nc              #   .  K   |p| j         |p/t          j                                                                        }}t          t          |                     ||||| j        d| d|                               }|| j	        k    rO||k    rI|||z
  dz  z   }| 
                    ||||          E d {V  | 
                    ||||          E d {V  d S |                     | d| d|            |                     ||||d          E d {V  d S )NzChecking number of videos from z to )r  r   z: Downloading results from z    Downloading page %(page)s)_START_DATEdtdatetimenowdatelenr   _get_entries_for_date
_MAX_PAGES_RESULTS_PER_PAGEr  	to_screen)r/   rC   r  
start_dateend_datelast_page_lenmidpoints          r0   r  zNicovideoSearchDateIE._entries  s     )=T-=x?c2;??K\K\KaKaKcKcH
 D!;!;*hM:MM8MM "< "O "O P P Q Q T333
h8N8N!h&;%ABH}}S'8XFFFFFFFFF}}S':xHHHHHHHHHHHNNg\\*\\RZ\\]]]11Wj(9X 2 Z Z Z Z Z Z Z Z Z Z Zr2   c              #      K   t          |          t          |p|          ddd}|rt          |          |d<   t                                          ||||          E d {V  d S )Nr   d)startendsortorderrn  r  )r   superr  )	r/   rC   r  r  r  r  r  r   	__class__s	           r0   r  z+NicovideoSearchDateIE._get_entries_for_date!  s      __x-:..	
 
  	*MME&M77##CD#IIIIIIIIIIIr2   )NN)NNN)rW   rX   rY   r]  r  r\  r  r_  r  r  r  r  r  r  r  __classcell__)r  s   @r0   r  r     s        /G"*111G"K$
 
 "  F "'$1%%KJZ Z Z Z 
J 
J 
J 
J 
J 
J 
J 
J 
J 
Jr2   r  c                   8    e Zd ZdZdZdZdZdddddd	gZd
 ZdS )NicovideoTagURLIEzniconico:tagzNicoNico video tag URLsrI   z5https?://(?:www\.)?nicovideo\.jp/tag/(?P<id>[^?#&]+)?u;   https://www.nicovideo.jp/tag/ドキュメンタリー淫夢u   ドキュメンタリー淫夢r  r
  r  c                     |                      |          }|                     |                     ||          ||          S rq  r  r  s      r0   rN  zNicovideoTagURLIE._real_extract<  r  r2   N)	rW   rX   rY   r\  r]  r  r^  r_  rN  ra   r2   r0   r  r  .  se        G'GLIJL25
 
 !  FM M M M Mr2   r  c                   @    e Zd ZdZdddiddZdZdZd	d
dZd Zd Z	dS )NiconicoUserIEzHhttps?://(?:www\.)?nicovideo\.jp/user/(?P<id>\d+)(?:/video)?/?(?:$|[#?])z$https://www.nicovideo.jp/user/419948rx   419948e   r  zehttps://nvapi.nicovideo.jp/v2/users/%s/videos?sortKey=registeredAt&sortOrder=desc&pageSize=%s&page=%srb  r$   r%   r&   c              #     K   d}dx}}||k     r|                      | j        || j        |dz   fz  || j        d|rd| ndz            }|s(t	          |d                             d                    }|d         d	         D ]4}|dz  }|                     d
|d         d          t                    V  5|dz  }||k     d S d S )Nr   r   zDownloading JSON metadata%sz page r  )r=   r  r>   
totalCountr'  rs  	essentialrx   )ie)r   _API_URLry  r  r   r.   r  rc   )r/   rf  total_countr8  r  json_parsedentrys          r0   r  zNiconicoUserIE._entriesR  s0     k!!--$/8a< HH')2X6]6Ix6I6I6I[]^ . ` `K  Q)+f*=*A*A,*O*OPP$V,W5 a a
ooPeK6H6NPPU_ & a a a a a aMH k!!!!!!r2   c                 ~    |                      |          }|                     |                     |          |          S rq  r  )r/   rC   rf  s      r0   rN  zNiconicoUserIE._real_extractb  s5    ..%%##DMM'$:$:GDDDr2   N)
rW   rX   rY   r^  _TESTr  ry  r  r  rN  ra   r2   r0   r  r  A  s{        \J5(
 ! E wHJ ! L
   E E E E Er2   r  c                   ~    e Zd ZdZdZdZdddeddd	ed
dddddedddiddddeddddeddddddedddidgZd Z	dS ) NiconicoLiveIEzniconico:liveu   ニコニコ生放送zDhttps?://(?:sp\.)?live2?\.nicovideo\.jp/(?:watch|gate)/(?P<id>lv\d+)z+https://live.nicovideo.jp/watch/lv329299587lv329299587r{   u'   ニコニコエンタメチャンネル	ch2640322z)https://ch.nicovideo.jp/channel/ch2640322z$md5:281edd7f00309e99ec46a87fb16d7033is_livezre:https?://.+iHd_20201224u   株式会社ドワンゴ)rx   rz   r|   r   r   channel_urlr   r   live_statusr   r   r   r   r   r   Tr   z+https://live.nicovideo.jp/watch/lv331050399lv331050399   u   みんなのおもちゃ REBOOT	ch2642088z)https://ch.nicovideo.jp/channel/ch2642088z$md5:8d0bb5beaca73b911725478a1e7c7b91ia`20210329)rx   rz   r|   	age_limitr   r   r   r   r   r  r   r   r   r   r   c                    |                      |          }|                     ||d          \  }}t          |t          d          ht          hf          x}rt          |d          d|j        v rdnd }|r| j        s|                     d	           | 	                    d
d d          }t          |t          dd          ht          hdt          j        hdt          hf          r.|                     ddd           | 	                    ||          }nt          dd          t          |t          ddd          ht          hdt          j        hf          }t          |ddt          hfd          }	t          |dddt           ht#          d          hf          }
t%          |
d|	i          }
|                     |
|dd d!i"          }|                     d#           |                    t          j        d$dd%d&d'd$d(d)d*d+d,d-d.                     	 |                                }|st          j        |          }t1          |t2                    sB|                    d/          d0k    r+|d1         d2         }|d1         d3         }|d1         d4         }n|                    d/          d5k    r$|                     |           t          d6          |                    d/          d7k    r?|                     |           t          |d8d9t          hf|          }t          |          |                     d:d$          r&|                     d;t9          |d<                      Xt          |d=          p|                     d>|d?d$@          }t          |dAdBt2          hf          pi }g }|                                D ]\  }}t1          |t2                    s*|                    ||dCtA          |dD                     D|                                D ]\  }}tA          |dD          ptA          |dD          }|                    dE          |                    dF          }}|                    | dG| dH| |t          tC          |          dIdJtE          dKL          hf          dM|           |D ][}|                     |dN         |dO         |dP         tG          |                    dQ                    |dR         |dS         T           \dU |dVd          D             }dWdXdY}| $                    ||dZd[          }|D ]} d\| d]<   |                     d^          d_k    rtK          || d`                   | d`<   :|                     da          d_k    rZtM          | db         '                                          }!| (                    |!dc|                    |!| d`                   dd           |||t          |dAd0detR          hf          pdf||
dgdht          |didjdkdldmdndo          t	          t          |dp                    tU          t          |dq                    d||drS )sNr  )r  r6   r?   Tr4   age_authr  z2Login is required to access age-restricted contentzhttps://www.nicovideo.jp/myzChecking age verificationzjs-initial-userpage-data)rx   htmlzdata-environmentr  z.nicovideo.jp1z)Sensitive content setting must be enabledscriptzembedded-data)rI   rx   r	  z
data-propssite
frontendId9r0  relivewebSocketUrlzwebsocket URLfrontend_idzConnecting to WebSocket serverrS  zhttps://live.nicovideo.jp)r=   zSending HLS server requestF	webSocket)commentableprotocolsingle_cookiehighhlsr   )accessRightMethod	chasePlaylatencyr  r   )	reconnectroomstreamstartWatching)r>   typer  r  r>   uriavailableQualitiescookies
disconnectz$Disconnected at middle of extractionerrorbodycodeverbosezServer response: rb  )programr|   )zog:titleztwitter:titlez
live title)rV  r(  r   )rx   rC   r,  widthheightr   rr  imager   r*  )default_ext)rx   rC   rz   domainr(  valueexpiresrI  secure)expire_timerI  r0  c              3   D   K   | ]}|                     d           |V  dS )audio_Nr   )r   qs     r0   r   z/NiconicoLiveIE._real_extract.<locals>.<genexpr>  s3      II!,,x2H2HI!IIIIIIr2   r   	audio_low
audio_high)`      r{   )rz   liveniconico_liver  r   r   r   r   rC   z	mp4a.40.2)r   r   r   
maxQualitynormal)max_qualitywsws_url)rx   r|   r  downloader_options)r(  
statistics
watchCount)r(  rA  commentCount)r(  supplierr(  )socialGroupr(  )rE  rx   )rE  socialGroupPageUrl)r   r   r   r   r   r   )r(  r   )r(  openTime)r   r   r  r4  r  )+r<  rN   r   r   r
   r   rC   r1   rC  rL   r   r   loadsr,   _set_cookier   r   r   r   rJ   write_debugsendr   recvr  rH  r.   	get_paramr   _html_search_metar'  r   r   r   r   r   r   nextr   lowerupdater   r   )"r/   rC   r   rQ   rU   rR   r  myembedded_datar  r?  r>  rL  r>   r   r   r"  r6   r|   
raw_thumbsr4  r(  r.  kimg_urlresr)  r*  cookieq_itera_mapr  r   r   s"                                     r0   rN  zNiconicoLiveIE._real_extract  s   >>#&&55c8UX5YY"7ly.I.I.I-JZL,YZZZ7 	9 48888$00BBd	 	a$ `))*^___''(EtMhiiBB!;$GGGHK]J^"TZL2JTF!   a   *cBBB00h??$%P[_````$Wh?FFFG ,/> ? ? #=6<+2WadeeemHn{mgo>V>V=W.Y Z Z!&=+*FGG""H>:; # = = 	5666

"#' + 
 *9!&% %$   $
 
   	 	 	$	S7799D :d##DdD)) xx8++<. L)=>	v,y1&!!\11  &&&$%KLLL&!!W,,  &&&&tff{m-LVZ[[[$W---	511 S  !Q_T35O5O!Q!QRRR)	S, ],@AA OTE[E[)7L F\ FO FO "-)[4&1QRRXVX

%++-- 	 	KD%eT** !! # # 'ud;;;#   
 #kkmm 	 	
7&q$777b;KG]a;b;b;b # 0 0#''(2C2Cv!!!44E44F44"'(9(9GQchIiIiIiHj;kll# # 	#    		  	t 	tFx &.&/-fjj.C.CDD6RX>bhiqbr  t t t t JIYqrr]III |44,,XxUQU,VV 
	 
	C-C
Owwx  F**#'K0@#A#AK  ""f,,#CJ$4$4$6$677

)!&3K0@!A!A     "+MIxQ]`c_d;effrjr # #	
 
 =E!J;23D+ +  
" &l=B\&]&]^^$\-AX%Y%YZZ$+
 
 
 	
r2   N)
rW   rX   rY   r\  r]  r^  r   r?  r_  rN  ra   r2   r0   r  r  g  s        G%GXJ<@%F A$*#%2
 
  #D)% ( =8%F A$*#%2
 
" #D)' ''FRN
 N
 N
 N
 N
r2   r  )2r  r  r~  r   r   r  commonr   r   networking.exceptionsr   utilsr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   utils.traversalr   r   r   r!   rc   ra  r  r  r  r  r  r  r  r  r  r  ra   r2   r0   <module>r_     s                 				 6 6 6 6 6 6 6 6 - - - - - -                                             .         =J =J =J =J =J] =J =J =J@l
 l
 l
 l
 l
 l
 l
 l
^0` 0` 0` 0` 0`] 0` 0` 0`f#X #X #X #X #X/ #X #X #XL+Y +Y +Y +Y +Y- +Y +Y +Y\-b -b -b -b -b. -b -b -b`` ` ` ` `M ` ` `(    -/B   M M M M M0 M M M2+J +J +J +J +J13F +J +J +J\M M M M M- M M M&#E #E #E #E #E] #E #E #EL{
 {
 {
 {
 {
^ {
 {
 {
 {
 {
r2   