Ë
    š„j9¬  ã                   óÚ  — 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%«      Z1y)"é    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                   óN   — 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y)ÚNiconicoBaseIEzhttps://nvapi.nicovideo.jpúhttps://www.nicovideo.jpFÚJPÚ6Ú0©úX-Frontend-IDúX-Frontend-Versionzhttps://account.nicovideo.jpÚniconicoc                 óT   — t        | j                  d«      j                  d«      «      S )Nr"   Úuser_session)ÚboolÚ_get_cookiesÚget)Úselfs    úP/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/niconico.pyÚis_logged_inzNiconicoBaseIE.is_logged_in3   s$   € ä�D×%Ñ%Ð&@ÓA×EÑEÀnÓUÓVÐVó    c                 ó"   — t        d|› �|¬«      ‚)NzUnable to login: ©Úexpected)r   )r/   Úmessager5   s      r0   Ú_raise_login_errorz!NiconicoBaseIE._raise_login_error7   s   € ÜÐ0°°	Ð:ÀXÔNÐNr2   c                 óž  — | j                   ry | j                  | j                  › d�d d«       | j                  | j                  › d�d ddd| j                  › d�dœt	        ||dœ«      ¬	«      }| j                   ry t        |t        d
¬«      ht        d¬«      ht        hf«      x}r| j                  |xs d«       nþd|v rú| j                  d|dd¬«      }| j                  t        | j                  |«      d ddddit	        d| j                  d«      i«      ¬	«      \  }}| j                   ry dt        |j                  «      v r4t        |t        d¬«      ht        hf«      }| j                  |xs d«       nCd|v r?t        |t        d¬«      ht        d¬«      ht        hf«      }| j                  |xs d«       | j                  dd ¬!«       y )"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  € Ø×ÒØà×ÑØ×ÑÐ  Ð'¨Ð/Kô	Mà×(Ñ(Ø×ÑÐ Ð 1Ð2°DØÐ,Ø CØ"×.Ñ.Ð/¨vÐ6ñ7ô 'Ø$Ø$ñ(ó ð )ó ˆð ×ÒØÜ$ WÜ˜nÔ-Ð.´À.Ô1QÐ0RÔU_ÐT`ð/
ó ð ˆWð ð ×#Ñ# GÒ$MÐ/MÕNØ˜GÑ#Ø×)Ñ)Ø9¸7ÀJÐV[ð *ó ]ˆHà×5Ñ5Ü˜×(Ñ(¨(Ó3°TØ Ð":Ø"Ð$GðEä*Ø˜4×-Ñ-Ð.KÓLð,ó ð	 6ó ‰IˆC�ð × Ò ØØ¤¨$¯(©(Ó!3Ñ3Ü& s¬l¸}Ô.MÐ-NÔQ[ÐP\Ð,]Ó^�Ø×'Ñ'¨Ò(HÐ3HÕIØ Ñ#Ü& sÜ! kÔ2Ð3´lÀuÔ6MÐ5NÔQ[ÐP\ð-^ó _�à×'Ñ'¨Ò(IÐ3IÔJà×ÑÐ 8À5ÐÕIr2   N)T)Ú__name__Ú
__module__Ú__qualname__Ú	_API_BASEÚ	_BASE_URLÚ_GEO_BYPASSÚ_GEO_COUNTRIESÚ_HEADERSrK   Ú_NETRC_MACHINEÚpropertyr1   r7   rV   © r2   r0   r!   r!   '   sQ   „ Ø,€IØ*€IØ€KØ�V€NàØ!ñ€Hð 1€KØ€NàñWó ðWóOó*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,d„g“d.e“d/d0“d1d2“d3d…“d5d†“d7d€“d�e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,d„g“d.e“d/dŽ“d1d2“d3d�“d5d�“d7dŠ“d‹ed8œ¥d9d:id‘drœd’i dd““dd“dd”“dd “d!d•“d#d–“d%e“d&d—“d*d˜“d,dcg“d.e“d/d0“d1d2“d3d™“d5dš“d7d•“d›d–“dœei¥d9d:id;œg
Z	d�„ Z
dž„ ZdŸ„ Zy )¡Ú
NiconicoIEr)   u   ãƒ‹ã‚³ãƒ‹ã‚³å‹•ç”»zWhttps?://(?:(?:embed|sp|www)\.)?nicovideo\.jp/(?:shorts|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,8ìEÚ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:3iÂæåJÚ20091026z)https://www.nicovideo.jp/watch/nm14296458Ú
nm14296458u;   ã€�é�¡éŸ³ãƒªãƒ³ã€‘Dance on mediaã€�ã‚ªãƒªã‚¸ãƒŠãƒ«ã€‘take2!u   ã‚Šã‚‡ã�†ã�ŸÚ18822557z$md5:9368f2b1f4178de64f2602c2f3d6cbf5éÐ   u   éŸ³æ¥½ãƒ»ã‚µã‚¦ãƒ³ãƒ‰z
mincount:1i|wºMÚ20110429z(https://www.nicovideo.jp/watch/nl1872567Ú	nl1872567u_   ã€�12/25æ”¾é€�åˆ†ã€‘ã€Žç”Ÿå¯¾è«‡!!ã�²ã‚�ã‚†ã��ã�¨æˆ€å¡šã�®ãƒ‹ã‚³ãƒ‹ã‚³ã‚’ä½œã�£ã�Ÿäºº ã€�å‰�å�ŠÚnicoliveÚ394z$md5:79fc3a54cfdc93ecc2b883285149e548iJ  u   ã‚¨ãƒ³ã‚¿ãƒ¼ãƒ†ã‚¤ãƒ¡ãƒ³ãƒˆi¾ÀqGÚ20071226z)https://www.nicovideo.jp/watch/so38016254Ú
so38016254u1   ã€Œã�®ã‚“ã�®ã‚“ã�³ã‚ˆã‚Š ã�®ã‚“ã�™ã�¨ã�£ã�·ã€� PVu(   ã�®ã‚“ã�®ã‚“ã�³ã‚ˆã‚Š ã�®ã‚“ã�™ã�¨ã�£ã�·Ú	ch2647028z$md5:6e2ff55b33e3645d59ef010869cde6a2ér   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é?   i0¯qcÚ20221114z)https://www.nicovideo.jp/watch/so37574174Ú
so37574174u2   ã�²ã��ã‚‰ã�—ã�®ã�ªã��é ƒã�« å»¿å›žã�—ç·¨ã€€ç¬¬1å›žuB   ã€Œã�²ã��ã‚‰ã�—ã�®ã�ªã��é ƒã�«ã€�ã‚ªãƒ•ã‚£ã‚·ãƒ£ãƒ«ãƒ�ãƒ£ãƒ³ãƒ�ãƒ«Ú	ch2646036z$md5:5296196d51d9c0b7272b73f9a99c236ai‹  u	   ãƒ©ã‚¸ã‚ªi ¿m_Ú20200925z)https://www.nicovideo.jp/watch/so44060088Ú
so44060088ud   æ�¾ç”°çš„è¶…è‹±é›„é›»æ³¢ã€‚ã€Šä»®é�¢ãƒ©ã‚¤ãƒ€ãƒ¼ã‚¬ãƒƒãƒ�ãƒ£ãƒ¼ãƒ‰ æ”¾é€�çµ‚äº†è¨˜å¿µç‰¹åˆ¥ç•ªçµ„ã€‹u   ã�‚ã�¿ã�‚ã�¿ãƒ�ãƒ£ãƒ³ãƒ�ãƒ«Ú	ch2638921z$md5:9dec5bb9a172b6d20a255ecb64fbd03eiY  z
mincount:7i0ìÖfÚ20240903zEChannel members only; specified continuous membership period requiredz*https://www.nicovideo.jp/shorts/ss46441082Ú
ss46441082u<   ã€Žè¶…ã�‹ã��ã‚„å§«ï¼�ã€�WEBäºˆå‘Š ï¼œ ã‚¢ã‚¯ã‚·ãƒ§ãƒ³ç·¨ ï¼žu   ã€Žè¶…ã�‹ã��ã‚„å§«ï¼�ã€�å…¬å¼�Ú	141907929z$md5:86cd619f675377c7d77ddc13b4dda8bfé   i�1jÚ20260616r�   r�   c                 óZ  ‡‡— 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y | j                  | j                  › d	|› d
�|dd|| j
                  dœ| j                  ¥d|it        j                  dt        t        j                  d„ |D «       d„ |D «       «      «      i«      j                  «       ¬«      d   d   }| j                  ||d«      }	g }
t        |	d„ «      D ]V  Š|
j                  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¥«       ŒX t%        d!„ |	D «       d"„ ¬#«      }| j'                  |«       t        |d$dt        d¬«      ht        t(        hf«      xs d%}|D ]U  Št+        ‰d&   «      j-                  d'«      d%   ‰d(<   t        |ˆfd)„dt         ht"        f«      xs d*‰d+<   ‰d,xx   |z  cc<   ŒW |
j/                  |«       |
S )-Nc                 ó   — |d   xr |d   S )NÚisAvailablerx   ra   ©Ú_Úvs     r0   ú<lambda>z-NiconicoIE._extract_formats.<locals>.<lambda>†  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    –— Œ y­w©rx   Nra   )Ú.0r½   s     r0   ú	<genexpr>z.NiconicoIE._extract_formats.<locals>.<genexpr>™  s   è ø€ Ò2K¸q°1°Tµ7Ñ2Kùó   ‚c              3   ó&   K  — | ]	  }|d    –— Œ y­wrÊ   ra   )rË   Úas     r0   rÌ   z.NiconicoIE._extract_formats.<locals>.<genexpr>™  s   è ø€ ÒMfÐZ[ÈaÐPTÍgÑMfùrÍ   )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                 ó2   •— ‰d   j                  |d   «      S )NÚ	format_idrx   ©Ú
startswith)r¼   r½   Úa_fmts     €r0   r¾   z-NiconicoIE._extract_formats.<locals>.<lambda>¢  s   ø€ °U¸;Ñ5G×5RÑ5RÐSTÐUYÑSZÓ5[€ r2   ÚbitRateéè  )ÚscaleÚsamplingRaterx   ÚqualityLevel)ÚabrÚasrrÖ   ÚqualityÚacodecÚaacc              3   ó2   K  — | ]  }|d    dk7  sŒ|–— Œ y­w)rÓ   rÔ   Nra   )rË   Úfmts     r0   rÌ   z.NiconicoIE._extract_formats.<locals>.<genexpr>¬  s   è ø€ ÒL °C¸±MÀVÓ4KœÑLùs   ‚�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   ø€ ˜Q˜t™W¨¨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_formats…  s˜  ù€ Ù>ˆ
Ü˜h¨°(¸HÀjÐ(QÓRˆÜ˜h¨°(¸HÀjÐ(QÓRˆÜ! (¨W°hÐ@PÔSVÐRWÐ,XÓYˆ
Ü ¨8°^ÄcÀUÐ*KÓLˆÜ�F˜F J°Ð9Ô:Øà×&Ñ&Ø�~‰~Ð˜j¨¨
Ð2DÐEØØ:Ø 2Ø&0Ø"&§.¡.ñ	ð
 —-‘-ðð   ðä—J‘JØœ4¤	× 1Ñ 1Ñ2KÀFÔ2KÑMfÐ_eÔMfÓ gÓhð ó ç‰v‹xð 'ó 
ð ñð ñ ˆð ×-Ñ-¨h¸À%ÓHˆàˆÜ! (Ñ,NÓOò 
	ˆEØ�N‰Nð 	Øð	ä˜vÓ([Ø%¬¸DÔ(AÐ'BÐCØ*¬[¨MÐ:Ø"&¬¨ Ø .´°Ð>ñ	^ô
 ð(ó ð	ð ˜%ñ	õ 	ð
	ô ÑL¨ÔLÑRdÔeˆØ×&Ñ& vÔ.ä˜v¨¨Y¼ÈTÔ9RÐ8SÔUXÔ[^ÐZ_Ð'`ÓaÒfÐefˆØò 	$ˆEÜ!-¨e°E©lÓ!;×!FÑ!FÀsÓ!KÈAÑ!NˆE�+ÑÜ+¨FÛ:¸NÌ[ÈMÔ[^ð5`ó  aò  gØdfð �)Ñà�%‹L˜GÑ#ŒLð		$ð
 	�‰�vÔàˆr2   c                 ó*  — | j                  |«      }| j                  rdnd}| j                  | j                  › d|› d|› �|ddi | j                  ¥| j                  «       ¥ddt        t        «       d	z  «      › �id
dg¬«      }t        |dt        hf«      }t        |dt        hf«      }t        |ddt        hf«      }|dk7  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!                  | j"                  ¬«       n@|	dk(  rt        |ddt$        hf«      du rd}
n"|	dk(  r|rd|› �}
n|	dv r| j'                  |
«       |
rt)        |
d¬ «      ‚|r|d!k\  rt)        d"d¬ «      ‚t)        d#|› �«      ‚ | j*                  dGi t        |d$d%d&t$        ht        fd't$        hfd(t$        hfd)œf«      ¤Žxs d*}| j-                  ||«      }| j.                  j1                  |«      }
|s|
r| j'                  |
d¬+«       t3        g d,¢«      }|||t        |d-d.t        ht4        t6        t4        f«      t9        |«      | j;                  ||«      t        |d/d0d1d2t        ht4        t6        t4        f«      t        |d%d3t        j<                  hd4„ f«      D ��cg c]  \  }}d5| ||«      |d6œt?        |d¬7«      ¥‘Œ! c}}d8œt        |d9t        d:t        ht        fd;t        hfd:t        ht        fd;t        hfd<œf«      ¥t        |d%d;t        hfd=t        hfd>t@        ht4        fd?tB        hfd@t8        hfdAœf«      ¥t        |d%dBdCtB        hfdDtB        hfdEtB        hfdFœf«      ¥S c c}}w )HNÚ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ÚshortÚgenreÚlabelrI   Úitems.ÚnamerŠ   c                 ó   — t        |d   «      S )Nr   )r   r»   s     r0   r¾   z*NiconicoIE._real_extract.<locals>.<lambda>ü  s   € ÄÈQÈqÉTÓAR€ r2   Újpg)rz   rx   Ú
preferencerC   ©Úlenient)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   Údictrî   ÚintÚupperr   Ú
_ERROR_MAPrù   Úraise_geo_restrictedr]   r,   Úraise_login_requiredr   Ú_availabilityr	  Ú_STATUS_MAPr.   r   Úfilterrï   r   Úextract_subtitlesr-  r   r
   r   )r/   rC   r   ÚpathÚapi_resprÿ   Úscheduled_timer  Úerr_codeÚreason_coderR   r}   r  Úthumb_prefsré   s                  r0   Ú_real_extractzNiconicoIE._real_extract¹  s?  € Ø—>‘> #Ó&ˆà×(Ò(‰t¨jˆØ×&Ñ&Ø�~‰~Ð˜k¨$¨¨q°°
Ð;¸XØ"Ð$:ð EØ—-‘-ðEà×/Ñ/Ó1ðEð   ;¬u´\³^ÀdÑ5JÓ/KÐ.LÐ!Mðà # S˜zð 'ó +ˆô   ¨6´D°6Ð*:Ó;ˆÜ% hÐ1EÌÀuÐ0MÓNˆÜ˜h¨°¼C¸5Ð(AÓBˆà�SŠ=Ü# H¨v°{ÄSÇYÁYÀKÐ.PÓQˆHÜ& x°,ÄÀÐ1NÓOˆKÜ" 4§?¡?°XÀÈYÐ?WÔZ]ÐY^Ô`cÐ4dÓeˆGàÐKÑKØ×)Ñ)°D×4GÑ4GÐ)ÕHØ Ò/´LÀØÐ2´T°FðLó 5àñ5ð P‘Ø Ò.±>ØHÈÐHXÐY‘ØÐ uÑuØ×)Ñ)¨'Ô2áÜ$ W°tÔ<Ð<Ù˜& Cš-Ü$Ð%FÐQUÔVÐVÜ Ð#=¸f¸XÐ!FÓGÐGà)�t×)Ñ)ñ ¬L¸ÀIÈwØ=Ä¸vÄsÐKØ#0´4°&Ð"9Ø)¬D¨6Ð2ñY
ð Dó -ñ ò ð ð	 	ð ×'Ñ'¨°(Ó;ˆØ×"Ñ"×&Ñ& |Ó4ˆÙ™7Ø×%Ñ% gÀ$Ð%ÔGäÒ ZÓ[ˆð )Ø"ØÜ" 8¨g°wÄÀÄvÌsÔTZÐ-[Ó\Ü!.¨~Ó!>Ø×/Ñ/°¸(ÓCÜ  ¨E°7¸CÀÌ#ÈÔPVÔX[Ô]cÐ+dÓeô +¨8Ø˜¤t§z¡z lÑ4Rð6Tó ÷ñ �#�sð ØÙ)¨#Ó.Øñ	ô
 # 3°Ô5òó ñ#
ô" ˜8Ð&:¼CØ0´3°%¼Ð=Ø#¤k ]Ð3Ø1´C°5¼#Ð>Ø $¤{ mÐ4ñ	Bð &ó ð##
ô. ˜8 gØœk˜]Ð+Ø!¤C 5Ð)Ø -´
¨|¼VÐDØ'¬+¨Ð7Ø,¬}¨oÐ>ñ0ð &ó ð/#
ô< ˜8 g¨wØ"+¬k¨]Ð!;Ø%¬ }Ð5Ø%¬ }Ð5ñ9ð &ó ð=#
ð #	
ùós   Ë$Nc                 ó²  — t        |ddt        hf«      xs i }|j                  d«      sy t        | j                  |d   › d�|ddd| j                  | j                  › d�d	d
œ| j
                  ¥t        j                  i |j                  d«      |j                  d«      dœ«      j                  «       d¬«      d«      }ddt        j                  |«      dœgiS )Nr;  Ú	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•   rW  F)r=   r>   Úfatal)r>   Úthreads.Úcomments.r[  rñ   )rz   r>   )	r   rA  r.   rð   r[   r^   rñ   rò   rö   )r/   r   rÿ   Úcomments_infoÚdanmakus        r0   Ú_get_subtitleszNiconicoIE._get_subtitles  sý   € Ü$ X°	¸;ÌÈÐ/OÓPÒVÐTVˆØ× Ñ  Ô*Øä˜t×2Ñ2Ø˜XÑ&Ð' {Ð3°XØ"Ð$AØ :ØŸ.™.Ø"Ÿn™nÐ-¨QÐ/Ø$,ñ	Lð
 —-‘-ðLô —J‘JØ!Ø'×+Ñ+¨HÓ5Ø*×.Ñ.¨{Ó;ñ ó ÷ ‰v‹x˜uð  3ó  
ð 5ó6ˆð  ØÜŸ
™
 7Ó+ñð ð
ð 	
r2   N)rW   rX   rY   ÚIE_NAMEÚIE_DESCÚ
_VALID_URLrD  rH  rB  Ú_TESTSr	  rQ  r^  ra   r2   r0   rc   rc   g   sO
  „ Ø€GØ"€Gàk€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Ð+ØWñ1ð4 <ð
Ø�,ð
à�5ð
ð ÐSð
ð ˜Hð	
ð
 Ð7ð
ð ˜+ð
ð ˜Sð
ð ÐAð
ð ˜ð
ð �{�mð
ð ˜#ð
ð �Lð
ð ÐTð
ð ˜ð
ð ˜:ð
ð  Ð8ð!
ð" ˜;ð#
ð$ ˜#ñ%
ð( # FÐ+ñ-ð{t€Fòl2òhW
ór
r2   rc   c                   ó>   — e Zd ZdZddddœZd„ Zed„ «       Zd„ Zd	„ Z	y
)ÚNiconicoPlaylistBaseIEéd   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_api7  s   € Ü!Ð"EÓFÐFr2   c                 ó^   — t        | ddt        ht        f«      t        | ddt        hf«      dœS )Nr7  )r.  )Úuserr8  rx   )rŽ   r�   )r   rî   rù   )Úitems    r0   Ú_parse_ownerz#NiconicoPlaylistBaseIE._parse_owner:  s:   € ô % T¨GÐ5SÔVYÐUZÔ\_Ð+`ÓaÜ'¨¨w¸¼s¸eÐ.DÓEñ
ð 	
r2   c              #   óæ  ‡K  — |dz  }| j                  |d|› �|| j                  dœ«      }t        |d«      xs g D ]±  }|j                  d«      }|sŒ|j                  d«      xs i Šˆfd„}d||j                  d	«      d
|› �|j                  d«      t	        |j                  d«      «       |d«       |d«      t        |d«      t
        j                  «       dœ
| j                  |«      ¥–— Œ³ y ­w)Nr   zpage )ÚpageÚpageSize)r-  .)r  Nrx   r:  c                 ó8   •— t        ‰j                  | «      «      S ©N)r   r.   )Úxr:  s    €r0   r¾   z4NiconicoPlaylistBaseIE._fetch_page.<locals>.<lambda>N  s   ø€ ¤+¨e¯i©i¸«lÓ";€ r2   rC   r|   úhttps://www.nicovideo.jp/watch/ÚshortDescriptionr†   r=  r;  )rŠ   )ÚnHdUrlr'  Ú
listingUrlrC   )
Ú_typerx   r|   rC   rƒ   r†   r�   r‚   rŠ   Úie_key)rk  Ú
_PAGE_SIZEr   r.   r   rc   r{  ro  )r/   ri  rq  Úrespr  r   Ú	get_countr:  s          @r0   Ú_fetch_pagez"NiconicoPlaylistBaseIE._fetch_pageA  s   øè ø€ Ø�‰	ˆØ�~‰~˜g¨¨t¨f ~ØØŸ™ñ8
ó ˆô
 " $Ð(GÓHÒNÈBò 	ˆEØ—y‘y “ˆHÙàØ—I‘I˜gÓ&Ò,¨"ˆEÛ;ˆIàØØŸ™ 7Ó+Ø8¸¸
ÐCØ$Ÿy™yÐ);Ó<Ü'¨¯	©	°*Ó(=Ó>Ù'¨Ó/Ù!*¨9Ó!5Ü)¨%Ð1kÓlÜ$×+Ñ+Ó-ñð ×#Ñ# EÓ*ðó ñ	ùs   ƒC.C1c                 ój   — t        t        j                  | j                  |«      | j                  «      S rt  )r	   Ú	functoolsÚpartialr  r|  )r/   ri  s     r0   Ú_entrieszNiconicoPlaylistBaseIE._entries]  s&   € Ü ¤×!2Ñ!2°4×3CÑ3CÀWÓ!MÈtÏÉÓ_Ð_r2   N)
rW   rX   rY   r|  Ú_API_HEADERSrk  Ústaticmethodro  r  rƒ  ra   r2   r0   rd  rd  .  s>   „ Ø€Jð Ø!Ø&ñ€LòGð ñ
ó ð
òó8`r2   rd  c                   óJ   — 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y)Ú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                 óZ   — | j                  d|› �|d|› �|| j                  ¬«      d   d   S )Nz&https://nvapi.nicovideo.jp/v2/mylists/úDownloading ©rÐ   r=   r>   Úmylist©rð   r„  rh  s       r0   rk  zNiconicoPlaylistIE._call_apiw  sO   € Ø×"Ñ"Ø4°W°IÐ>ÀØ˜8˜*Ð%¨UØ×%Ñ%ð #ó 'ð (.ñ/ð 08ñ9ð 	9r2   c                 óò   — | j                  |«      }| j                  |dddi«      } | j                  | j                  |«      ||j	                  d«      |j	                  d«      fi | j                  |«      ¤ŽS )Nró   rr  r   r.  rƒ   ©r>  rk  Úplaylist_resultrƒ  r.   ro  )r/   rC   ri  r’  s       r0   rQ  z NiconicoPlaylistIE._real_extract}  s~   € Ø—.‘. Ó%ˆØ—‘ ¨Ø˜ð2
ó ˆð $ˆt×#Ñ#Ø�M‰M˜'Ó" GØ�J‰J�vÓ §
¡
¨=Ó 9ñXà=A×=NÑ=NÈvÓ=VñXð 	Xr2   N©rW   rX   rY   r_  ra  rb  rk  rQ  ra   r2   r0   r‡  r‡  a  s\   „ Ø!€GØv€Jð 9àØ=ØAØ#Ø#ñ
ð !ñ
ð FØñð ?Øñð€Fò$9óXr2   r‡  c                   óX   — 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y)Ú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   é‡Žé³¥Ú2275360ég   zhttps://nico.ms/series/203559Tr�  c                 óT   — | j                  d|› �|d|› �|| j                  ¬«      d   S )Nz%https://nvapi.nicovideo.jp/v2/series/r�  r‘  r>   r“  rh  s       r0   rk  zNiconicoSeriesIE._call_api¤  sE   € Ø×"Ñ"Ø3°G°9Ð=¸wØ˜8˜*Ð%¨UØ×%Ñ%ð #ó 'ð (.ñ/ð 	/r2   c                 óø   — | j                  |«      }| j                  |dddi«      d   } | j                  | j                  |«      ||j	                  d«      |j	                  d«      fi | j                  |«      ¤ŽS )Nró   rr  r   Údetailr|   rƒ   r•  )r/   rC   ri  Úseriess       r0   rQ  zNiconicoSeriesIE._real_extractª  s‡   € Ø—.‘. Ó%ˆØ—‘ ¨Ø˜ð2
ó àñˆð $ˆt×#Ñ#Ø�M‰M˜'Ó" GØ�J‰J�wÓ §¡¨MÓ!:ñYà>B×>OÑ>OÐPVÓ>WñYð 	Yr2   Nr—  ra   r2   r0   r™  r™  ‡  su   „ Ø€GØg€Jð FàØ5ð PØ/Ø%ñ
ð  ñ
ð 8àØUØØ Ø$ñ
ð !ñ
ð /Øñð)€Fò2/óYr2   r™  c            	       ód   — 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y)Ú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                 óf   — |dk(  rdnd}| j                  d|› �|d|› �|| j                  ¬«      d   S )Nzhistory/likeÚlikeszwatch/historyz'https://nvapi.nicovideo.jp/v1/users/me/r�  r‘  r>   r“  )r/   ri  rj  rÐ   rK  s        r0   rk  zNiconicoHistoryIE._call_apiÔ  sS   € Ø! ^Ò3‰w¸ˆØ×"Ñ"Ø5°d°VÐ<¸gØ˜8˜*Ð%¨U¸D×<MÑ<Mð #ó OàOUñWð 	Wr2   c                 ó`  — | j                  |«      }	 | j                  |dddi«      } | j                  | j                  |«      |fi | j                  |«      ¤ŽS # t        $ rJ}t        |j                  t
        «      r*|j                  j                  dk(  r| j                  d«       ‚ d }~ww xY w)Nró   rr  r   i‘  z,You have to be logged in to get your history)r>  rk  r   Ú
isinstanceÚcauser   r  rF  r–  rƒ  ro  )r/   rC   ri  r’  Úes        r0   rQ  zNiconicoHistoryIE._real_extractÚ  s�   € Ø—.‘. Ó%ˆð	Ø—^‘^ G¨V°jÀ!°_ÓEˆFð
 $ˆt×#Ñ# D§M¡M°'Ó$:¸GÑaÀt×GXÑGXÐY_ÓG`ÑaÐaøô	 ò 	Ü˜!Ÿ'™'¤9Ô-°!·'±'·.±.ÀCÒ2GØ×)Ñ)Ð*XÔYØûð	ús   “A Á	B-Á#AB(Â(B-N)	rW   rX   rY   r_  r`  ra  rb  rk  rQ  ra   r2   r0   r¦  r¦  µ  s„   „ Ø €GØA€GØV€Jð 'Ø:Øñð
 *Ø4Øñð
 +Ø9Øñð
 .Ø3Øñð
 Ø9Øñð
 Ø8Øñð)€Fò4Wóbr2   r¦  c                   ó   — e Zd ZdZdd„Zd„ Zy)ÚNicovideoSearchBaseIEÚsearchNc           	   #   ó&  K  — |xs i }d|v r|d   gnt        j                  d«      }|D ]c  }t        |«      |d<   | j                  ||||d|iz  ¬«      }t	        j
                  d|«      }|D ]  }	| j                  d|	› �d|	«      –— Œ |rŒc y  y ­w)Nrq  r   ©rÐ   r§  z2(?<=data-video-id=)["\']?(?P<videoid>.*?)(?=["\'])rv  ÚNiconico)rô   r:  rî   rL   ÚreÚfindallÚ
url_result)
r/   rC   Úitem_idrÐ   r§  ÚpagesÚpage_numrQ   Úresultsrn  s
             r0   rƒ  zNicovideoSearchBaseIE._entriesè  s²   è ø€ Ø’˜ˆØ#)¨U¡?��v‘‘¼	¿¹ÈÓ8JˆØò 	ˆHÜ ›MˆE�&‰MØ×,Ñ,¨S°'ÀÈTÐU[Ð]eÐTfÑMfÐ,ÓgˆGÜ—j‘jÐ!VÐX_Ó`ˆGØò b�Ø—o‘oÐ(GÈÀvÐ&NÐPZÐ\`ÓaÓaðbâÙñ	ùs   ‚B
BÂBc                 ód   — | j                  | 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ô  s;   € Ø�}‰}Ø×$Ñ$Ð':¸4×;LÑ;LÐ:MÈQÈuÈgÐ%VÓWÐY^ó`ð 	`r2   )NzDownloading page %(page)s)rW   rX   rY   r½  rƒ  r¾  ra   r2   r0   r¯  r¯  å  s   „ Ø€Ló
ó`r2   r¯  c                   ó   — e Zd ZdZdZdZy)ÚNicovideoSearchIEzNico video searchznicovideo:searchÚ
nicosearchN)rW   rX   rY   r`  r_  Ú_SEARCH_KEYra   r2   r0   rÀ  rÀ  ù  s   „ Ø!€GØ €GØ�Kr2   rÀ  c                   ó\   — 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y)Ú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                 ój   — | j                  |«      }| j                  | j                  ||«      ||«      S rt  ©r>  r–  rƒ  ©r/   rC   rÐ   s      r0   rQ  z"NicovideoSearchURLIE._real_extract  ó0   € Ø—‘˜sÓ#ˆØ×#Ñ# D§M¡M°#°uÓ$=¸uÀeÓLÐLr2   N)	rW   rX   rY   rÀ  r_  r`  ra  rb  rQ  ra   r2   r0   rÄ  rÄ  ÿ  s_   „ Ø"×*Ñ*Ð+¨4Ð0€GØ&€GØL€Jà3àØñ
ð  ñð dàØñ
ð ñð€Fó 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   c              #   ó(  K  — |xs | j                   |xs, t        j                  j                  «       j	                  «       }}t        t        | j                  ||||| j                  d|› d|› �¬«      «      «      }|| j                  k(  rI||k7  rD|||z
  dz  z   }| j                  ||||«      E d {  –—†  | j                  ||||«      E d {  –—†  y | j                  |› d|› d|› �«       | j                  ||||d¬«      E d {  –—†  y 7 ŒY7 Œ?7 Œ	­w)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)  s2  è ø€ Ø)Ò=¨T×-=Ñ-=¸xÒ?cÌ2Ï;É;Ï?É?ÓK\×KaÑKaÓKc�Hˆ
ô œD ×!;Ñ!;Ø�˜* h°·±Ø2°:°,¸dÀ8À*ÐMð "<ó "Oó Pó Qˆð ˜T×3Ñ3Ò3¸
ÀhÒ8NØ! h°Ñ&;ÀÑ%AÑBˆHØ—}‘} S¨'°8¸XÓF×FÐFØ—}‘} S¨'°:¸xÓH×HÑHà�N‰N˜g˜YÐ&AÀ*ÀÈTÐRZÐQ[Ð\Ô]Ø×1Ñ1Ø�W˜j¨(Ð9Xð 2ó Z÷ Zñ Zð	 GøØHøðZús6   ‚B0DÂ2DÂ3DÃDÃ7DÄDÄDÄDÄDc              #   ó¢   •K  — t        |«      t        |xs |«      dddœ}|rt        |«      |d<   t        ‰| �	  ||||¬«      E d {  –—†  y 7 Œ­w)Nrè   Úd)ÚstartÚendÚsortÚorderrq  r²  )rî   Úsuperrƒ  )	r/   rC   r·  rÞ  rß  r¹  r§  rÐ   Ú	__class__s	           €r0   rÚ  z+NicovideoSearchDateIE._get_entries_for_date9  sV   øè ø€ ä˜“_Ü�xÒ- :Ó.ØØñ	
ˆñ Ü ›MˆE�&‰Mä‘7Ñ# C¨¸ÀDÐ#ÓI×IÒIús   ƒAAÁAÁA)NN)NNN)rW   rX   rY   r`  rÀ  r_  rÂ  rb  rÕ  rØ  rÔ  rÜ  rÛ  rƒ  rÚ  Ú__classcell__)ré  s   @r0   rÏ  rÏ    sr   ø„ Ø/€GØ"×*Ñ*Ð+¨5Ð1€GØ"€Kà$àØñ
ð "ñð €Fð �"—'‘'˜$  1Ó%€KØÐØ€JóZ÷ 
Jñ 
Jr2   rÏ  c                   ó6   — e Zd ZdZdZdZdZddddœdd	œgZd
„ Zy)Ú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                 ój   — | j                  |«      }| j                  | j                  ||«      ||«      S rt  rË  rÌ  s      r0   rQ  zNicovideoTagURLIE._real_extractT  rÍ  r2   N)	rW   rX   rY   r_  r`  r½  ra  rb  rQ  ra   r2   r0   rì  rì  F  s;   „ Ø€GØ'€GØ€LØI€JàLà2Ø5ñ
ð !ñð €Fó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	y)ÚNiconicoUserIEzHhttps?://(?:www\.)?nicovideo\.jp/user/(?P<id>\d+)(?:/video)?/?(?:$|[#?])z$https://www.nicovideo.jp/user/419948rx   Ú419948ée   r‹  zehttps://nvapi.nicovideo.jp/v2/users/%s/videos?sortKey=registeredAt&sortOrder=desc&pageSize=%s&page=%sre  r$   r%   r&   c              #   ól  K  — d}dx}}||k  r¥| j                  | j                  || j                  |dz   fz  || j                  d|rd|› �ndz  ¬«      }|st	        |d   j                  d«      «      }|d   d	   D ])  }|dz  }| j                  d
|d   d   › �t        ¬«      –— Œ+ |dz  }||k  rŒ¤y y ­w)Nr   r   zDownloading JSON metadata%sz page rž  )r=   r§  r>   Ú
totalCountr-  rv  Ú	essentialrx   )Úie)rð   Ú_API_URLr|  r„  r   r.   r¶  rc   )r/   ri  Útotal_countr:  r¹  Újson_parsedÚentrys          r0   rƒ  zNiconicoUserIE._entriesj  sõ   è ø€ ØˆØÐˆ�Ø�kÒ!Ø×-Ñ-Ø—‘ ¨$¯/©/¸8Àa¹<Ð HÑHÈ'Ø×)Ñ)Ø2ÉX¸¸x¸jÑ6IÐ[]Ñ^ð .ó `ˆKñ Ü)¨+°fÑ*=×*AÑ*AÀ,Ó*OÓP�Ø$ VÑ,¨WÑ5ò a�Ø˜‘
�Ø—o‘oØ5°e¸KÑ6HÈÑ6NÐ5OÐPÔU_ð &ó aó aðað ˜‰MˆHð �kÕ!ùs   ‚B/B4Â2B4c                 óf   — | j                  |«      }| j                  | j                  |«      |«      S rt  rË  )r/   rC   ri  s      r0   rQ  zNiconicoUserIE._real_extractz  s,   € Ø—.‘. Ó%ˆØ×#Ñ# D§M¡M°'Ó$:¸GÓDÐDr2   N)
rW   rX   rY   ra  Ú_TESTrö  r|  r„  rƒ  rQ  ra   r2   r0   rï  rï  Y  sG   „ Ø\€Jà5à�(ð
ð !ñ€Eð w€HØ€Jð Ø!ñ€Lò
ó 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	y) Ú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                 ó¶
  — | j                  |«      }| j                  ||d¬«      \  }}t        |t        d¬«      ht        hf«      x}rt        |d¬«      ‚d|j                  v rdnd }|rš| j                  s| j                  d	«       | j                  d
d d«      }t        |t        dd¬«      ht        hdt        j                  hdt        hf«      r&| j                  ddd«       | j                  ||«      }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«      }
| j'                  |
|dd d!i¬"«      }| j)                  d#«       |j+                  t        j,                  d$dd%d&œd'd$d(d)d*d+œd,œd-d.œ«      «       	 |j/                  «       }|sŒt        j                  |«      }t1        |t2        «      sŒ:|j5                  d/«      d0k(  r|d1   d2   }|d1   d3   }|d1   d4   }n¨|j5                  d/«      d5k(  r| j)                  |«       t        d6«      ‚|j5                  d/«      d7k(  r2| j)                  |«       t        |d8d9t        hf|¬«      }t        |«      ‚| j7                  d:d$«      r| j)                  d;t9        |d<«      › �«       �Œt        |d=«      xs | j;                  d>|d?d$¬@«      }t        |dAdBt2        hf«      xs i }g }|j=                  «       D ]Í  \  }}t1        |t2        «      s"|j?                  ||dCœtA        |d¬D«      ¥«       Œ8|j=                  «       D ]ƒ  \  }}tA        |d¬D«      xs tA        |d¬D«      }|j5                  dE«      |j5                  dF«      }}|j?                  |› dG|› dH|› �|t        tC        |«      dIdJtE        dK¬L«      hf«      dMœ|¥«       Œ… ŒÏ |D ]@  }| j                  |dN   |dO   |dP   tG        |j5                  dQ«      «      |dR   |dS   ¬T«       ŒB dU„ |dVd  D «       }dWdXdYœ}| jI                  ||dZd¬[«      }|D ]‡  } d\| d]<   | j5                  d^«      d_k(  rtK        || d`   «      | d`<   Œ/| j5                  da«      d_k(  sŒDtM        | db   jO                  «       «      }!| jQ                  |!dc|j5                  |!| d`   «      ddœ«       Œ‰ |||t        |dAd0detR        hf«      xs 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Ú9)ÚdefaultÚreliveÚwebSocketUrlzwebsocket URLÚfrontend_idzConnecting to WebSocket serverrV  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: re  )Úprogramr|   )zog:titleztwitter:titlez
live title)rY  r+  rŠ   )rx   rC   r2  ÚwidthÚheightr¼   ru  Úimager   r0  )Údefault_ext)rx   rC   rz   Údomainr.  ÚvalueÚexpiresrK  Úsecure)Úexpire_timerK  r3  c              3   óD   K  — | ]  }|j                  d «      rŒ|–— Œ y­w)Úaudio_Nr×   )rË   Úqs     r0   rÌ   z/NiconicoLiveIE._real_extract.<locals>.<genexpr>  s   è ø€ ÒI˜°!·,±,¸xÕ2H”!ÑIùs   ‚ ™ 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+  rD  ÚcommentCount)r+  Úsupplierr.  )ÚsocialGroupr.  )rH  rx   )rH  ÚsocialGroupPageUrl)r�   r‚   rŽ   r   r€   r  )r+  rƒ   )r+  ÚopenTime)rƒ   r‹   r   r6  r  )+r>  rN   r   r   r
   r   rC   r1   rF  rL   r   rñ   Úloadsr,   Ú_set_cookier   r   r   r   rJ   Úwrite_debugÚsendrò   Úrecvr«  rA  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  rB  rA  rO  r>   r  r   r%  r6   r|   Ú
raw_thumbsr6  r.  r1  ÚkÚimg_urlÚresr,  r-  ÚcookieÚq_iterÚa_mapr  rå   rß   s"                                     r0   rQ  zNiconicoLiveIE._real_extract¬  s  € Ø—>‘> #Ó&ˆØ×5Ñ5°c¸8ÐUXÐ5ÓY‰ˆ�Ü" 7¬l¸yÔ.IÐ-JÌZÈLÐ,YÓZÐZˆ7ÐZÜ  °4Ô8Ð8à$¨¯©Ñ0‘B°dˆ	ÙØ×$Ò$Ø×)Ñ)Ð*^Ô_à×'Ñ'Ð(EÀtÐMhÓiˆBÜ˜BÜÐ!;À$ÔGÐHÔK]ÐJ^Ø"¤T§Z¡Z LÐ2JÌTÈFð!ô ð × Ñ  °*¸cÔBØ×0Ñ0°°hÓ?‘ä$Ð%PÐ[_Ô`Ð`ä$ WÜ˜h¨?ÀÔFÐGÜÐ  ,´·±°ð/>ó ?ˆô # =°6¸<Ì+ÈÐ2WÐadÔeˆä˜mØ�H˜n¬{¨m¼gÀoÓ>VÐ=Wð.Yó Zˆä! &¨=¸+Ð*FÓGˆØ×"Ñ"Ø�HÐ>ØÐ:Ð;ð #ó =ˆð 	×ÑÐ5Ô6Ø
�‰”—
‘
à"à#'Ø +ñð
 *9Ø!&Ø%Ø %Ø$ññð $ñ
ó ô 	ð$ Ø—7‘7“9ˆDÙØÜ—:‘:˜dÓ#ˆDÜ˜d¤DÔ)ØØ�x‰x˜Ó 8Ò+Ø ™<¨Ñ.�Ø  ™LÐ)=Ñ>�	Ø˜v™, yÑ1�ØØ—‘˜&Ó! \Ò1Ø× Ñ  Ô&Ü$Ð%KÓLÐLØ—‘˜&Ó! WÒ,Ø× Ñ  Ô&Ü& t¨f°f¼{¸mÐ-LÐVZÔ[�Ü$ WÓ-Ð-Ø—‘ 	¨5Ô1Ø× Ñ Ð#4´_ÀTÈ3Ó5OÐ4PÐ!QÔRñ) ô, ˜]Ð,@ÓAò OÀT×E[ÑE[Ø)¨7°LÈð F\ó FOˆô " -°)¸[Ì4È&Ð1QÓRÒXÐVXˆ
Øˆ
Ø%×+Ñ+Ó-ò 	‰KˆD�%Ü˜e¤TÔ*Ø×!Ñ!ØØ ñ#ô ' u°dÔ;ð#ô ð
 à#Ÿk™k›mò 	‘
��7Ü& q°$Ô7ÒbÔ;KÈGÐ]aÔ;b�Ø #§¡¨Ó 0°#·'±'¸(Ó2C�v�à×!Ñ!Ø!˜F ! E 7¨!¨F¨8Ð4Ø"Ü'¬°Ó(9¸GÀQÌÐchÔIiÐHjÐ;kÓlñ#ð ð	#õ ñ		ð	ð( ò 	tˆFØ×ÑØ�xÑ  &¨¡.°&¸±/Ü-¨f¯j©j¸Ó.CÓDÈ6ÐRXÉ>ÐbhÐiqÑbrð õ tð	tñ
 J˜Y q r˜]ÔIˆØ  |Ñ4ˆà×,Ñ,¨X°xÀUÐQUÐ,ÓVˆØò 
	ˆCØ-ˆC�
‰OØ�w‰w�xÓ  FÒ*Ü#'¨°°KÑ0@Ó#A��KÒ Ø—‘˜Ó" fÓ,Ü# C¨¡J×$4Ñ$4Ó$6Ó7�Ø—
‘
ØØ)Ø!&§¡¨3°°KÑ0@Ó!Añõ ð
	ð ØØ"ä+¨M¸IÀxÐQ]Ô`cÐ_dÐ;eÓfÒrÐjrØØ ñ#ñ	
ô ˜=ØEØ!JØ;Ø2Ø3ØDñ+ó ð
ô" &¤l°=ÐB\Ó&]Ó^Ü$¤\°-ÐAXÓ%YÓZØØ$Øò+
ð 	
r2   N)
rW   rX   rY   r_  r`  ra  rî   rB  rb  rQ  ra   r2   r0   rý  rý    s¦   „ Ø€GØ%€GØX€Jà<àØØØ@Ø%ØFØ ØAØ$Ø*Ø#Ø%Ø2Øñ
ð  # DÐ)ñ%ð( =àØØØØ8Ø%ØFØ ØAØ$Ø*Ø#Ø%Ø2Øñ
ð" # DÐ)ñ'ð''€FóR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   rd  r‡  r™  r¦  r¯  rÀ  rÄ  rÏ  rì  rï  rý  ra   r2   r0   ú<module>rb     s  ðÛ Û Û Û Û 	ç 6Ý -÷÷ ÷ ÷ ÷ õ ÷.ñ ô=J�]ô =Jô@D
�ô D
ôN0`˜]ô 0`ôf#XÐ/ô #XôL+YÐ-ô +Yô\-bÐ.ô -bô``˜Mô `ô(Ð-Ð/Bô ôMÐ0ô Mô2+JÐ1Ð3Fô +Jô\MÐ-ô Mô&#E�]ô #EôL{
�^õ {
r2   