Ë
    š„j¼0  ã                   óÖ   — d dl Z d dlZddlmZ ddlmZmZmZm	Z	m
Z
  G d„ de«      Z G d„ d	e«      Z 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y)é    Né   )ÚInfoExtractoré   )ÚExtractorErrorÚInAdvancePagedListÚ
clean_htmlÚget_element_by_idÚremove_startc            
       ób   — e Zd Zddddœdddddd	œd
ddddd	œdddddd	œddddœdddddœgZdd„Zy)Ú
KuwoBaseIEÚapeéd   ©ÚformatÚextÚ
preferenceúmp3-320Úmp3Ú320kmp3i@  éP   )r   r   ÚbrÚabrr   zmp3-192Ú192kmp3éÀ   éF   zmp3-128Ú128kmp3é€   é<   Úwmaé   Úaacé0   é
   )r   r   r   r   c           
      ó~  — g }| j                   D ]«  }|d   |j                  dd«      d|› �dddœ}| j                  d|d	j                  |d
   «      || j	                  «       ¬«      }|dk(  r|st        dd¬«      ‚|j                  d«      sŒ}|j                  ||d
   |d
   |d   |j                  d«      dœ«       Œ­ |S )Nr   r   Ú ÚMUSIC_Úconvert_urlÚurl)r   r   ÚridÚtypeÚresponsez http://antiserver.kuwo.cn/anti.szDownload {} url infor   )ÚnoteÚqueryÚheadersÚIPDenyz#This song is blocked in this regionT©Úexpected)zhttp://zhttps://r   r   )r(   Ú	format_idr   Úqualityr   )Ú_FORMATSÚgetÚ_download_webpager   Úgeo_verification_headersr   Ú
startswithÚappend)ÚselfÚsong_idÚtolerate_ip_denyÚformatsÚfile_formatr-   Úsong_urls          úL/var/www/html/GAP/venv/lib/python3.12/site-packages/yt_dlp/extractor/kuwo.pyÚ_get_formatszKuwoBaseIE._get_formats   sï   € ØˆØŸ=™=ò 	ˆKà% eÑ,Ø!—o‘o d¨BÓ/Ø ˜yÐ)Ø%Ø!ñˆEð ×-Ñ-Ø2ØÐ4×;Ñ;¸KÈÑ<QÓRØ T×%BÑ%BÓ%Dð .ó ˆHð ˜8Ò#Ñ,<Ü$Ð%JÐUYÔZÐZà×"Ñ"Ð#:Õ;Ø—‘Ø#Ø!,¨XÑ!6Ø)¨(Ñ3Ø*¨<Ñ8Ø&Ÿ?™?¨5Ó1ñ õ ð'	ð6 ˆó    N)F)Ú__name__Ú
__module__Ú__qualname__r4   rA   © rB   r@   r   r      s[   „ à °cÑ:Ø U°)ÀCÐWYÑZØ U°)ÀCÐWYÑZØ U°)ÀCÐWYÑZØ °bÑ9Ø ¨rÀÑDð€HôrB   r   c            	       ób   — e Zd 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idœdddœgZd„ Zy)ÚKuwoIEFz	kuwo:songu   é…·æˆ‘éŸ³ä¹�z.https?://(?:www\.)?kuwo\.cn/yinyue/(?P<id>\d+)z!http://www.kuwo.cn/yinyue/635632/Ú635632r   u   çˆ±æˆ‘åˆ«èµ°u	   å¼ éœ‡å²³Ú20080122z$md5:ed13f58e3c3bf3f7fd9fbc4e5a7aa75c)Úidr   ÚtitleÚcreatorÚupload_dateÚdescriptionú6this song has been offline because of copyright issues)r(   Ú	info_dictÚskipz"http://www.kuwo.cn/yinyue/6446136/Ú6446136r   u   å¿ƒz$md5:5d0e947b242c35dc0eb1d2fce9fbf02cÚIUÚ20150518)rK   r   rL   rO   rM   rN   r   r   ©r(   rQ   Úparamsz3http://www.kuwo.cn/yinyue/3197154?catalog=yueku2016T)r(   Úonly_matchingc                 ó  — | j                  |«      }| j                  ||dd¬«      \  }}||j                  vsd|v rt        dd¬«      ‚| j	                  d|d	«      }t        | j	                  d
|dd¬«      d«      }t        t        d|«      «      }|dk(  rd }| j                  |«      }| j	                  d|dd¬«      }	d }
|	�B| j                  d|	› d�|dd¬«      }| j	                  d|dd¬«      }
|
r|
j                  dd«      }
||||
||dœS )NzDownload song detail infozUnable to get song detail info©r,   ÚerrnoteuK   å¯¹ä¸�èµ·ï¼Œè¯¥æ­Œæ›²ç”±äºŽç‰ˆæ�ƒé—®é¢˜å·²è¢«ä¸‹çº¿ï¼Œå°†è¿”å›žç½‘ç«™é¦–é¡µrP   Tr0   z<p[^>]+id="lrcName">([^<]+)</p>z	song namez@<a[^>]+href="http://www\.kuwo\.cn/artist/content\?name=([^"]+)">úsinger nameF)Úfatalu   æ­Œæ‰‹Ú
lrcContentõ   æš‚æ— z/<a[^>]+href="http://www\.kuwo\.cn/album/(\d+)/"zalbum idzhttp://www.kuwo.cn/album/ú/zDownload album detail infozUnable to get album detail infou"   å�‘è¡Œæ—¶é—´ï¼š(\d{4}-\d{2}-\d{2})zpublish timeú-r%   )rK   rL   rM   rN   rO   r=   )Ú	_match_idÚ_download_webpage_handler(   r   Ú_html_search_regexr
   r   r	   rA   r6   Úreplace)r:   r(   r;   ÚwebpageÚurlhÚ	song_nameÚsinger_nameÚlrc_contentr=   Úalbum_idÚpublish_timeÚalbum_info_pages               r@   Ú_real_extractzKuwoIE._real_extractZ   sw  € Ø—.‘. Ó%ˆØ×5Ñ5Ø�Ð:Ø4ð 6ó 6‰ˆ�ð ˜$Ÿ(™(Ñ"Ð&sÐw~Ñ&~Ü Ð!YÐdhÔiÐià×+Ñ+Ø.°¸óFˆ	ä" 4×#:Ñ#:ØOØ�]¨%ð $;ó $1à2:ó<ˆô !Ô!2°<ÀÓ!IÓJˆØ˜(Ò"ØˆKà×#Ñ# GÓ,ˆà×*Ñ*Ø>Ø�Z uð +ó .ˆð ˆØÐØ"×4Ñ4Ø+¨H¨:°QÐ7¸Ø1Ø9ð 5ó ;ˆOð
  ×2Ñ2Ø5°Ø eð 3ó -ˆLñ Ø+×3Ñ3°C¸Ó<�ð ØØ"Ø'Ø&Øñ
ð 	
rB   N)	rC   rD   rE   Ú_WORKINGÚIE_NAMEÚIE_DESCÚ
_VALID_URLÚ_TESTSrn   rF   rB   r@   rH   rH   8   s‚   „ Ø€HØ€GØ€GØB€Jà2àØØ#Ø"Ø%ØAñ
ð Iñð 4àØØØAØØ%ñ
ð �ið
ñð EØñð1€Fó:+
rB   rH   c                   ó6   — e Zd ZdZdZdZdZddddd	œd
dœZd„ Zy)ÚKuwoAlbumIEFz
kuwo:albumu   é…·æˆ‘éŸ³ä¹� - ä¸“è¾‘z/https?://(?:www\.)?kuwo\.cn/album/(?P<id>\d+?)/z http://www.kuwo.cn/album/502294/Ú502294u   MadeÂ SeriesÂ ã€ŠMã€‹z$md5:d463f0d8a0ff3c3ea3d6ed7452a9483f©rK   rL   rO   r   )r(   rQ   Úplaylist_countc                 óP  — | j                  |«      }| j                  ||dd¬«      }| j                  d|d«      }t        t	        t        d|«      «      |› d�«      }t        j                  d|«      D �cg c]  }| j                  |d	«      ‘Œ }}| j                  ||||«      S c c}w )
NzDownload album infozUnable to get album inforZ   z1<div[^>]+class="comm"[^<]+<h1[^>]+title="([^"]+)"z
album nameÚintroõ	   ç®€ä»‹ï¼šzF<p[^>]+class="listen"><a[^>]+href="(http://www\.kuwo\.cn/yinyue/\d+/)"ÚKuwo)
rb   r6   rd   r
   r   r	   ÚreÚfindallÚ
url_resultÚplaylist_result)r:   r(   rk   rf   Ú
album_nameÚalbum_intror?   Úentriess           r@   rn   zKuwoAlbumIE._real_extract—   sÅ   € Ø—>‘> #Ó&ˆà×(Ñ(Ø�Ð 5Ø.ð )ó 0ˆð ×,Ñ,Ø@À'Øóˆ
ô #ÜÔ(¨°'Ó:Ó;Øˆl˜)Ð$ó&ˆô
 ?A¿j¹jØYØó?ö
Ø2:ˆD�O‰O˜H fÕ-ð
ˆð 
ð
 ×#Ñ# G¨X°zÀ;ÓOÐOùò
s   Á4B#N©	rC   rD   rE   ro   rp   rq   rr   Ú_TESTrn   rF   rB   r@   ru   ru   ˆ   s9   „ Ø€HØ€GØ%€GØC€Jà1àØ0ØAñ
ð
 ñ€EóPrB   ru   c                   ó2   — e Zd ZdZdZdZdZdddidd	œZd
„ Zy)ÚKuwoChartIEFz
kuwo:chartu   é…·æˆ‘éŸ³ä¹� - æŽ’è¡Œæ¦œz5https?://yinyue\.kuwo\.cn/billboard_(?P<id>[^.]+).htmu9   http://yinyue.kuwo.cn/billboard_é¦™æ¸¯ä¸­æ–‡é¾™è™Žæ¦œ.htmrK   u   é¦™æ¸¯ä¸­æ–‡é¾™è™Žæ¦œé   ©r(   rQ   Úplaylist_mincountc                 óâ   — | j                  |«      }| j                  ||dd¬«      }t        j                  d|«      D �cg c]  }| j	                  |d«      ‘Œ }}| j                  ||«      S c c}w )NzDownload chart infozUnable to get chart inforZ   z.<a[^>]+href="(http://www\.kuwo\.cn/yinyue/\d+)r|   )rb   r6   r}   r~   r   r€   )r:   r(   Úchart_idrf   r?   rƒ   s         r@   rn   zKuwoChartIE._real_extractº   s�   € Ø—>‘> #Ó&ˆØ×(Ñ(Ø�Ð 5Ø.ð )ó 0ˆô
 ?A¿j¹jØAÀ7ó?Lö
Ø2:ˆD�O‰O˜H fÕ-ð
ˆð 
ð ×#Ñ# G¨XÓ6Ð6ùò	
s   ¿A,Nr„   rF   rB   r@   r‡   r‡   ­   s5   „ Ø€HØ€GØ(€GØI€JàJàÐ)ð
ð ñ€Eó
7rB   r‡   c                   óL   — e Zd ZdZdZdZdZddddœd	d
œddddœdddœgZdZd„ Z	y)ÚKuwoSingerIEFzkuwo:singeru   é…·æˆ‘éŸ³ä¹� - æ­Œæ‰‹z2https?://(?:www\.)?kuwo\.cn/mingxing/(?P<id>[^/]+)z'http://www.kuwo.cn/mingxing/bruno+mars/z
bruno+marsu   BrunoÂ Mars)rK   rL   iI  r‰   z)http://www.kuwo.cn/mingxing/Ali/music.htmÚAlié_   zRegularly stalls travis build)r(   rQ   rŠ   rR   é   c                 ó>  ‡ ‡‡‡— ‰ j                  ‰«      Š‰ j                  ‰‰dd¬«      }‰ j                  d|d«      }‰ j                  d|d«      Št        ‰ j                  d|d	«      «      }ˆˆ ˆˆfd
„}t	        ||‰ j
                  «      }‰ j                  |‰|«      S )NzDownload singer infozUnable to get singer inforZ   z<h1>([^<]+)</h1>r\   zdata-artistid="(\d+)"z	artist idzdata-page="(\d+)"z
page countc           
      ó  •— ‰j                  d‰d| dz   › �d| dz   › �‰| ‰j                  dœ¬«      }t        j                  d|«      D �cg c]2  }‰j	                  t
        j                  j                  ‰|«      d«      ‘Œ4 c}S c c}w )	Nz+http://www.kuwo.cn/artist/contentMusicsAjaxzDownload song list page #r   zUnable to get song list page #)ÚartistIdÚpnÚrn)r,   r[   r-   z0<div[^>]+class="name"><a[^>]+href="(/yinyue/\d+)r|   )r6   Ú	PAGE_SIZEr}   r~   r   ÚurllibÚparseÚurljoin)Úpage_numrf   r?   Ú	artist_idr:   Ú	singer_idr(   s      €€€€r@   Ú	page_funcz-KuwoSingerIE._real_extract.<locals>.page_funcî   s–   ø€ Ø×,Ñ,Ø=ØÐ";¸HÀq¹L¸>Ð JØ8¸ÀA¹¸ÐGØ#,°HÀDÇNÁNÑSð	 -ó UˆGô !#§
¡
ØGØó!öàð —‘¤§¡× 4Ñ 4°S¸(Ó CÀVÕLòð ùò s   Á
7B)rb   r6   rd   Úintr   r—   r€   )	r:   r(   rf   ri   Ú
page_countrž   rƒ   rœ   r�   s	   ``     @@r@   rn   zKuwoSingerIE._real_extractß   s±   û€ Ø—N‘N 3Ó'ˆ	Ø×(Ñ(Ø�Ð!7Ø/ð )ó 1ˆð ×-Ñ-Ø ¨-ó9ˆð ×+Ñ+Ø$ g¨{ó<ˆ	ô ˜×0Ñ0Ø  '¨<ó9ó :ˆ
÷	ô % Y°
¸D¿N¹NÓKˆà×#Ñ# G¨Y¸ÓDÐDrB   N)
rC   rD   rE   ro   rp   rq   rr   rs   r—   rn   rF   rB   r@   rŽ   rŽ   Ç   s_   „ Ø€HØ€GØ%€GØF€Jà8àØ$ñ
ð !ñð ;àØñ
ð  Ø/ñð€Fð" €IóErB   rŽ   c                   ó6   — e Zd ZdZdZdZdZddddd	œd
dœZd„ Zy)ÚKuwoCategoryIEFzkuwo:categoryu   é…·æˆ‘éŸ³ä¹� - åˆ†ç±»z3https?://yinyue\.kuwo\.cn/yy/cinfo_(?P<id>\d+?).htmz(http://yinyue.kuwo.cn/yy/cinfo_86375.htmÚ86375u   å…«å��å¹´ä»£ç²¾é€‰u*   è¿™äº›éƒ½æ˜¯å±žäºŽå…«å��å¹´ä»£çš„å›žå¿†ï¼�rw   é   r‰   c           	      ó°  — | j                  |«      }| j                  ||dd¬«      }| j                  d|d«      }t        t	        d|«      j                  «       |› d�«      }|dk(  rd }| j                  | j                  d	|d
«      |«      }|d   D �cg c]&  }| j                  dj                  |d   «      d«      ‘Œ( }}| j                  ||||«      S c c}w )NzDownload category infozUnable to get category inforZ   z&<h1[^>]+title="([^<>]+?)">[^<>]+?</h1>zcategory namerz   r{   r_   zvar\s+jsonm\s*=\s*([^;]+);zcategory songsÚ	musiclistzhttp://www.kuwo.cn/yinyue/{}/Úmusicridr|   )
rb   r6   rd   r
   r	   ÚstripÚ_parse_jsonr   r   r€   )	r:   r(   Úcategory_idrf   Úcategory_nameÚcategory_descÚjsonmÚsongrƒ   s	            r@   rn   zKuwoCategoryIE._real_extract  s  € Ø—n‘n SÓ)ˆØ×(Ñ(Ø�Ð#;Ø1ð )ó 3ˆð ×/Ñ/Ø5°wÀóQˆô %Ü˜g wÓ/×5Ñ5Ó7Øˆo˜YÐ'ó)ˆð ˜HÒ$Ø ˆMà× Ñ  ×!8Ñ!8Ø)¨7Ð4Dó"FØGRóTˆð
 ˜kÑ*ö
àð �O‰OÐ;×BÑBÀ4È
ÑCSÓTÐV\Õ]ð
ˆð 
ð ×#Ñ# G¨[¸-ÈÓWÐWùò	
s   Â+CNr„   rF   rB   r@   r¢   r¢     s9   „ Ø€HØ€GØ%€GØG€Jà9àØ)ØGñ
ð
  ñ€EóXrB   r¢   c                   óp   — e Zd ZdZdZdZdZddddd	d
œddidœZg ej                  ¢ddddœ‘ddddœ‘Z	d„ Z
y)ÚKuwoMvIEFzkuwo:mvu   é…·æˆ‘éŸ³ä¹� - MVz,https?://(?:www\.)?kuwo\.cn/mv/(?P<id>\d+?)/zhttp://www.kuwo.cn/mv/6480076/Ú6480076Úmp4z
My HouseMVÚ2PM)rK   r   rL   rM   r   ÚmvrV   Úmkvéú   r   éÈ   c                 óx  — | j                  |«      }| j                  ||d|› �d|› �¬«      }t        j                  d|«      }|r#|j	                  d«      }|j	                  d«      }nt        d«      ‚| j                  |d¬	«      }| j                  d
|› �|d|› d�¬«      }|j                  |ddœ«       ||||dœS )NzDownload mv detail info: zUnable to get mv detail info: rZ   zH<h1[^>]+title="(?P<song>[^"]+)">[^<]+<span[^>]+title="(?P<singer>[^"]+)"r®   Úsingerz#Unable to find song or singer namesT)r<   z)http://www.kuwo.cn/yy/st/mvurl?rid=MUSIC_z	Download z MV URL)r,   r´   )r(   r2   )rK   rL   rM   r=   )rb   r6   r}   ÚsearchÚgroupr   rA   r9   )	r:   r(   r;   rf   Úmobjrh   ri   r=   Úmv_urls	            r@   rn   zKuwoMvIE._real_extractB  sõ   € Ø—.‘. Ó%ˆØ×(Ñ(Ø�Ð!:¸7¸)ÐDØ4°W°IÐ>ð )ó @ˆô �y‰yØWØóˆñ ØŸ
™
 6Ó*ˆIØŸ*™* XÓ.‰Kä Ð!FÓGÐGà×#Ñ# G¸dÐ#ÓCˆà×'Ñ'Ø7¸°yÐAØ˜I g Y¨gÐ6ð (ó 8ˆð 	�‰ØØñ
ô 	ð ØØ"Øñ	
ð 	
rB   N)rC   rD   rE   ro   rp   rq   rr   r…   r   r4   rn   rF   rB   r@   r°   r°   )  sw   „ Ø€HØ€GØ!€GØ@€Jà/àØØ!Øñ	
ð �dð
ñ€Eð<Ø	×	Ñ	ð<à °cÑ:ð<ð  °cÑ:ð<€Hó

rB   r°   )r}   Úurllib.parser˜   Úcommonr   Úutilsr   r   r   r	   r
   r   rH   ru   r‡   rŽ   r¢   r°   rF   rB   r@   ú<module>rÁ      sy   ðÛ 	Û å !÷õ ô'�ô 'ôTM
ˆZô M
ô`"P�-ô "PôJ7�-ô 7ô47E�=ô 7Eôt%X�]ô %XôP7
ˆzõ 7
rB   